单片机的温度检测记录系统原理图和C程序文档格式.docx
《单片机的温度检测记录系统原理图和C程序文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的温度检测记录系统原理图和C程序文档格式.docx(43页珍藏版)》请在冰豆网上搜索。
sbitDQ=P3^4;
//DS18B20数据输入/输出
/*函数原型申明*/
voiddelay15us(void);
//延时15微秒
voiddelay60us(void);
//延时60微秒
voiddealy100ms(void);
//延时100毫秒
voidwritebit0(void);
//写数据0
voidwritebit1(void);
//写数据1
bitreadbit(void);
//读取数据位
voidreset(void);
//DS18B20复位
voidwritebyte(ucharbyte);
//写一个字节
ucharreadbyte(void);
//读一个字节
voidinit_ds18b20(charTH,charTL,ucharRS);
//DS18B20初始化
uchar*gettemp(void);
//获得温度数据
/*函数:
delay100ms()*/
延时100ms的函数*/
voiddelay100ms(void)
{
uchari,j,k;
for(i=0;
i<
8;
i++)
for(j=0;
j<
25;
j++)
for(k=0;
k<
250;
k++);
}
delay15us()*/
延时15us的函数*/
voiddelay15us(void)
uchari;
7;
i++);
delay60us()*/
延时60us的函数*/
voiddelay60us(void)
29;
writebit0()*/
写数据0的函数*/
voidwritebit0(void)
DQ=1;
DQ=0;
delay60us();
writebit1()*/
写数据1的函数*/
voidwritebit1(void)
_nop_();
readbit()*/
读取数据位的函数*/
bitreadbit(void)
{
bitb;
b=DQ;
delay15us();
returnb;
reset()*/
复位DS18B20的函数*/
voidreset(void)
i++)
{
delay60us();
}
while(DQ);
}
writebyte()*/
写一个字节的函数*/
voidwritebyte(ucharbyte)
uchari;
i++)//一个字节8位
if(byte&
0x01)//最低位为1,如此
{
writebit1();
//写数据1
}
else//最低位为0,如此
writebit0();
//写数据0
byte>
>
=1;
//字节右移1位
readbyte()*/
读一个字节的函数*/
ucharreadbyte(void)
uchardat;
bitb;
dat=0;
dat>
//字节左移一位
b=readbit();
//读取数据位
if(b)//
dat|=0x80;
//读取数据为1
}
return(dat);
init_ds18b20()*/
初始化DS18B20的函数*/
voidinit_ds18b20(charTH,charTL,ucharRS)
reset();
//复位总线
writebyte(0xcc);
//忽略ROM匹配操作
writebyte(0x4e);
//设置写模式
writebyte(TH);
//写入想设定的温度报警上限
writebyte(TL);
//写入想设定的温度报警下限
writebyte(RS);
//写配置存放器,
//格式为0R1R01,1111
//R1R0=00分辨率为9位,
//R1R0=11分辨率为12位
delay100ms();
/***********************************