void main(){lcd_ini();ds18_ini(); //ds18B20初使化 ds18_write(0xcc); //跳过序列号 ds18_write(0x44); //启动温度转换 xie1602(4,t_h); xie1602(12,t_l);while(1){ds18_check(); //从DS18B20中读出温度xianshi1();xiugai();panduan();}}void xie1602(uint8 add,uint8 daa){lcd_order(0x80+add);lcd_data(0x30+daa/10);lcd_data(0x30+daa%10);}//判断是否在报警范围内void panduan(){if(tmp<(t_l*1000)||tmp>(t_h*1000)&&t_l>=0){BUZZER = 0;delay(10);}else if(t_l<0&&tmp>(t_h*1000)){BUZZER = 1;}elseBUZZER = 1;}//选择修改的内容void xiugai(){uint8 jj;uint8 i = 0;BUZZER = 1;if(K1==0){while(!K1);while(1){lcd_order(0x0f); //开启光标显示lcd_order(0x80+5);//光标显示位置if(K2 == 0)//判断加按键按下{while(K2 == 0); //等待按键释放t_h++; //温度上限加1xie1602(4,t_h); //将温度上限显示出来}if(K3 == 0) //判断减按键按下{while(K3 == 0);//等待按键释放if(t_h>t_l)//判断 温度上限大于温度下限t_h--;xie1602(4,t_h); //将温度上限显示出来}if(K1 == 0) //后面的注释类似{while(K1 == 0);while(1){lcd_order(0x0f);lcd_order(0x80+13);if(K2 == 0){while(K2 == 0);if(t_l<t_h&&t_l>=0){lcd_order(0x80+11);lcd_data(' ');t_l++;xie1602(12,t_l);}else {t_l++;jj = ~t_l;xie1602(12,jj);}}if(K3 == 0){while(K3 == 0);if(t_l>(-50)){t_l--;if(t_l<0)jj = ~t_l;}if(t_l>=0){lcd_order(0x80+11);lcd_data(' ');xie1602(12,t_l);}if(t_l<0){xie1602(12,jj);lcd_order(0x80+11);lcd_data('-');}}if(K1 == 0){while(K1 == 0);goto loop;}}}}}loop:BUZZER = 1;}/**********************************************函数名:delay行参 :time 延时基数功能 :用while延时************************************************/// 延时函数(1ms单位)void delay(uint16 time){while(time--);}/**********************************************函数名:lcd_ini功能 :LCD1602的初始化***********************