📄 menu_gui.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 + -