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

📄 menu.lst

📁 ST7565_Driver_menu.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   MENU                                                                 09/22/2009 20:36:58 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN Menu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Menu.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           /*
   2          名称:GXD LCD多层菜单 v1.2
   3          作者:中国传惠 TranSmart  gongxd@126.com
   4          
   5          特点:
   6          可以在液晶LCM上显示最大254层深度的菜单,可以非常方便的使用和移植。
   7          字符型显示适用于St7920控制芯片。
   8          图像显示适用于st7656控制芯片,不带字库要自己实现汉字字符显示
   9          在图像模式下支持焦点菜单反白,
  10          焦点菜单反白流程是:
  11          1.调用 LCD_disp_SetReverse(1),打开液晶反白显示,以后的输出都是反白显示
  12          2.输出焦点菜单内容
  13          3.调用 LCD_disp_SetReverse(0),关闭液晶反白显示,以后的输出都是正常显示
  14          可以根据此流程,在各种控制芯片上实现反白显示。
  15          
  16          
  17          历史:
  18          2009-9-22 添加在图形模式下焦点行反白的功能
  19          2009-8-2  添加N层菜单功能,修改屏幕参数定义
  20          2009-3-4  初始版本
  21          
  22          编译环境:
  23          
  24          IDE-Version:
  25          uVision3 V3.33
  26          Copyright (c) Keil Elektronik GmbH / Keil Software, Inc 2006
  27          
  28          Tool Version Numbers:
  29          工具链路径:C:\Keil\C51\BIN\
  30          C Compiler: C51.Exe V8.05a
  31          Assembler: A51.Exe
  32          Linker/Locator: BL51.Exe V6.00
  33          Librarian: LIB51.Exe V4.24
  34          Hex Converter: OH51.Exe V2.6
  35          CPU DLL: S8051.DLL V3.06
  36          Dialog DLL: DP51.DLL V2.48b
  37          Target DLL: C:\KEIL\VW_C.DLL
  38          Dialog DLL: TP51.DLL V2.48b
  39          
  40          版权声明: 
  41          义务: 
  42          1.如果您在使用中发现任何BUG,请通知gongxd@126.com,我会及时改正,并给您一份最新的代码
  43          2.请保留本声明
  44          
  45          权利: 
  46          如果您同意履行上面的义务,您就可以完全免费将代码应用于任何商业非商业用途
  47          但本代码版权归中国传惠gongxd@126.com 所有,否则严禁使用本代码
  48          
  49          建议:
  50          如果您作了什么改进希望能通知gongxd@126.com,最好能共享一下,
  51          我也会给您一份 最新 的代码,共同进步嘛 
  52          
  53          后话:大家都不容易,如果您觉得这东西有点用,就尽情传播吧 
  54          */
  55          
C51 COMPILER V8.05a   MENU                                                                 09/22/2009 20:36:58 PAGE 2   

  56          #include "menu.h"
  57          #include "menu_res.h"
  58          
  59          //菜单是否更新 1是 0否
  60          unsigned char  MenuDisPlayUpdate;
  61          
  62          
  63          //所有菜单板的个数
  64          #define MenuAllCount sizeof(MenuPanel)/sizeof(MenuPanelStruct)
  65          Menu_Statestruct  Menu_State;//菜单状态定义
  66          
  67          
  68          //=================================================================================栈函数
  69          
  70          //栈大小,菜单深度
  71          #define  StackSize  MenuDeep
  72          
  73          //声明堆栈元素类型
  74          typedef Menu_Statestruct StackElementType;
  75          //栈元素数组声明
  76          StackElementType  MenuParentStack[StackSize];
  77          
  78          //栈顶
  79          unsigned char StackTOP;
  80          
  81          //栈初始化
  82          void StackINI()
  83          {
  84   1      StackTOP=0;
  85   1      }
  86          //测试栈是否空 1 是 0 否
  87          unsigned char  StackEmpty()
  88          {
  89   1      return  StackTOP==0;
  90   1      }
  91          //测试栈是否满 1 是 0 否
  92          unsigned char  StackFull()
  93          {
  94   1      return  StackTOP==StackSize;
  95   1      }
  96          
  97          //出栈
  98          StackElementType  StackPOP()
  99          {
 100   1      if (StackTOP==0)
 101   1      {
 102   2      return MenuParentStack[0];
 103   2      }
 104   1      StackTOP--;
 105   1      return MenuParentStack[StackTOP]; 
 106   1      }
 107          
 108          //入栈
 109          void  StackPush(StackElementType INElement)
 110          {
 111   1      if (StackTOP==StackSize)
 112   1      {
 113   2      return;
 114   2      }
 115   1      MenuParentStack[StackTOP]=INElement;
 116   1      StackTOP++;
 117   1      }
C51 COMPILER V8.05a   MENU                                                                 09/22/2009 20:36:58 PAGE 3   

 118          
 119          //=================================================================================菜单函数
 120          //已经到最顶了
 121          void  StackEmptyErr()
 122          {
 123   1      unsigned  char code MenuTopErrMsg[]=
 124   1      {"已经到最顶了"};
 125   1      LCD_disp_CLS();
 126   1      LCD_disp_printR(MenuTopErrMsg,1,1);
 127   1      delayms(300);
 128   1      LCD_disp_CLS();
 129   1      //显示主菜单
 130   1          Menu_State.CurrentPanel=0;//本级菜单的菜单索引号
 131   1          Menu_State.ItemStartDisplay=0; //显示第一项对应的菜单条目索引
 132   1          Menu_State.FocusLine=1;  //焦点在屏上是第几项
 133   1      }
 134          
 135          //菜单达到最大深度,栈满提示函数
 136          void  StackFullErr()
 137          {
 138   1      unsigned  char code MenuTopErrMsg[]=
 139   1      {"菜单栈满无法继续"};
 140   1      LCD_disp_CLS();
 141   1      LCD_disp_printR(MenuTopErrMsg,0,1);
 142   1      delayms(300);
 143   1      LCD_disp_CLS();
 144   1      }
 145          
 146          //默认菜单处理函数
 147          void voidNull()
 148          {
 149   1      }
 150          
 151          //光标所在行菜单项显示
 152          void UpdatedisplayMenu_Focus(unsigned char *MenuTxttmp)
 153          {
 154   1      #if   FocusReverse==1
 155   1          //图像反色显示 0 否 1是,执行此命令后的所有操作均是按照设置显示
 156   1          LCD_disp_SetReverse(1);
 157   1      #endif    
 158   1          //显示菜单项
 159   1          LCD_disp_printR(MenuTxttmp,MenuItemDisplayStartX,Menu_State.FocusLine+MenuItemDisplayStartY);
 160   1       
 161   1      //是否显示每行菜单前的指示  0 否 1是 ,推荐字符液晶使用,图形液晶用反白
 162   1      #if  FocusPointDisply==1 
                  //显示前面的指针
                  LCD_setpos(MenuPointX,Menu_State.FocusLine+MenuItemDisplayStartY);
                  LCD_disp_Putchar(MenuPointASCII);
              #endif   
 167   1        
 168   1      #if   FocusReverse==1
 169   1          //图像反色显示 0 否 1是,执行此命令后的所有操作均是按照设置显示
 170   1          LCD_disp_SetReverse(0);
 171   1      #endif 
 172   1      
 173   1      
 174   1      }
 175          
 176          //菜单显示更新函数
 177          void UpdatedisplayMenuPanel()
 178          {
 179   1          unsigned char i,DisplayLenCount;
C51 COMPILER V8.05a   MENU                                                                 09/22/2009 20:36:58 PAGE 4   

 180   1      
 181   1          MenuItemStruct *p;
 182   1          p=MenuPanel[Menu_State.CurrentPanel].MenuPanelItem+Menu_State.ItemStartDisplay;
 183   1          DisplayLenCount=MenuPanel[Menu_State.CurrentPanel].MenuItemCount-Menu_State.ItemStartDisplay ;
 184   1          if (DisplayLenCount>ScreenHLine)

⌨️ 快捷键说明

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