基于51单片机的温度和湿度传感器的软件程序DS1820

2024-12-20 04:48:32
推荐回答(2个)
回答1:

.c
/***********************************************************************
#include"DS18B20.h"
/*************delay*******************/

void delay(unsigned int time)
{
while(time--);
}
/*************delay*******************/

/*************reset********************/
unsigned char DS18B20_RESET()
{
unsigned char x=0;
DQ=1;
DQ=0;
delay(80);
DQ=1;
delay(14);
x=DQ;
while(!DQ);
return x;
}
/*************readbit********************/

unsigned char DS18B20_READBIT()
{
unsigned char bitdata=0;
DQ=1;
delay(4);
DQ=0;
delay(4);
DQ=1;
delay(8);
bitdata=DQ;
delay(64);
return bitdata;
}
/*************readbit********************/

/*************writebit********************/

void DS18B20_WRITEBIT(unsigned char bitdata)
{
DQ=1;
delay(4);
DQ=0;
delay(4);
DQ=bitdata;
delay(80);
DQ=1;
}
/*************writebit********************/

/*************readbyte********************/

unsigned char DS18B20_READBYTE()
{
unsigned char i=0,bytedata=0;
for(i=0;i<8;i++)
{
bytedata |=(DS18B20_READBIT()< }
return bytedata;
}
/*************readbyte********************/

/*************writebyte********************/

void DS18B20_WRITEBYTE(unsigned char bytedata)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
DS18B20_WRITEBIT(bytedata&(1< }
}
/*************writebyte********************/

/*************retresolution********************/

void DS18B20_SETRESOLULION(unsigned char res)
{
while(DS18B20_RESET());
DS18B20_WRITEBYTE(0xbe);
DS18B20_WRITEBYTE(0xff);
DS18B20_WRITEBYTE(0xff);
DS18B20_WRITEBYTE(0x1f|res<<5);
}

/*************retresolution********************/

/*************readtemperature********************/

long DS18B20_READTEMPERATURE()
{
long t=0;
while(DS18B20_RESET());
DS18B20_WRITEBYTE(skiprom);
DS18B20_WRITEBYTE(convert);
while(!DS18B20_READBIT());
while(DS18B20_RESET());
DS18B20_WRITEBYTE(skiprom);
DS18B20_WRITEBYTE(readregister);
t=DS18B20_READBYTE();
t |=((unsigned int )DS18B20_READBYTE())<<8;
return t*626;
}
/*************readtemperature********************/

/***********************************************************/
.h
/***********************************************************/
#include

#define readrom 0x33
#define matchrom 0x55
#define skiprom 0xcc
#define searchrom 0xf0
#define alarmrom 0xec

#define writeregister 0x4e
#define readregister 0xbe
#define copyregister 0x48
#define convert 0x44
#define recalle2 0xb8
#define readpower 0xb4

sbit DQ=P2^7;

void DS18B20_SETRESOLULION(unsigned char res);
long DS18B20_READTEMPERATURE();

回答2:

我有程序啊!