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

📄 water.lst

📁 详细介绍了怎么利用单片机实现自身温度控制的程序!通过了实验验证!效果不错!
💻 LST
📖 第 1 页 / 共 5 页
字号:
 287   2                      CX = 0x88;
 288   2                      halfLineCnt = 32;
 289   2              }
 290   1              lcdPosX = CX + CY;
 291   1              
 292   1          for (; halfLineCnt != 0; halfLineCnt--)
 293   1              {
 294   2                      basicBlock = width;
 295   2                      wrPosition();
 296   2              
 297   2                      for (;basicBlock != 0; basicBlock--)
 298   2                      {
 299   3                              if (halfLineCnt > 16)
 300   3                              {
 301   4                                      LCD_SendData(0x00);
 302   4                              }
 303   3                              else
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 6   

 304   3                              {
 305   4                                      LCD_SendData (0xff);
 306   4                              }
 307   3                      }
 308   2                      lcdPosY++;
 309   2              }
 310   1      
 311   1              LCD_SendComm(SFunDrawOn);
 312   1              LCD_SendComm(SFunSetB);
 313   1      
 314   1      }
 315          
 316          //---------------------------------------------------------
 317          //函数原形:void lcd_LineChoose (uchar line)
 318          //函数功能:选中某行反白显示
 319          //输入参数:
 320          //返回值  :
 321          //---------------------------------------------------------
 322          
 323          void lcd_LineChoose (uchar line)
 324          {
 325   1              if (line<4)
 326   1              {
 327   2                      lcd_ConvertChar(line,0,16);
 328   2                      Set_Cursor(line,7);     
 329   2              }
 330   1      
 331   1      }
 332          
 333          
 334          
 335          
 336          
 337          //初始化
 338          void LCD_init(void)
 339          {
 340   1              SCS=0;
 341   1              lcd_DelayMs(30);
 342   1              SCS=1;
 343   1              SCS=1;
 344   1              SCLK=0;
 345   1              lcd_DelayMs(40);
 346   1              LCD_SendComm(SFunSetE);            //功能设置,一次送8位数据,基本指令集
 347   1              delay(300);
 348   1              LCD_SendComm(SFunSetB);            //功能设置,一次送8位数据,基本指令集
 349   1              delay(300);
 350   1              LCD_SendComm(SDispOn);            //0000,1100  整体显示,游标off,游标位置off
 351   1              delay(300);
 352   1              LCD_SendComm(SClear);            //0000,0001 清DDRAM
 353   1              delay(300);
 354   1              lcd_DelayMs(1);
 355   1              LCD_SendComm(SEntryMode);            //0000,0010 DDRAM地址归位
 356   1              lcd_DelayMs(1);
 357   1              LCD_SendComm(SOrigin);            //1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC
 358   1              lcd_DelayMs(1);
 359   1              //LCD_SendComm(0x04);            //点设定,显示字符/光标从左到右移位,DDRAM地址加 一
 360   1              lcd_DelayMs(1);
 361   1              // LCD_SendComm(0x0f);            //显示设定,开显示,显示光标,当前显示位反白闪动
 362   1              lcd_DelayMs(5); 
 363   1      }
 364          
 365          
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 7   

 366          /*****************************************按键和显示****************************************/
 367          void DispPage(uchar page)
 368          {
 369   1              char xdata buffer[20];
 370   1              lcd_Clear();
 371   1              switch (page)
 372   1              {
 373   2              case 0:
 374   2                    {
 375   3                     sprintf(buffer,"Tout: %5.2f C",Tout/100.0);
 376   3                     lcd_DispString(0,0,buffer);
 377   3      
 378   3                  sprintf(buffer,"FlowRate: %3.1f L" ,Rate/100.0);
 379   3                  lcd_DispString(1,0,buffer);
 380   3      
 381   3                  sprintf(buffer,"Tset: %5.2f C" ,Tset/100.0);
 382   3                      lcd_DispString(2,0,buffer);
 383   3      
 384   3                              lcd_DispString(3,0,"Status:");
 385   3                              FaultDisp();
 386   3                    }
 387   2               break;
 388   2        /*       case 1:
 389   2                     {           
 390   2                  sprintf(buffer,"Tset: %.2f C" ,Tset/100.0);
 391   2                      lcd_DispString(0,0,buffer);
 392   2                  sprintf(buffer,"Pout: %.2f" ,Pout/100.0);
 393   2                      lcd_DispString(1,0,buffer);
 394   2      
 395   2                  sprintf(buffer,"FlowLim: %.1fL/M" ,Lim/100.0);
 396   2                      lcd_DispString(2,0,buffer);
 397   2      
 398   2                              lcd_DispString(3,0,"Fault:");
 399   2                              FaultDisp();
 400   2      
 401   2                      } break;*/
 402   2                                      default: break;
 403   2                      }
 404   1      }
 405          
 406          void ScreenFresh()
 407          {
 408   1              char xdata buffer[20];
 409   1              switch (Page)
 410   1              {
 411   2                              case 0:
 412   2                    {
 413   3                     sprintf(buffer,"Tout: %5.2f C",Tout/100.0);
 414   3                     lcd_DispString(0,0,buffer);
 415   3      
 416   3                  sprintf(buffer,"FlowRate: %3.1f L" ,Rate/100.0);
 417   3                  lcd_DispString(1,0,buffer);
 418   3      
 419   3                  sprintf(buffer,"Tset: %5.2f C" ,Tset/100.0);
 420   3                      lcd_DispString(2,0,buffer);
 421   3      
 422   3                              lcd_DispString(3,0,"Status:");
 423   3                              FaultDisp();
 424   3                    }
 425   2               break;
 426   2          /*     case 1:
 427   2                     {            
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 8   

 428   2                  sprintf(buffer,"Tset: %.2f C" ,Tset/100.0);
 429   2                      lcd_DispString(0,0,buffer);
 430   2      
 431   2                  sprintf(buffer,"Pout: %.2f" ,Pout/100.0);
 432   2                      lcd_DispString(1,0,buffer);
 433   2      
 434   2                  sprintf(buffer,"FlowLim: %.1fL/M" ,Lim/100.0);
 435   2                      lcd_DispString(2,0,buffer);
 436   2      
 437   2                              lcd_DispString(3,0,"Fault:");
 438   2                              FaultDisp();
 439   2      
 440   2                      } break;*/
 441   2                                      default: break;
 442   2                      }
 443   1      
 444   1      }
 445          
 446          void SubProcess(void)
 447          {
 448   1              xdata char buffer[10];
 449   1              if(Option == 0)                                  //ISet
 450   1              {
 451   2                      if(Tset > TsetL)
 452   2                      {
 453   3                              Tset-=10;
 454   3                              if(Tset < TsetL)
 455   3                              {
 456   4                                      Tset = TsetL;
 457   4                              }
 458   3                      }
 459   2                      sprintf(buffer,"%.2f C" ,Tset/100.0);
 460   2                      lcd_DispString(2,3,buffer);                                     
 461   2              }
 462   1      /*      else if(Option == 1)                              //Tset
 463   1              {
 464   1                      if(Lim > LimL)
 465   1                      {
 466   1                              Lim = Lim-10;
 467   1                              if (Lim < LimL)
 468   1                              {
 469   1                                      Lim = LimL;
 470   1                              }
 471   1                       }
 472   1                  sprintf(buffer,"  %.1f L/M" ,Lim/100.0);
 473   1                      lcd_DispString(2,3,buffer);
 474   1              }
 475   1      */      
 476   1      }
 477          
 478          void AddProcess(void)
 479          {
 480   1              xdata char buffer[10];
 481   1              if(Option == 0)                           //Iset
 482   1              {
 483   2                      if(Tset < TsetH)
 484   2                      {
 485   3                              Tset+=10;
 486   3                              if(Tset > TsetH)
 487   3                              {
 488   4                                      Tset = TsetH;
 489   4                              }
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 9   

 490   3                      }
 491   2                      sprintf(buffer,"%.2f C" ,Tset/100.0);
 492   2                      lcd_DispString(2,3,buffer);                                     
 493   2              }
 494   1      /*      else if(Option == 1)
 495   1              {
 496   1                      if(Lim < LimH)
 497   1                      {
 498   1                              Lim += 10;                      
 499   1                              if (Lim > LimH)
 500   1                              {
 501   1                                      Lim = LimH;
 502   1                              }
 503   1                      }
 504   1                  sprintf(buffer,"  %.1f L/M" ,Lim/100.0);
 505   1                      lcd_DispString(2,3,buffer);
 506   1              }
 507   1              */
 508   1      }
 509          
 510          void key_process(uchar key_number)
 511          {
 512   1              switch(key_number)
 513   1              {
 514   2                      case KEY_STANDBY:
 515   2                  {
 516   3                              if(Moder==0)
 517   3                              {
 518   4                                      nop();
 519   4                                      if(WATER==1)
 520   4                                      {
 521   5                                              WATER=0;
 522   5                                              Ldelay();
 523   5                                              Fault();
 524   5                                      }
 525   4                              }
 526   3                              if(Moder==1)
 527   3                              {
 528   4                                      begin=!begin;
 529   4                                      if(begin==0)
 530   4                                      {
 531   5                                              write7279(SEGOFF,  LED_Standby);                                
 532   5                                      }                       
 533   4                                      if(begin==1)
 534   4                                      {
 535   5                                              if(WATER==1)
 536   5                                              {
 537   6                                                      WATER=0;
 538   6                                                      Ldelay();
 539   6                                                      Fault();
 540   6                                              }
 541   5                                              write7279(SEGON,  LED_Standby);
 542   5                                      }
 543   4                              }
 544   3                      }
 545   2                      case KEY_SUB:
 546   2                      {    
 547   3                              if(DataChflag)
 548   3                              {
 549   4                                      SubProcess();
 550   4                              }
 551   3                      }break; 
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 10  

 552   2                      case KEY_ADD:
 553   2                      {   
 554   3                              if(DataChflag)
 555   3                              {
 556   4                                      AddProcess();
 557   4                              }
 558   3                      }break; 
 559   2      /*              case KEY_DISPLAY:
 560   2                      {  
 561   2                      DataChflag=0;
 562   2                              write7279(SEGOFF,  LED_Enter);
 563   2                              Option=2;
 564   2                 if(Page >=1)
 565   2                         {
 566   2                    Page = 0;
 567   2                         }
 568   2                 else
 569   2                         {
 570   2                        Page++; 
 571   2                         }
 572   2                         DispPage(Page);
 573   2      
 574   2                      }break;*/
 575   2                      case KEY_ENTER:
 576   2                      {
 577   3                              if(Moder==1)
 578   3                              {
 579   4                                      if(DataChflag>=1)

⌨️ 快捷键说明

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