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

📄 main.lst

📁 基于单片机89C51的程序温控系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 268          
 269          /////////////////////////////////////////////////////////// 
 270          void ds1820disp2()               //温度值显示      
 271          {    
 272   1              /****************时间设定值**************/
 273   1      
 274   1               inputdata[4]=xiaoshi/10+0x30;
 275   1           inputdata[5]=xiaoshi%10+0x30;
 276   1           inputdata[6]=fenzhong/10+0x30;
 277   1           inputdata[7]=fenzhong%10+0x30;
 278   1      
 279   1           /**************温度设定值***************/
 280   1      
 281   1           inputdata[0]=0  +0x30;
 282   1           inputdata[1]=wendu/10 +0x30;
 283   1           inputdata[2]=wendu%10 +0x30;
 284   1           inputdata[3]=0 +0x30;    //小数位
 285   1           
 286   1      
 287   1            if(inputdata[0]==0x30)
 288   1            {
 289   2             inputdata[0]=0x20;//如果百位为0,不显示
 290   2             if(disdata[1]==0x30)
 291   2              {disdata[1]=0x20;//如果百位为0,十位为0也不显示
 292   3               }
 293   2            }
 294   1      
 295   1          wr_com(0x80|(2-0x40));                       //第二行 第  0x80|(x-0x40)    列                
 296   1          wr_dat(inputdata[4]);
 297   1       
 298   1          wr_com(0x80|(3-0x40));                       //第二行 第  0x80|(x-0x40)    列                
 299   1          wr_dat(inputdata[5]);
 300   1      
 301   1          wr_com(0x80|(5-0x40));                                      
C51 COMPILER V7.50   MAIN                                                                  07/20/2008 11:31:54 PAGE 6   

 302   1          wr_dat(inputdata[6]);
 303   1      
 304   1          wr_com(0x80|(6-0x40));                                    
 305   1          wr_dat(inputdata[7]);
 306   1      
 307   1      
 308   1      
 309   1          /*******************************/
 310   1          wr_com(0x80|(11-0x40));                       //第二行 第  0x80|(x-0x40)    列                
 311   1          wr_dat(inputdata[1]);
 312   1       
 313   1          wr_com(0x80|(12-0x40));                       //第二行 第  0x80|(x-0x40)    列                
 314   1          wr_dat(inputdata[2]);
 315   1      
 316   1          wr_com(0x80|(14-0x40));                                      
 317   1          wr_dat(inputdata[3]);
 318   1      
 319   1      //    wr_com(0x80|(13-0x40));                   //  dian                    
 320   1      //    wr_dat(0x2e);
 321   1      
 322   1      //    wr_com(0x80|(14-0x40));                                    
 323   1      //    wr_dat(inputdata[3]);
 324   1      
 325   1          wr_com(0x80|(15-0x40));                  //du                              
 326   1          wr_dat(0xdf);
 327   1      }
 328          
 329          //////////////////////////////////////////////////////////////////////////////////////////////
 330          //////////////////////////////////////////////////////////////////////////////////////////////////////////
             -///////
 331          ///////////********************************************************************
 332          
 333          
 334          
 335          
 336          
 337          
 338          ////////////////////////////////////////////////////
 339          ////////////////////////////////////////////////////
 340          ///// 函数名:   时间闪烁子函数               //////
 341          ///// 函数功能: 选择确定闪烁位等待调整       //////
 342          ///// 调用:     Add();                       //////
 343          ///// 函数参数: 无                           //////
 344          ///// 返回值:   无                           //////
 345          //////////////////////////////////////////////////// 
 346          /************************************************************/
 347          void FlashKey(void)             //闪烁子函数//
 348          {
 349   1       if(P3_5==0)
 350   1        {
 351   2          delay1ms(10);
 352   2          if(p3_5==0)
 353   2         {
 354   3          {
 355   4               Refresh();
 356   4           set++;
 357   4              }
 358   3         } 
 359   2              while(!P3_5);                       
 360   2        }           
 361   1                       
 362   1       if(set==6)  set=0;                      
C51 COMPILER V7.50   MAIN                                                                  07/20/2008 11:31:54 PAGE 7   

 363   1       if(set!=1)  K1=1;
 364   1       if(set!=2)  K2=1;
 365   1       if(set!=3)  K3=1;                      
 366   1       if(set!=4)  k4=1;
 367   1       if(set!=5)  k5=1;
 368   1      
 369   1       switch(set)
 370   1        {
 371   2         case 0:KT=0;break;
 372   2         case 1:K1=flash;KT=1;break;        //hms为调时临时变量,需要调整某位时则先把其初始值放到hms中//
 373   2         case 2:K2=flash;KT=1;break;
 374   2         case 3:K3=flash;KT=1;break;
 375   2         case 4:k4=flash;KT=1;break;
 376   2         case 5:k5=flash;KT=1;break;
 377   2        }
 378   1       Add();
 379   1      } 
 380          
 381          void Add(void)           
 382           {
 383   1        if(P3_4==0)             
 384   1         {
 385   2          delay1ms(10);
 386   2              if(p3_4==0)
 387   2         {
 388   3          Refresh();
 389   3          if(KT==1)             //检验可调标志位KT//
 390   3           {
 391   4            switch(set)
 392   4             {
 393   5              case 1:hour++;if(hour>=24)hour=0;break;           
 394   5              case 2:minite++;if(minite>=60)minite=0;break;          
 395   5              case 3:xiaoshi++;if(xiaoshi>=24)xiaoshi=0;break;          
 396   5              case 4:fenzhong++;if(fenzhong>=60)fenzhong=0;break;
 397   5              case 5:wendu++;if(wendu>=100)wendu=0;break;
 398   5               }
 399   4                 
 400   4               disdata[4]=hour/10+0x30;//小时高位
 401   4           disdata[5]=hour%10+0x30;//小时低位
 402   4           disdata[6]=minite/10+0x30;//分钟高位
 403   4           disdata[7]=minite%10+0x30;//分钟低位
 404   4      
 405   4             inputdata[4] = xiaoshi/10+0x30;
 406   4             inputdata[5] = xiaoshi%10+0x30;
 407   4             inputdata[6] = fenzhong/10+0x30;
 408   4             inputdata[7] = fenzhong%10+0x30;
 409   4             inputdata[1] = wendu/10+0x30;
 410   4             inputdata[2] = wendu%10+0x30;
 411   4             inputdata[3] = 0+0x30;
 412   4           }
 413   3              } 
 414   2               while(!P3_4);
 415   2         }
 416   1       }
 417          
 418          /************************************************************/
 419          
 420          void Refresh(void)
 421          {
 422   1        ds1820disp1();   //显示1
 423   1        ds1820disp2();      //温度值显示 
 424   1       
C51 COMPILER V7.50   MAIN                                                                  07/20/2008 11:31:54 PAGE 8   

 425   1      }
 426          
 427          
 428          /*-----------------------------状态判断于提示------------------------*/
 429          void State(void)
 430           {
 431   1        if(KT==1)
 432   1         {
 433   2          wr_com(0x80|(7-0x40));                                              
 434   2          wr_dat(0xef); 
 435   2          
 436   2         }             
 437   1        
 438   1         else
 439   1         {wr_com(0x80|(7-0x40));                                              
 440   2          wr_dat(0x00); 
 441   2         }
 442   1      
 443   1      }
 444          
 445          ///////////////////////////////***************************************////////kaiji hua mian
 446          intstart()//初始化显示
 447          {   lcd_init();
 448   1          wr_com(0x80);
 449   1          display(str3);
 450   1          wr_com(0xc0);
 451   1          display(str4);
 452   1      }
 453          
 454          
 455          ///////////////////////***************************************************
 456          /************************比较判断函数***********************/
 457          /////////////////////////////////////
 458           void b_j()   
 459          {    
 460   1         Relay_add=1;  LED_RED=1; LED_BLUE=0;      ////条件加热,降热
 461   1         temp=wendu*10;
 462   1      
 463   1      if(((xiaoshi==hour)&&(fenzhong==minite))||temp>(tvalue+15))
 464   1       {
 465   2        Relay_add=0;   LED_RED=0;   LED_BLUE=1;
 466   2       }
 467   1       else
 468   1       {
 469   2        Relay_add=1;   LED_RED=1;   LED_BLUE=0;
 470   2       }
 471   1      }
 472          /***********************************************************/
 473          
 474          //////////////////////////////////////////////////////////////////////////////////////////////////////////
             -///////
 475          /********************主程序***********************************/
 476          void main()
 477          {  
 478   1         TMOD=0X01;
 479   1         TH0=0X3C;TL0=0XB0;
 480   1         ET0=1;TR0=1;
 481   1         EA=1;
 482   1      
 483   1         intstart();   //开机画面 *************************************
 484   1         delay1ms(2500);
 485   1      
C51 COMPILER V7.50   MAIN                                                                  07/20/2008 11:31:54 PAGE 9   

 486   1         init_play();//初始化显示
 487   1         while(1)
 488   1          {
 489   2           read_temp();//读取温度
 490   2      
 491   2           ds1820disp1();   //显示1
 492   2           ds1820disp2();      //温度值显示
 493   2           
 494   2      //////////////////////////////////////////////////////////////
 495   2      //////////////////////////////////////////////// 
 496   2           FlashKey();
 497   2           State();
 498   2           delay1ms(400);
 499   2           b_j();
 500   2          }  ///while
 501   1      
 502   1      
 503   1      //////////////////////////////////////////////////////////////
 504   1      
 505   1      
 506   1       
 507   1      }
 508          
 509          /****************定时中断服务子函数******************/
 510          void TIME_INT() interrupt 1 using 1
 511          {
 512   1       TH0=0X3C;TL0=0XB0;
 513   1       ms50++;
 514   1       if(ms50==20)
 515   1       {
 516   2        ms50=0;second++;
 517   2        if(second==60)
 518   2         {
 519   3           second=0;minite++;
 520   3           if(minite==60)
 521   3            {
 522   4              minite=0;hour++;
 523   4              if(hour==24)
 524   4              hour=0;
 525   4             }
 526   3          }
 527   2        }
 528   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1426    ----
   CONSTANT SIZE    =     63    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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