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

📄 main.lst

📁 LCD多级菜单显示程序!320*240的LCD显示器!全部调试通过的!
💻 LST
📖 第 1 页 / 共 3 页
字号:
 374   1      }
 375          void menu_2_4(void){
 376   1      
 377   1      }
 378          void menu_2_5(void){
 379   1      
 380   1      }
 381          void menu_2_6(void){
 382   1      {       unsigned char temp_array,temp_scr,key_value;
 383   2              temp_array = ArrayLine;
 384   2              temp_scr = ScrLine;
 385   2              ArrayLine=0;
 386   2              ScrLine=0;
 387   2              InitLcd();
 388   2              watchdog();
 389   2              while(1)
 390   2              {       PrintStr(0,0,second_menu_6[ArrayLine]);
 391   3                      PrintStr(1,0,second_menu_6[ArrayLine+1]);
 392   3                      PrintStr(2,0,second_menu_6[ArrayLine+2]);
 393   3                      PrintStr(3,0,"                ");
 394   3                      while(1)
 395   3                      {       key_value=GetKey(12);
 396   4                              if(key_value!=0xff)
 397   4                               break;
 398   4                       }
 399   3                              switch(key_value)
 400   3                              {
 401   4                                              case ESC:
 402   4                                              ScrLine = temp_scr;
 403   4                                              ArrayLine = temp_array;
 404   4                                              return;
 405   4                              }
 406   3                      }
 407   2                              
 408   2      }
 409   1      }
 410          //************************************************************
 411          //二级菜单
 412          //************************************************************
 413          void d_second(second_num)
 414          unsigned char second_num;
 415          {       
 416   1              switch(second_num)
 417   1              {       case 0:         
 418   2                              menu_2_1();                                             
 419   2                              break;
 420   2                      case 1:
 421   2                              menu_2_2();                     
 422   2                              break;  
 423   2                      case 2:
 424   2                              menu_2_3();                     
 425   2                              break;
 426   2                      case 3:
 427   2                              menu_2_4();                     
C51 COMPILER V7.08   MAIN                                                                  10/31/2007 10:13:27 PAGE 8   

 428   2                              break;
 429   2                      case 4:
 430   2                              menu_2_5();             
 431   2                              break;
 432   2                      case 5:
 433   2                              menu_2_6();             
 434   2                              break;
 435   2              }
 436   1      }
 437          //*****************************************************************
 438          //主屏显示
 439          //*****************************************************************
 440          void welcome(void)
 441          {       unsigned char xdata key_value,secb,seca,temp[9];//;,bb
 442   1              struct DATE d_date;     
 443   1              struct TIME t_time;
 444   1              while(1)
 445   1               {
 446   2                      F_back = 0x55;                          //在主屏,不需要返回F_baCK=0X55标识需要返回标志
 447   2                      key_value=GetKey(12);
 448   2                      if(key_value==ENTER)            //按确认键进入主菜单
 449   2                      {       
 450   3                              F_back = 0xaa;                  //标识需要返回标志
 451   3                              d_first();                              
 452   3                      }
 453   2               
 454   2                      watchdog();
 455   2                      secb=SECOND;                            //每秒刷新一次时间
 456   2                      if(seca!=secb)
 457   2                      {
 458   3                              seca=secb;      
 459   3                              GetTime(&t_time);
 460   3                              watchdog();
 461   3                              GetDate(&d_date);
 462   3                              if((d_date.year>99)||(d_date.mon>12)||(d_date.day>31)||(t_time.hour>23)||(t_time.min>59)||(t_time.sec>5
             -9))
 463   3                              {
 464   4                                      //repair_time();
 465   4                                      InitLcd();
 466   4                                      PrintStr(1,2,"时钟出错");       //时钟出错后把年月日时分秒设为默认值后进入时钟设置界面
 467   4                                      Delay1(5000);
 468   4                                      InitLcd();
 469   4                              }
 470   3                              PrintStr(1,0,"  菜单程序调试  ");
 471   3                              PrintStr(2,6,"    ");
 472   3                              PrintStr(2,0,"    ");
 473   3                              PrintStr(0,0,"    实验程序    ");
 474   3                              PrintStr(3,6,"    ");
 475   3                              PrintStr(3,0,"    ");
 476   3      
 477   3                              temp[0] = d_date.year/10 + 0x30;
 478   3                              temp[1] = d_date.year%10 + 0x30;
 479   3                              temp[2] = '-';
 480   3                              temp[3] = d_date.mon/10 + 0x30;
 481   3                              temp[4] = d_date.mon%10 + 0x30;
 482   3                              temp[5] = '-';
 483   3                              temp[6] = d_date.day/10 + 0x30;
 484   3                              temp[7] = d_date.day%10 + 0x30;
 485   3                              temp[8] = 0;
 486   3                              PrintStr(2,2,temp);
 487   3      
 488   3                              temp[0] = t_time.hour/10 + 0x30;
C51 COMPILER V7.08   MAIN                                                                  10/31/2007 10:13:27 PAGE 9   

 489   3                              temp[1] = t_time.hour%10 + 0x30;
 490   3                              temp[2] = ':';
 491   3                              temp[3] = t_time.min/10 + 0x30;
 492   3                              temp[4] = t_time.min%10 + 0x30;
 493   3                              temp[5] = ':';
 494   3                              temp[6] = t_time.sec/10 + 0x30;
 495   3                              temp[7] = t_time.sec%10 + 0x30;
 496   3                              temp[8] = 0;
 497   3                              PrintStr(3,2,temp);
 498   3      
 499   3                              }
 500   2                      }
 501   1              }
 502          //*****************************************************
 503          //定时器0初始化10MS中断
 504          //*****************************************************
 505          void InitTimer0(void)
 506          {
 507   1              unsigned char temp;
 508   1              //t0_error = 0;
 509   1              temp = TMOD;
 510   1              temp &= 0xf0;
 511   1              TMOD = temp|0x01;               //timer0 work mode 1,act as the timer ticker
 512   1              TL0 = 0x00;
 513   1              TH0 = 0xB8;             //interrupt every 10 ms,at 11.0592MHz   
 514   1      ///     watchdog();
 515   1      }
 516          //*********************************
 517          //定时器0中断服务子程序
 518          //*********************************
 519          void timer0(void) interrupt 1 using 0
 520          {
 521   1              ET0 =0;
 522   1              TL0 = 0x00;
 523   1              TH0 = 0xB8;             //interrupt every 10 milisecond,at 11.0592MHz   
 524   1              Ticker++;
 525   1              ET0 = 1;
 526   1      }
 527          //*************************************************************
 528          //主程序
 529          //*************************************************************
 530          void main()
 531          {
 532   1              Init12c887();
 533   1              InitTimer0();
 534   1              EA=1;
 535   1              ET0=1;
 536   1              TR0=1;
 537   1              InitLcd();
 538   1              AUXR=0x01;                      //在使用MOVX指令时访问外部RAM,如果AUXR = 0X01
 539   1                                                      //则在使用MOVX时访问片内自带RAM                 
 540   1              init5045();     
 541   1              LED=0X86;
 542   1              ClearGraph();
 543   1              X5045WriteStatus(0x00); 
 544   1              init5045();
 545   1              welcome();
 546   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1597    ----
C51 COMPILER V7.08   MAIN                                                                  10/31/2007 10:13:27 PAGE 10  

   CONSTANT SIZE    =    817    ----
   XDATA SIZE       =      7      15
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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