- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
18b20温度测量
#include reg52.h
#include intrins.h
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^6;
sbit BEEP=P3^7;
sbit HI_LED=P1^4;
sbit LO_LED=P1^5;
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0X4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
char Alarm_Temp_HL[2]={70,-20};
uchar CurrentT=0;
uchar Temp_Value[]={0x00,0x00};
uchar Display_Digit[]={0,0,0,0};
bit HI_Alarm=0,LO_Alarm=0;
bit DS18B20_IS_OK=1;
uint Time0_Count=0;
void delay(uint x)
{
while (--x);
}
uchar Init_DS18B20()
{ uchar status;
DQ=1;delay(8);
DQ=0;delay(90);
DQ=1;delay(8);
status=DQ;
delay(100);
DQ=1;
return status;
}
uchar Readonebyte()
{uchar i,dat=0;
DQ=1;_nop_();
for(i=0;i8;i++)
{
DQ=0;dat =1;DQ=1;_nop_();_nop_();
if(DQ) dat|=0x80;delay(30);DQ=1;
}
return dat;
}
void writeonebyte(uchar dat)
{ uchar i;
for(i=0;i8;i++)
{ DQ=0;DQ=dat 0x01;delay(5);DQ=1;dat=1;
}
}
void Read_Temperature()
{
if(Init_DS18B20()==1)
DS18B20_IS_OK=0;
else
{writeonebyte(0xcc);
writeonebyte(0x44);
Init_DS18B20();
writeonebyte(0xcc);
writeonebyte(0xbe);
Temp_Value[0]=Readonebyte();
Temp_Value[1]=Readonebyte();
Alarm_Temp_HL[0]=Readonebyte();
Alarm_Temp_HL[1]=Readonebyte();
DS18B20_IS_OK=1;
}
}
void Set_Alarm_Temp_Value()
{Init_DS18B20();
writeonebyte(0xcc);
writeonebyte(0x4e);
writeonebyte(Alarm_Temp_HL[0]);
writeonebyte(Alarm_Temp_HL[1]);
writeonebyte(0x7f);
Init_DS18B20();
writeonebyte(0xcc);
writeonebyte(0x48);
}
void Display_Temperature()
{
uchar i;
uchar t=150;
uchar ng=0, np=0;
char Signed_Current_Temp;
if ((Temp_Value[1]0xf8)==0xf8)
{ Temp_Value[1]=~Temp_Value[1];
Temp_Value[0]=~Temp_Value[0]+1;
if(Temp_Value[0]==0x00)Temp_Value[1]++;
ng=1; np=0xfd;
}
Display_Digit[0] = df_Table[ Temp_Value[0] 0x0f ];
CurrentT=((Temp_Value[0]0xf0)4)|((Temp_Value[1]0x07)4);
Signed_Current_Temp= ng? -CurrentT:CurrentT;
HI_Alarm=Signed_Current_Temp=Alarm_Temp_HL[0]?1:0;
LO_Alarm=Signed_Current_Temp=Alarm_Temp_HL[1]?1:0;
Display_Digit[3]=CurrentT/100
文档评论(0)