湖南人文科技学院毕业设计 附录一:原理图
28
湖南人文科技学院毕业设计 附录二:程序
#include
//定义继电器控制端
sbit DQ=P2^1; //定义18B20数据端口 sbit BEEP=P3^2; //定义蜂鸣器数据端口 sbit LED1=P3^3; sbit LED2=P3^4; sbit key1=P1^5; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; uchar temp=0; uchar flag=0; uchar SetTemp=80;
uchar code tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0x7f};
/************************************ * 延时函数 * ************************************/ void delay(uint xsm) { }
void delay1(uint i)
int i,j;
for(i=xsm;i>0;i--)
for(j=110;j>0;j--);
29
湖南人文科技学院毕业设计
{
while(--i); }
/************************************ * 初始化ds18b20函数 * ************************************/ void Init_DS18B20(void) {
DQ=1; //DQ复位 delay1(8); //稍做延时 DQ=0; //单片机将DQ拉低 delay1(90); //精确延时,大于480us DQ=1; //拉高总线 _nop_();
_nop_(); delay1(100); DQ=1;
}
/************************************ * ds18b20写一个字节函数 * ************************************/ void WriteOneChar(uchar dat) {
uchar i;
for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01;
30
湖南人文科技学院毕业设计 delay1(5); DQ=1; dat>>=1; } }
/************************************ * ds18b20读一个字节函数 * ************************************/ uchar ReadOneChar() {
uchar i,dat=0; DQ=1;
_nop_();
for(i=8;i>0;i--) {
DQ=0; //给脉冲信号 _nop_();
_nop_(); dat>>=1;
DQ=1; //给脉冲信号 _nop_();
_nop_(); if(DQ)
dat|=0x80; delay1(30);
DQ=1;
}
return dat; }
31
湖南人文科技学院毕业设计
/************************************ * 显示当前温度 * ************************************/ void display1(temp) { }
/************************************ * 显示设置温度 * ************************************/ void display2(SetTemp) {
P2=0xf6; shi=SetTemp/10; ge=SetTemp; P2=0xfa; P0=tab[shi]; delay(6); uchar shi,ge; P2=0Xde; P0=tab[ge]; delay(6); shi=temp/10; ge=temp; P2=0Xee; P0=tab[shi]; delay(6); uchar shi,ge;
32