智能温度监测系统

来源:互联网 发布:太阳系3d软件 编辑:程序博客网 时间:2024/06/11 20:11
要求:1、通过硬件电路设计和软件编程驱动的结合方式,实现0℃~99℃范围内的温度智能监测。
              2.可通过LCD实时显示实际温度和预设温度。
              3.当温度超出预设范围时及时报警。

              4. 报警声用电子乐曲或音乐音符实现(选做)。


#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit 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]={0,99};uchar CurrentT = 0;uchar Temp_Value[]= {0x00,0x00};uchar Dispaly_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 ; i < 8 ; 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 ; i < 8 ; 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_T(){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;}//Dispaly_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;if(Signed_Current_Temp >= Alarm_Temp_HL[0])HI_Alarm = 0;else HI_Alarm = 1;if(Signed_Current_Temp <= Alarm_Temp_HL[1])LO_Alarm = 0;else LO_Alarm = 1;Dispaly_Digit[3] = CurrentT / 100;Dispaly_Digit[2] = ( CurrentT % 100 ) / 10;Dispaly_Digit[1] = CurrentT %10;for(i =  0 ; i < 30 ; i++){P0 = 0x39; P2 = 0x7f; delay(t); P2 = 0xff;//cP0 = 0x63 ; P2 = 0xbf; delay(t) ; P2 = 0xff;//。\P0 = DSY_CODE[Dispaly_Digit[1]] ; P2 = 0xdf;//显示个位delay(t);P2 = 0xff;P0 =  DSY_CODE[Dispaly_Digit[2]]; P2 = 0xef;//显示十位delay(t);P2 = 0xff;if(Dispaly_Digit[3] != 0 ){P0 =  DSY_CODE[Dispaly_Digit[3]]; P2 = 0xf7;//显示百位delay(t);P2 = 0xff;}}}void T0_Int() interrupt 1{TH0 = -1000 / 256;TL0 = -1000 % 256;BEEP = !BEEP;if( ++Time0_Count == 400){Time0_Count = 0;if(HI_Alarm)HI_LED = ~HI_LED ;else HI_LED = 1;if(LO_Alarm)LO_LED =  ~LO_LED;else LO_LED = 1;}}void main(void){IE = 0X82;TMOD= 0X01;TH0 = -1000 / 256;TL0 = -1000 % 256;TR0 = 0;HI_LED = 1;LO_LED = 1;Set_Alarm_Temp_Value();Read_Temperature();delay(50000);delay(50000);while(1){Read_Temperature();if(DS18B20_IS_OK){if(HI_Alarm == 1 || LO_Alarm == 1)TR0 = 1;else TR0 = 0;BEEP = 0;DisPlay_T();}else{P0 = P2 = 0x00;}}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 绿箭口香糖吞了怎么办 吞了一个梅子核怎么办 槟榔渣咽下去了怎么办 槟榔不小心吃了怎么办 牙齿掉到肚子里怎么办 牙掉在了肚子里怎么办 牙掉了咽肚子里怎么办 假牙咽到肚子里怎么办 牙咽肚子里了怎么办 假牙吃肚子里了怎么办 陶瓷牙咽肚子里怎么办 做飞机耳朵疼难忍怎么办 肚子痛又拉不出来怎么办 胃胀气打嗝想吐怎么办 胃胀吐酸水恶心怎么办 一岁宝宝胃胀气怎么办 3岁宝宝腹胀呕吐怎么办 胃胀气想吐怎么办快速 胃胀然后吐了怎么办 1岁宝宝胃胀气怎么办 孩子胃胀气还吐怎么办 肚子里进了凉气怎么办 肠胃涨气肚子变大怎么办 感觉肚子胀胀的怎么办 肚子胀撑的难受怎么办 肚子着凉了很疼怎么办 来月经肚子疼怎么办最快的方法 孕妇上大便有血怎么办 做完爱小腹坠痛怎么办 月经不来肚子胀怎么办 月经期间肚子疼的厉害怎么办 大姨吗来了肚子疼该怎么办 孕妇7个月拉肚子怎么办 胃疼肚子也疼怎么办 6个月孕妇肚子疼怎么办 孕妇4个月肚子疼怎么办 孕妇5个月拉肚子怎么办 4个月孕妇拉肚子怎么办 怀孕5个月拉肚子怎么办 肠胃老是胀气很不舒服怎么办 肚子里有气排不出来怎么办