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