⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +++

📁 可设置温度上下限的温控
💻
📖 第 1 页 / 共 2 页
字号:
 145   5                                }
 146   4                              if(K2==0)
 147   4                                {
 148   5                                      delay(5);
 149   5                                      if(K2==0)
 150   5                                        {      
 151   6                                               th4--;
 152   6                                               while(!K2);
 153   6                                               if(th4==-1)th4=9;
 154   6                                        }
 155   5                                }
 156   4                               write_cmd(0xcc);
 157   4                               write_dat(th4+0x30);
 158   4                         }break;
 159   3                      default:break;
 160   3               }
 161   2         }
 162   1        else flag1=0;        //m一定不能掉,否则在调节温度的时候会影响其他菜单
 163   1        th=th1*10+th2;   //获取设置温度的高位
 164   1        tl=th3*10+th4;   //获取设置温度的低位
 165   1      }
 166          
 167          void alarm_speaker()               //报警系统与当前温度进行比较并处理
 168          {       
 169   1              if(temp>(th*10)||temp<(tl*10))
 170   1                {
 171   2                      speaker=~speaker;
 172   2                      L1=0;
 173   2                      adder++;
 174   2                      tab=temp/10;
 175   2                      write_add(adder,tab);
 176   2                }     
 177   1              else 
 178   1                {
 179   2                      speaker=1;
C51 COMPILER V8.02   MAIN                                                                  08/04/2010 15:09:42 PAGE 4   

 180   2                      L1=1;
 181   2                }
 182   1      }
 183          
 184          void main()
 185          {       
 186   1              systemtime realtime;
 187   1              init_18b20();
 188   1              init_lcd();
 189   1              init_2402();
 190   1              speaker=1;
 191   1              while(1)
 192   1               {              
 193   2                      k=key4(); 
 194   2                      get_ds1302(&realtime);//取时间
 195   2                      temp=read_temp();          //取温度
 196   2                      delay(200);                       //延时 保持数据稳定 避免数据刷新
 197   2                      switch(k)
 198   2                       {
 199   3                         case 1:                         //菜单一,显示时间
 200   3                           {
 201   4                                      write_cmd(0x80);
 202   4                                  print(" Time: ");
 203   4                                  print(realtime.TimeString);
 204   4                                      write_cmd(0xc0);
 205   4                                  print(" Date: "); 
 206   4                                  print(realtime.DateString);                            
 207   4                               } break;        
 208   3                         case 2:                        //菜单二,显示温度
 209   3                           {   
 210   4                                  write_cmd(0x80);
 211   4                                  print(" DS18B20 is OK  ");
 212   4                                      write_cmd(0xc0);
 213   4                              print("NOW TEMP:  . C ");       
 214   4                                      if(flagt==1)datadis[0]=0x2d;
 215   4                                      else datadis[0]=temp/1000+0x30;
 216   4                                      datadis[1]=temp/100%10+0x30;
 217   4                                      datadis[2]=temp/10%10+0x30;
 218   4                                      datadis[3]=0x2e;
 219   4                                      datadis[4]=temp%10+0x30;
 220   4                                      write_cmd(0xca);
 221   4                                      print(datadis); 
 222   4                            }break;   
 223   3                         case 3:                                 //菜单三,显示温度设置值
 224   3                          {
 225   4                                      write_cmd(0x80);
 226   4                                      print(" change temp:   ");
 227   4                                      write_cmd(0xc0);
 228   4                                      print("TH=     TL=     ");
 229   4                                      write_cmd(0xc3);
 230   4                                      write_dat(th1+0x30);
 231   4                                      write_cmd(0xc4);
 232   4                                      write_dat(th2+0x30);
 233   4                                      write_cmd(0xc5);
 234   4                                      write_dat(0xdf);                 //摄氏度远点
 235   4                                      write_cmd(0xc6);
 236   4                                      write_dat(0x43);
 237   4                                      write_cmd(0xcb);
 238   4                                      write_dat(th3+0x30);
 239   4                                      write_cmd(0xcc);
 240   4                                      write_dat(th4+0x30);
 241   4                                      write_cmd(0xcd);                 //摄氏度符号
C51 COMPILER V8.02   MAIN                                                                  08/04/2010 15:09:42 PAGE 5   

 242   4                                      write_dat(0xdf);                 
 243   4                                      write_cmd(0xce);
 244   4                                      write_dat(0x43);
 245   4                                      flag1=1;  
 246   4                              }break;
 247   3                        case 4:                                  //菜单四,记录报警温度
 248   3                          {
 249   4                                      write_cmd(0x80);
 250   4                                      print("  ALARM TEMP     ");
 251   4                                      write_cmd(0xc0);
 252   4                                      print("  RECORD:        ");
 253   4                                      write_cmd(0xcb);
 254   4                                      write_dat(0xdf);                 
 255   4                                      write_cmd(0xcc);
 256   4                                      write_dat(0x43);
 257   4                                      flag2=1;
 258   4                              }break;  
 259   3                        default:break;          
 260   3                       }
 261   2                      key_lcd();                              //菜单三中温度设置的按键扫描
 262   2                      alarm_speaker();                //报警系统通过2402存储超出的温度,并记录
 263   2                  if(K5==0)                           //按下K5,就显示当前报警的温度
 264   2                        {
 265   3                              delay(5);
 266   3                          if(K5==0)
 267   3                                {
 268   4                                      while(!K5);
 269   4                                      q=read_add(adder);
 270   4                                }
 271   3                        };
 272   2                      if(flag2==1&&k==4)                 //k一定不能掉,不然会在其他菜单里出现乱码,菜单四中需要显示存储的报警数据
 273   2                       {                                                              
 274   3                              write_cmd(0xc9);
 275   3                              write_dat(q/10%10+0x30);
 276   3                              write_cmd(0xca);
 277   3                              write_dat(q%10+0x30);
 278   3                       }
 279   2                               
 280   2                }
 281   1      }
 282          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1866    ----
   CONSTANT SIZE    =    119    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27      26
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -