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

📄 main.lst

📁 液晶菜单 51串行实现 调试已通过
💻 LST
字号:
C51 COMPILER V8.16   MAIN                                                                  02/18/2009 16:41:09 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN ..\Output\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\UserCode\main.c BROWSE INCDIR(..\LCD_Driver;..\MzMenu_GUI;..\UserCode) D
                    -EBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(..\Output\main.obj)

line level    source

   1          //========================================================================
   2          //  工程名称:MCS51_MzLH06_Menu
   3          //  作    者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)    
   4          //  联系方式:QQ 644272644
   5          //      版权所有:北京铭正同创科技有限公司   www.mzdesign.com.cn
   6          //  适应芯片: MCS51 (本例选择AT89S52)
   7          //  编程环境: Keil C51
   8          //  实现功能: MzLH06模块的列表式菜单应用范例,并在各分项菜单中演示MzLH06的功能
   9          //
  10          //  系统要求: PC with CPU 233MHz,128MB RAM,
  11          //                      Keil uVision3(or later)
  12          //  组成文件:
  13          //      
  14          //      main.c          ----主程序文件
  15          //              Key_Service.c ----键盘扫描服务程序
  16          //                      Key_Service.h----键盘扫描服务程序的头文件
  17          //
  18          //              LCD_Dis.c
  19          //      LCD_Dis.h
  20          //              LCD_Config.h
  21          //                                      ----MzLH06模块的基本驱动程序
  22          //              Menu_GUI.c
  23          //              Menu_GUI.h
  24          //              Menu_GUI_Config.h
  25          //              Menu_Resource.c
  26          //                                      ----列表式菜单服务程序源代码,包括资源定义以及菜单配置等
  27          //              BaseTest.c
  28          //              BitmapTest.c
  29          //              EditTest.c
  30          //              MessageScroll.c
  31          //                                      ----各菜单项对应的用户定义功能程序,在此为演示液晶的各项功能
  32          //
  33          //
  34          //      硬件连接:
  35          //              LCD CS              ---P1.0
  36          //              LCD SCK                 ---P1.1
  37          //              LCD_MISO                ---P1.2
  38          //              LCD MOSI                ---P1.3
  39          //              LCD RD(Ready)   ---P1.5
  40          //  端口定义请参考LCD_Config.h文件中的定义
  41          //
  42          //              LCD 视实际模块而定
  43          //
  44          //              键盘接入请参考该例程的电路示意图
  45          //              Key1                    ---P0.0
  46          //              Key2                    ---P0.1
  47          //              Key3                    ---P0.2
  48          //              Key4                    ---P0.3
  49          //              键盘的另外一端接地,端口最好接上拉电阻
  50          //
  51          //              本例程仅提供参考,并没有演示该模块的Edit控件的所有功能,建议用户详细阅读模块的编
  52          //      程手册;而例程中使用的键盘程序为简单的范例程序,用户可以参考,或者根据自己的需要自行
  53          //      设计更合理的代码。
  54          //
C51 COMPILER V8.16   MAIN                                                                  02/18/2009 16:41:09 PAGE 2   

  55          //  当前版本:  V1.00
  56          //  日期:  2008-12-02
  57          //  
  58          //  参考文件: 
  59          //  维护记录:
  60          //-------------------------------------------------------------------
  61          //  Version   2008-12-02-V10   Modified By    Xinqiang Zhang(小丑)
  62          //
  63          //========================================================================
  64          
  65          #include "LCD_Dis.h"
  66          #include "Key_Service.h"
  67          #include "Menu_GUI.h"
  68          
  69          extern void BaseDraw(void);
  70          extern void CharShow(void);
  71          extern void BitmapTest(void);
  72          extern void NumberDirect(void);
  73          
  74          int main(void)
  75          {
  76   1              unsigned char uiKey=0;
  77   1              //uiKey用于存放扫描的键值状态
  78   1              unsigned char Item_Num,Update_Flag,Enter_Flag=0;
  79   1              //Item_Num:当前菜单界面当中共有几项菜单项,刷新时使用
  80   1              //Update_Flag:菜单界面刷新标识
  81   1              //Enter_Flag:确定键按下标识~~
  82   1              unsigned char PageItem_Num;
  83   1              //PageItem_Num:每页(全显示屏内)可以显示多少个菜单项
  84   1              unsigned char First_Index=0,Active_Index=0,Temp_Index=0;
  85   1              //First_Index:当前处在显示屏当中的最前面的菜单项序号
  86   1              //Active_Index:当前指向的菜单项,即当前活动的菜单项
  87   1              //Temp_Index:中间变量
  88   1              Key_Initial();
  89   1              LCD_Init();
  90   1              SetBackLight(100);                              //设置背光的亮度等级为0
  91   1              ClrScreen();                                    //清屏
  92   1              FontMode(0,1);
  93   1      
  94   1              Item_Num = GetMLNum(Menu_List01);                       //获取要显示的菜单的菜单项个数
  95   1              PageItem_Num = GetMLiNum_Page(Menu_List01);     //获取要显示的菜单的页数
  96   1              Initial_Menu(Menu_List01);
  97   1              while(1)
  98   1              {
  99   2                      KeyScan_Service();      
 100   2                      uiKey = Key_Get();
 101   2                      if(uiKey)
 102   2                      {
 103   3                              switch(uiKey)                                   //判断键值进行分支控制界面
 104   3                              {
 105   4                                      case 4:                         //确定键按下
 106   4                                              Enter_Flag=1;                   //enter flag set
 107   4                                              break;
 108   4                                      case 3:                         //down  向下键按下
 109   4                                              if(Active_Index<Item_Num)       
 110   4                                              {
 111   5                                                      Active_Index++;
 112   5                                                      if(Temp_Index<PageItem_Num-1) Temp_Index++;
 113   5                                                      else if(First_Index<Item_Num) First_Index++;
 114   5                                                      Update_Flag = 1;
 115   5                                              }
 116   4                                              break;
C51 COMPILER V8.16   MAIN                                                                  02/18/2009 16:41:09 PAGE 3   

 117   4                                      case 1:                         //up  向上键按下
 118   4                                              if(Active_Index>0)
 119   4                                              {
 120   5                                                      Active_Index--;
 121   5                                                      if(Temp_Index>0) Temp_Index--;
 122   5                                                      else if(First_Index>0) First_Index--;
 123   5                                                      Update_Flag = 1;
 124   5                                              }
 125   4                                              break;
 126   4                              /*      case 2:                                 //返回键按下
 127   4                                              Exit_flag = 0;//
 128   4                                              break;*/
 129   4                                      default:break;
 130   4                              }
 131   3                      }
 132   2                      if(Update_Flag)                                         //Update_Flag为1时刷新菜单
 133   2                      {
 134   3                              UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
 135   3                              Update_Flag=0;
 136   3                      }       
 137   2                      if(Enter_Flag)                                          //有确定键按下时,则进入相应的功能函数
 138   2                      {
 139   3                              Enter_Flag = 0;
 140   3                              switch(Active_Index)
 141   3                              {
 142   4                                      case 0:                                         //这里定义了响应第一项菜单
 143   4                                              BaseDraw();
 144   4                                              Redraw_Menu(First_Index,Active_Index,Menu_List01);
 145   4                                      //      Update_Flag = 1;
 146   4                                              break; 
 147   4                                      case 1:                                         //这里定义了响应第二项菜单                      
 148   4                                              CharShow();
 149   4                                              Redraw_Menu(First_Index,Active_Index,Menu_List01);
 150   4                                      //      Update_Flag = 1;
 151   4                                              break;  
 152   4                                      case 2:                                         //这里定义了响应第三项菜单 
 153   4                                              BitmapTest();
 154   4                                              Redraw_Menu(First_Index,Active_Index,Menu_List01);
 155   4                                      //      Update_Flag = 1;
 156   4                                              break;
 157   4                                      case 3:                                         //这里定义了响应第四项菜单
 158   4                                              NumberDirect();
 159   4                                              Redraw_Menu(First_Index,Active_Index,Menu_List01);
 160   4                                      //      Update_Flag = 1;
 161   4                                              break;  
 162   4                                      case 4: break;                          //如感兴趣可以自己加进去玩玩
 163   4                                      default:break;
 164   4                              } 
 165   3                      }
 166   2              }
 167   1      }
 168          
 169          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    249    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.16   MAIN                                                                  02/18/2009 16:41:09 PAGE 4   

   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 + -