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

📄 menu_gui.lst

📁 本代码实现的是12864图形LCD模块
💻 LST
字号:
C51 COMPILER V8.08   MENU_GUI                                                              11/02/2007 15:16:55 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MENU_GUI
OBJECT MODULE PLACED IN Menu_GUI.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MzMenu_GUI\Menu_GUI.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Menu_GUI.lst) OBJEC
                    -T(Menu_GUI.obj)

line level    source

   1          //========================================================================
   2          // 文件名: Menu_GUI.c
   3          // 作  者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
   4          //                      www.Mzdesign.com.cn
   5          // 日  期: 2007/03/24
   6          // 描  述: 菜单应用范例程序--UI显示刷新控制函数,配合MzDesign提供的通用版
   7          //                      LCD基础驱动程序
   8          //                      
   9          //
  10          // 参  考: 
  11          // 版  本:
  12          //      2007/03/24      First version    Mz Design
  13          //      2007/07/26      V1.01                    Mz Design
  14          //                      修改Show_Item函数,使之适应不同的LCD模块的驱动
  15          //
  16          //========================================================================
  17          
  18          #include "./Driver/LCD_Driver/LCD_Dis.h"
  19          #include "./Driver/LCD_Driver/LCD_Config.h"
  20          #include "./MzMenu_GUI/Menu_GUI_config.h"
  21          
  22          UCHAR Y_WIDTH_MENU=16;
  23          UCHAR X_SPACE_FRONT=10;
  24          
  25          UCHAR Dis_Menu_Num=0;
  26          
  27          UCHAR Font_GB=0;
  28          UCHAR Font_String=0;
  29          //=====================================================================//
  30          //函数:UCHAR ShowMenu_Item(UCHAR y,UINT* Menu_String,UCHAR Font_Color)
  31          //描述:显示菜单项子函数
  32          //参数:space_front  显示缩进值
  33          //              y            Y轴坐标
  34          //              Menu_String  菜单项链表的首地址指针
  35          //返回:显示溢出情况  0:溢出    1:无溢出
  36          //注意:无        
  37          //=====================================================================//
  38          UCHAR ShowMenu_Item(UCHAR y,UCHAR* Menu_String,UCHAR Font_Color)
  39          {
  40   1              UCHAR *uiTemp;
  41   1              UCHAR uiTemp1;
  42   1              UCHAR i,x,Char_Nmb;
  43   1              x = X_SPACE_FRONT;                                      //Mune show front space....
  44   1              Char_Nmb = (UCHAR)Menu_String[0];
  45   1              if(Char_Nmb<0xA1)
  46   1              {
  47   2                      for(i=1;i<=Char_Nmb;i++)
  48   2                      {
  49   3                              uiTemp = (UCHAR*)(Menu_String+i);
  50   3                              uiTemp1 = (UCHAR)*uiTemp;
  51   3                              if(uiTemp1>=128) 
  52   3                              {
  53   4                                      FontSet(Font_GB,Font_Color);    //选择汉字字库
  54   4                                      uiTemp1 = uiTemp1-128;
C51 COMPILER V8.08   MENU_GUI                                                              11/02/2007 15:16:55 PAGE 2   

  55   4                              }
  56   3                              else
  57   3                              {
  58   4                                      FontSet(Font_String,Font_Color);//选择ASCII码字库
  59   4                              }
  60   3                              PutChar(x,y,uiTemp1);
  61   3                              x = x+X_Witch;//GetASIIX();
  62   3      
  63   3                              if(x>=Dis_X_MAX) return 0;                      //横坐标溢出,返回零
  64   3                      }
  65   2              }
  66   1      #ifdef Hz_Lib_II
                      else
                      {
                              FontSet_cn(Font_String,Font_Color);
                              PutString_cn(x,y,(unsigned short *)Menu_String);
                      }
              #endif
  73   1              return 1;
  74   1      }
  75          //=====================================================================//
  76          //函数:void UpDate_Menu(UCHAR First_Index,UCHAR Menu_Index,UINT** Menu_List)
  77          //描述:刷新整屏菜单显示函数
  78          //参数:First_Index  当面显示页的第一条菜单号
  79          //              Menu_Index   当前处于选用的菜单项
  80          //              Menu_List    菜单资源链表指针
  81          //返回:无
  82          //注意:无        
  83          //=====================================================================//
  84          UCHAR First_Index_old=0xff;
  85          UCHAR y_Index_old = 0xff;
  86          void UpDate_Menu(UCHAR First_Index,UCHAR Menu_Index,UCHAR** Menu_List)
  87          {
  88   1              UINT y_width,y_Index;
  89   1              UCHAR List_Num,i;
  90   1              List_Num = (UINT)**Menu_List;
  91   1              y_width = Y_WIDTH_MENU;
  92   1              y_Index = 0;
  93   1              while(First_Index>List_Num) First_Index -= List_Num;
  94   1              if(List_Num>Dis_Menu_Num) List_Num = Dis_Menu_Num;
  95   1      //      if(Menu_Index>List_Num) return;
  96   1              if(First_Index_old!=First_Index)
  97   1              {
  98   2                      SetPaintMode(1,MENU_BACK_COLOR);
  99   2                      ClrScreen(0);                                                                   //清屏
 100   2                      SetPaintMode(1,MENU_SELE_COLOR);
 101   2                      if(y_Index_old==0xff)
 102   2                      {
 103   3                              Rectangle(0,0/*First_Index*y_width*/,Dis_X_MAX,/*First_Index*y_width+*/y_width-1,1);
 104   3                              i=First_Index+1;
 105   3                              ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i++],MENU_SELF_COLOR);
 106   3                              y_Index = y_Index+Y_WIDTH_MENU;
 107   3                              for(;i<List_Num+1;i++)
 108   3                              {
 109   4                                      ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_FONT_COLOR);
 110   4                                      y_Index = y_Index+Y_WIDTH_MENU;
 111   4                              }
 112   3                      }
 113   2                      else
 114   2                      {
 115   3                              y_Index_old = Menu_Index-First_Index;
 116   3                              Rectangle(0,y_Index_old*Y_WIDTH_MENU,Dis_X_MAX,y_Index_old*Y_WIDTH_MENU+Y_WIDTH_MENU-1,1);
C51 COMPILER V8.08   MENU_GUI                                                              11/02/2007 15:16:55 PAGE 3   

 117   3                              i=First_Index+1;
 118   3                              while(List_Num)
 119   3                              {
 120   4                                      if((i-1)==Menu_Index) ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_SELF_COLOR);
 121   4                                      else ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_FONT_COLOR);
 122   4                                      y_Index = y_Index+Y_WIDTH_MENU;
 123   4                                      i++;
 124   4                                      List_Num--;
 125   4                              }
 126   3                      }
 127   2                      First_Index_old = First_Index;
 128   2              }
 129   1              else
 130   1              {
 131   2                      y_Index = y_Index_old-First_Index_old;
 132   2                      y_Index = y_Index*Y_WIDTH_MENU;
 133   2                      SetPaintMode(1,MENU_BACK_COLOR);
 134   2                      Rectangle(0,y_Index/*y_Index_old*Y_WIDTH_MENU*/,Dis_X_MAX,/*y_Index_old*Y_WIDTH_MENU*/y_Index+Y_WIDTH_ME
             -NU-1,1);
 135   2                      ShowMenu_Item(y_Index,(UCHAR *)Menu_List[y_Index_old+1],MENU_FONT_COLOR);
 136   2                      y_Index = Menu_Index-First_Index;
 137   2                      y_Index = y_Index*Y_WIDTH_MENU;
 138   2                      SetPaintMode(1,MENU_SELE_COLOR);
 139   2                      Rectangle(0,/*Menu_Index*Y_WIDTH_MENU*/y_Index,Dis_X_MAX,/*Menu_Index*Y_WIDTH_MENU*/y_Index+Y_WIDTH_MENU
             --1,1);
 140   2                      ShowMenu_Item(y_Index,(UCHAR *)Menu_List[Menu_Index+1],MENU_SELF_COLOR);
 141   2              }
 142   1              y_Index_old = Menu_Index;
 143   1      }
 144          //=====================================================================//
 145          //函数:void Redraw_Menu(UCHAR First_Index,UCHAR Menu_Index,UINT** Menu_List)
 146          //描述:刷新整屏菜单显示函数
 147          //参数:First_Index  当面显示页的第一条菜单号
 148          //              Menu_Index   当前处于选用的菜单项
 149          //              Menu_List    菜单资源链表指针
 150          //返回:
 151          //注意:无        
 152          //=====================================================================//
 153          void Redraw_Menu(UCHAR First_Index,UCHAR Menu_Index,UCHAR** Menu_List)
 154          {
 155   1              UCHAR *Menu_Config;
 156   1              First_Index_old=0xff;
 157   1              Menu_Config = (UCHAR *)(*Menu_List);
 158   1              Font_GB = *(Menu_Config+1);
 159   1              Font_String = *(Menu_Config+2);
 160   1              Y_WIDTH_MENU = *(Menu_Config+3);
 161   1              X_SPACE_FRONT = *(Menu_Config+4);
 162   1              Dis_Menu_Num = (Dis_Y_MAX+1)/Y_WIDTH_MENU;
 163   1              UpDate_Menu(First_Index,Menu_Index,Menu_List);
 164   1      }
 165          //=====================================================================//
 166          //函数:void Initial_Menu(UINT** Menu_List)
 167          //描述:刷新整屏菜单显示函数
 168          //参数:Menu_List    菜单资源链表指针
 169          //返回:
 170          //注意:无        
 171          //=====================================================================//
 172          void Initial_Menu(UCHAR** Menu_List)
 173          {
 174   1              UCHAR *Menu_Config;
 175   1              First_Index_old=0xff;
 176   1              y_Index_old = 0xff;
C51 COMPILER V8.08   MENU_GUI                                                              11/02/2007 15:16:55 PAGE 4   

 177   1              Menu_Config = (UCHAR *)(*Menu_List);
 178   1              Font_GB = *(Menu_Config+1);
 179   1              Font_String = *(Menu_Config+2);
 180   1              Y_WIDTH_MENU = *(Menu_Config+3);
 181   1              X_SPACE_FRONT = *(Menu_Config+4);
 182   1              Dis_Menu_Num = (Dis_Y_MAX+1)/Y_WIDTH_MENU;
 183   1              UpDate_Menu(0,0,Menu_List);
 184   1      }
 185          //=====================================================================//
 186          //函数:unsigned int GetMLNum(unsigned int* Menu_List)
 187          //描述:获取菜单资源的菜单项个数函数
 188          //参数: Menu_List    菜单资源链表指针
 189          //返回:菜单项个数
 190          //注意:无        
 191          //=====================================================================//
 192          UCHAR GetMLNum(UCHAR **Menu_List)
 193          {
 194   1              UCHAR uiTemp;
 195   1      //      UCHAR code*Menu_Config;
 196   1              uiTemp/*Menu_Config*/ = (unsigned char)**Menu_List;
 197   1      //      uiTemp = (UCHAR)*Menu_Config;
 198   1              return uiTemp-1;
 199   1      }
 200          //=====================================================================//
 201          //函数:unsigned int GetMLiNum_Page(unsigned int* Menu_List)
 202          //描述:获取菜单资源在一屏可以显示的菜单项个数函数
 203          //参数: Menu_List    菜单资源链表指针
 204          //返回:菜单项个数
 205          //注意:无        
 206          //=====================================================================//
 207          UCHAR GetMLiNum_Page(UCHAR** Menu_List)
 208          {
 209   1              UCHAR uiTemp;
 210   1              UCHAR *Menu_Config;
 211   1              Menu_Config = (UCHAR *)(Menu_List[0]);
 212   1              uiTemp = *(Menu_Config+3);
 213   1              uiTemp = (Dis_Y_MAX+1)/uiTemp;                  //
 214   1              return uiTemp;
 215   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    751    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7      26
   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 + -