求求基于51单片机的数字温度计设计 单片机AT89C51 测温传...
nclude reg51.H>
#define uint unsigned int
#define uchar unsigned char
#define Alarm_Value 30//温度报警值
sbit rs = P2^0;
sbit lcdcs = P2^2;
sbit buzzer = P3^4; //蜂鸣器报警
sbit OUT = P3^5;//光的检测
sbit DQ = P3^7; //温度传送数据IO口
uchar TempBuffer[8];
uint temp_value;//温度值
light_flag=1;//标志位
uchar value1[]={"TempShow:"};
uchar value2[]={"LightY/N:"};
uchar value3[]={"YES"};
uchar value4[]={"NO "};
/*******************************ds18b20子程序*******/
/***********ds18b20延迟子函数(晶振12MHz )*******/
void delay_18B20(unsigned int i)
{
while(i--);
}
/**********ds18b20初始化函数***********************/
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;
delay_18B20(8);
DQ = 0;
delay_18B20(80);
DQ = 1;
delay_18B20(14);
x=DQ;
delay_18B20(20);
}
/***********ds18b20读一个字节**********************/
unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80; //先读入低字节
delay_18B20(4);
}
return(dat);
}
/*************ds18b20写一个字节********************/
void WriteOneChar(uchar dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
/**************读取ds18......春满人间百花吐艳 福临小院四季常安 欢度春节