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

📄 w014.lst

📁 W014-多功能数字温度表(DS18B20)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 515          void SetTHMenu()
 516          {
 517   1           uchar code  dis_code5[ ] = {"  SET THE TH ?  "} ;
 518   1           uchar code  dis_code6[ ] = {"  NOW TH =    C "} ;
 519   1      
 520   1           LCD_DisplayLine(dis_code5,dis_code6);
 521   1      
 522   1               LCD_WriteMytab() ;               
 523   1           Delay(10) ;
 524   1           LCD_DisplayPosit(0x4d) ;
 525   1           LCD_WriteDate(0x00) ; 
 526   1      }
 527          
 528          /*******************************************************************/
 529          /*                                                                 */
 530          /* 温度上限值设置时显示                                            */
 531          /*                                                                 */
 532          /*******************************************************************/
 533          void SetTH()
 534          {
 535   1         uchar key_v = 0x07;
 536   1         uchar a = 1;
 537   1         SetTHMenu();
 538   1         DisplayTH(); 
 539   1         while(a==1)
 540   1         {
 541   2            uchar key;
 542   2            key = KeyworthScan();
 543   2                                   
 544   2            if(key!=key_v)
 545   2           {
 546   3             Delayms(10);
 547   3                 key = KeyworthScan();
 548   3                 DisplayTH();
 549   3      
 550   3                 if(key!=key_v)
C51 COMPILER V8.02   W014                                                                  06/07/2007 21:46:16 PAGE 10  

 551   3                 {
 552   4                   key_v = key;
 553   4                   if(key_v==0x05)
 554   4                   {
 555   5                     TH++;
 556   5                      if(TH>99)TH=99;
 557   5                              Keyset_Flag = 2;
 558   5                   }
 559   4                   else if(key_v==0x06)
 560   4                   {
 561   5                      TH--;
 562   5                      if(TH<0)TH=0;
 563   5                              Keyset_Flag = 2;
 564   5                   }
 565   4                   else if(key_v==0x03&&Keyset_Flag == 2)
 566   4                       {
 567   5                             a = 0;
 568   5                       }
 569   4                 }
 570   3      
 571   3               }
 572   2      
 573   2         }
 574   1      }
 575          
 576          /*******************************************************************/
 577          /*                                                                 */
 578          /* 温度下限设置界面显示                                            */
 579          /*                                                                 */
 580          /*******************************************************************/
 581          void SetTLMenu()
 582          {
 583   1           uchar code  dis_code5[ ] = {"  SET THE TL ?  "} ;
 584   1           uchar code  dis_code6[ ] = {"  NOW TL =    C "} ;
 585   1      
 586   1           LCD_DisplayLine(dis_code5,dis_code6);
 587   1      
 588   1               LCD_WriteMytab() ;            
 589   1           Delay(10) ;
 590   1           LCD_DisplayPosit(0x4d) ;
 591   1           LCD_WriteDate(0x00) ;
 592   1      }
 593          
 594          /*******************************************************************/
 595          /*                                                                 */
 596          /* 温度下限设置界面下限值显示                                      */
 597          /*                                                                 */
 598          /*******************************************************************/
 599          void DisplayTL()
 600          {
 601   1           display_TL[0] = TL/10+0x30;
 602   1           display_TL[1] = TL%10+0x30;
 603   1      
 604   1           LCD_DisplayPosit(0x4b) ;             
 605   1           LCD_WriteDate(display_TL[0]) ;
 606   1               LCD_DisplayPosit(0x4c) ;             
 607   1           LCD_WriteDate(display_TL[1]) ;
 608   1      }
 609          
 610          /*******************************************************************/
 611          /*                                                                 */
 612          /* 温度下限值设置时显示                                            */
C51 COMPILER V8.02   W014                                                                  06/07/2007 21:46:16 PAGE 11  

 613          /*                                                                 */
 614          /*******************************************************************/
 615          void SetTL()
 616          {
 617   1         uchar key_v = 0x07;
 618   1         uchar a=1;
 619   1      
 620   1         SetTLMenu();
 621   1         DisplayTL();
 622   1         while(a==1)
 623   1         {
 624   2            uchar key_s;
 625   2            key_s = KeyworthScan();
 626   2                                   
 627   2            if(key_s!=key_v)
 628   2           {
 629   3             Delayms(10);
 630   3                 key_s = KeyworthScan();
 631   3                 DisplayTL();
 632   3      
 633   3                 if(key_s!=key_v)
 634   3                 {
 635   4                   key_v = key_s;
 636   4                   if(key_v==0x05)
 637   4                   {
 638   5                      TL++;
 639   5                      if(TL>99)TL=99;
 640   5                              Keyset_Flag = 3;
 641   5                   }
 642   4                   else if(key_v==0x06)
 643   4                   {
 644   5                      TL--;
 645   5                      if(TL<0)TL=0;
 646   5                              Keyset_Flag = 3;
 647   5                   }
 648   4                   else if(key_v==0x03&&Keyset_Flag == 3)
 649   4                       {
 650   5                                  a=0;
 651   5                       }
 652   4                 }
 653   3      
 654   3               }
 655   2      
 656   2         }
 657   1      }
 658          
 659          /*******************************************************************/
 660          /*                                                                 */
 661          /* 温度上下限设置                                                  */
 662          /*                                                                 */
 663          /*******************************************************************/
 664          void SetTH_TL()
 665          {
 666   1          SetTH();
 667   1          Delay(100);
 668   1          SetTL();
 669   1              Keyset_Flag=0;
 670   1          DS18B20_OkMenu();
 671   1      }
 672          /*******************************************************************/
 673          /*                                                                 */
 674          /* 主函数                                                          */
C51 COMPILER V8.02   W014                                                                  06/07/2007 21:46:16 PAGE 12  

 675          /*                                                                 */
 676          /*******************************************************************/
 677          
 678          void main()
 679          {
 680   1       do
 681   1       {
 682   2         if((presence==0)&&(dis_data[4]<TH)&&(dis_data[4]>=TL))  //温度正常
 683   2          { 
 684   3                DS18B20_OkMenu() ;
 685   3      
 686   3            while((dis_data[4]<TH)&&(dis_data[4]>=TL))
 687   3             {          
 688   4               ReadTemperature() ;
 689   4               TemperatureDisplay() ;
 690   4      
 691   4                   BEEP_Flag=0;
 692   4                   RED_Light=1;
 693   4      
 694   4                   SetKeyScan();
 695   4                   if(Keyset_Flag==1)
 696   4                    {
 697   5                      SetTH_TL();
 698   5                              Delayms(500);
 699   5                    }
 700   4             }
 701   3              }
 702   2      
 703   2         if((presence==0)&&(dis_data[4]>=TH))  //温度高于上限
 704   2               {
 705   3                 DisplayTHMenu();
 706   3      
 707   3             while(dis_data[4]>=TH)
 708   3              {
 709   4                    ReadTemperature() ;
 710   4                TemperatureDisplay() ;
 711   4      
 712   4                   if(BEEP_Flag==0)Beep();
 713   4                      BEEP_Flag=1;
 714   4                      RED_Light=0;
 715   4      
 716   4                      SetKeyScan();
 717   4                   if(Keyset_Flag==1)
 718   4                     {
 719   5                       SetTH_TL();
 720   5                               Delayms(500);
 721   5                     }
 722   4              }
 723   3                }
 724   2      
 725   2         if((presence==0)&&(dis_data[4]<TL))  //温度低于下限
 726   2          {
 727   3                DisplayTLMenu();
 728   3      
 729   3            while(dis_data[4]<TL)
 730   3             {
 731   4                    ReadTemperature() ;
 732   4                TemperatureDisplay() ;
 733   4      
 734   4                    if(BEEP_Flag==0)Beep();
 735   4                      BEEP_Flag=1;
 736   4                      RED_Light=0;
C51 COMPILER V8.02   W014                                                                  06/07/2007 21:46:16 PAGE 13  

 737   4      
 738   4                      SetKeyScan();
 739   4                    if(Keyset_Flag==1)
 740   4                     {
 741   5                       SetTH_TL();
 742   5                               Delayms(500);
 743   5                     }
 744   4              }
 745   3              }
 746   2      }
 747   1      while(!presence);
 748   1      
 749   1      
 750   1          DS18B20_ErrorMenu() ;               //未检测到DS18B20
 751   1      
 752   1          do
 753   1          {  
 754   2            DS18B20_Init() ;
 755   2      
 756   2            if(BEEP_Flag==0)Beep();
 757   2                 BEEP_Flag=1;
 758   2          }
 759   1           while(presence); 
 760   1      }
 761          /*******************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1389    ----
   CONSTANT SIZE    =    228    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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