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

📄 max232.lst

📁 基于proteus的多点温控系统的设计与仿真,该系统能够同时检测多路温度,用DS18B20温度传感器,AT89C51单片机为CPU.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 191   2                     for(j=13-n; j<i; j++){ *str=' ';  str++; }       //填充空格
 192   2                             for(; i<13; i++){ *str=tp[i]; str++; }  //加入有效的数字
 193   2                             *str='\0';
 194   2                    }
 195   1        }
 196          
 197          
 198          
 199          
 200           /***********************上下限温度处理*********************************/
 201          
 202          void Utdisp(unsigned int t)
 203          {
 204   1              unsigned char ut[4]; 
 205   1                        ut[0]=t/100;//百位数
 206   1                        ut[1]=t%100/10;//十位数
 207   1                        ut[2]=t%100%10;//个位数
 208   1                      //  ut[3]=t%10+0x30;//小数位
 209   1                        limit_up=ut[0]*100+ut[1]*10+ut[2];
 210   1         }
 211          void Dtdisp(unsigned int t)
 212          {
 213   1              unsigned char dt[4]; 
 214   1                        dt[0]=t/100;//百位数
 215   1                        dt[1]=t%100/10;//十位数
 216   1                        dt[2]=t%100%10;//个位数
 217   1                      //  dt[3]=t%10+0x30;//小数位
 218   1                        limit_down=dt[0]*100+dt[1]*10+dt[2];
 219   1         }
 220          
 221          
 222          /********************按键UP子程序**************************************/
 223          KEY_SET_UP()
 224          {
 225   1          if(Keyset==1&&limit_max==1){ limit_up=limit_up+1; }
 226   1                             
 227   1           if(Keyset==1&&limit_min==1){limit_down=limit_down+1;}
 228   1      }
 229          
 230          /********************按键DOWN子程序************************************/
 231          
 232          KEY_SET_DOWN()
 233          {
 234   1          if(Keyset==1&&limit_max==1){ limit_up=limit_up-1;}
 235   1          if(Keyset==1&&limit_min==1){ limit_down=limit_down-1;}
 236   1      }
 237          
 238          /********************按键ENTER子程序**************************************/
 239          KEY_SET_ENTER()
 240           {
 241   1              if(Keyset==0){  }
C51 COMPILER V7.06   MAX232                                                                01/11/2009 16:09:35 PAGE 5   

 242   1              if(Keyset==1&&Keyenter<2){Keyenter++;limit_max=0;limit_min=1;}
 243   1              if(Keyset==1&&Keyenter>=2){Keyset=0;Keyenter=0;limit_min=0;}
 244   1       }
 245          
 246          /********************所有按键扫描和显示************************************/
 247          void key_scan()
 248          {
 249   1              P2=(P2|0x078);
 250   1      if((P2&0x078)!=0x078)
 251   1        {
 252   2         Delay1ms(50);   //延时防抖  按下30ms再测
 253   2         P2=(P2|0x078);
 254   2         if((P2&0x078)!=0x078)
 255   2         {
 256   3          if(key_up==0)
 257   3              {
 258   4               //TempKeyV=1;
 259   4               KEY_SET_UP();      
 260   4              }
 261   3         if(key_down==0)
 262   3              {
 263   4               //TempKeyV=2;
 264   4               KEY_SET_DOWN();   
 265   4              }
 266   3         if(enter==0)
 267   3              {
 268   4                      //TempKeyV=3;
 269   4               KEY_SET_ENTER();
 270   4      
 271   4              }
 272   3          if(menu==0)
 273   3              {
 274   4                  //TempKeyV=4; 
 275   4              Keyset=1; limit_max=1;
 276   4              }
 277   3             }
 278   2        }
 279   1      }
 280          
 281          
 282           main( )
 283          {
 284   1              LCD_Initial();
 285   1              GotoXY(0,0);
 286   1              Print("The 1602LCD Test");
 287   1      
 288   1              TMOD=0x21;
 289   1                      TH1=0xfd;
 290   1                      TL1=0xfd;
 291   1              SM0=0;
 292   1                      SM1=1;
 293   1                      REN=1;
 294   1                  EA=1;
 295   1                  ES=1;
 296   1                  TR1=1;
 297   1      
 298   1              while(1)
 299   1              {
 300   2      
 301   2          Delay1ms(100);
 302   2          key_scan();    //扫描按键子程序
 303   2          read_temp();     //读取温度
C51 COMPILER V7.06   MAX232                                                                01/11/2009 16:09:35 PAGE 6   

 304   2      
 305   2             if(RI==1)
 306   2                      {RI=0;
 307   3                      aaa=SBUF;
 308   3                        SBUF=temperature;
 309   3                      flag1=1;
 310   3              
 311   3                      }       
 312   2                      
 313   2                      else{ 
 314   3                          if(flag1==1)
 315   3                            {  
 316   4                                 ES=0;          
 317   4                                 flag1=0;
 318   4                                         bbb=temperature/10;
 319   4                                         ccc=bbb*16;
 320   4                                         ddd=temperature%10+ccc;
 321   4                                         
 322   4                                         SBUF=ddd;
 323   4      
 324   4                           while(!TI);
 325   4                          
 326   4                             TI=0;
 327   4                                 ES=1;
 328   4                      
 329   4                       }      
 330   3                      }
 331   2          
 332   2      
 333   2              if(Keyset==1&&limit_max==1)
 334   2                 { 
 335   3                   GotoXY(0,1);
 336   3                   Print("Max:      ");
 337   3                   ds1820disp(limit_up,&TBuffer[0],13);//显示
 338   3                   GotoXY(5,1);
 339   3                   Print(&TBuffer[0]);
 340   3                  } 
 341   2              if(Keyset==1&&limit_min==1)
 342   2                  { 
 343   3                   GotoXY(0,1);
 344   3                   Print("Min:      ");
 345   3                   ds1820disp(limit_down,&TBuffer[0],13);//显示
 346   3                   GotoXY(5,1);
 347   3                   Print(&TBuffer[0]);
 348   3                   }
 349   2      
 350   2      
 351   2              if(Keyset==0)
 352   2                   {
 353   3                                Utdisp(limit_up);
 354   3                    Dtdisp(limit_down);
 355   3                   if(temperature>=limit_up)
 356   3                       { alarm=1;led1=0;Delay1ms(80);led1=1;}
 357   3                   if(temperature<=limit_down)
 358   3                       { alarm=1;led2=0;Delay1ms(80);led2=1;}
 359   3                   if(temperature<=limit_up&&temperature>=limit_down)
 360   3                       { alarm=0;led1=1;led2=1;}
 361   3      
 362   3                    GotoXY(0,1);
 363   3                    Print("T=         ");    
 364   3                    ds1820disp(tvalue,&TBuffer[0],13);//显示
 365   3                    GotoXY(3,1);
C51 COMPILER V7.06   MAX232                                                                01/11/2009 16:09:35 PAGE 7   

 366   3                    Print(&TBuffer[0]);
 367   3                                }             
 368   2            }
 369   1       }
 370          
 371          
 372          
 373          
 374          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2234    ----
   CONSTANT SIZE    =     51    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     38      43
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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