📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 11/02/2007 15:16:55 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //========================================================================
2 // 工程名称:Menu_MzLH01_MCS51.spj
3 // 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
4 // 联系方式:QQ 644272644
5 // 版权所有:北京铭正同创科技有限公司 www.mzdesign.com.cn
6 // 适应芯片: S51/S52/MCS51兼容MCU
7 // 实现功能: 以MzL02-12864 带LCD显示模块为显示平台的MzMenu_GUI软件包
8 // 的演示程序
9 //
10 // 系统要求: PC with CPU 233MHz,128MB RAM,
11 // Keil uVision 2.0及以上版本
12 //
13 // 涉及的库:(a)
14 //
15 // 组成文件:
16 // main.c ----主程序文件
17 // Driver/LCD_Driver/ ----LCD驱动程序
18 // Driver/Key_Service/ ----键盘扫描程序
19 // MzMenu_GUI/ ----MzMenu_GUI的软件包源码
20 //
21 // 硬件连接:
22 // LCD DB0~DB7 ---P0.0~P0.7
23 // LCD EP ---P2.4
24 // LCD RW ---P2.3
25 // LCD A0 ---P2.2
26 // LCD Reset ---P2.1
27 // LCD CS ---P2.0
28 // LCM 3.3V供电~~~(建议)
29 //
30 // Key1 接P2.0
31 // Key2 接P2.1
32 // Key3 接P2.2
33 // 键盘的公共端接地,接键盘的端口接上拉电阻
34 //
35 //
36 // 当前版本: V1.0
37 // 日期: 2007-07-26
38 //
39 // 参考文件:
40 // 维护记录:
41 //-------------------------------------------------------------------
42 // Version 2007-07-26-V10 Modified By Xinqiang Zhang(小丑)
43 //
44 //========================================================================
45 #include "./Driver/LCD_Driver/LCD_Dis.h"
46 #include "./Driver/Key_Service/Key.h"
47 #include "./MzMenu_GUI/Menu_GUI.h"
48
49 void Show_DotTest(void);
50 void Show_LineTest(void);
51 void Show_RectanglTest(void);
52 void Show_HelpTest(void);
53 void CharTest_Menu(void);
54
55 void Show_CharTest(void);
C51 COMPILER V8.08 MAIN 11/02/2007 15:16:55 PAGE 2
56 void Show_StringTest(void);
57 void Show_ChTest(void);
58 //========================================================================
59 // 文件名: main.c
60 // 作 者: xinqiang Zhang(小丑) (email: xinqiang@Mzdesign.com.cn)
61 // 日 期: 2007/07/26
62 // 描 述: 以MzLH01-12864 带汉字库LCD显示模块为显示平台的MzMenu_GUI软件包
63 // 的演示程序
64 //
65 // 参 考: 无
66 // 版 本:
67 // 2007/07/26 First version Mz Design
68 //========================================================================
69 void main(void)
70 {
71 1 //add your code here
72 1 unsigned char uiKey=0;
73 1 //uiKey用于存放扫描的键值状态
74 1 unsigned char Item_Num,Update_Flag,Enter_Flag=0;
75 1 //Item_Num:当前菜单界面当中共有几项菜单项,刷新时使用
76 1 //Update_Flag:菜单界面刷新标识
77 1 //Enter_Flag:确定键按下标识~~
78 1 unsigned char PageItem_Num;
79 1 //PageItem_Num:每页(全显示屏内)可以显示多少个菜单项
80 1 unsigned char First_Index=0,Active_Index=0,Temp_Index=0;
81 1 //First_Index:当前处在显示屏当中的最前面的菜单项序号
82 1 //Active_Index:当前指向的菜单项,即当前活动的菜单项
83 1 //Temp_Index:中间变量
84 1
85 1 Key_Initial(); //键盘扫描初始化(端口)
86 1
87 1 LCD_Init(); //初始化LCD
88 1 Item_Num = GetMLNum(Menu_List01); //获取要显示的菜单的菜单项个数
89 1 PageItem_Num = GetMLiNum_Page((unsigned char **)Menu_List01); //获取要显示的菜单的页数
90 1 Initial_Menu((unsigned char**)Menu_List01);
91 1 while(1)
92 1 {
93 2
94 2 uiKey = Key_Get(); //获取键值
95 2 if(uiKey) //如有键按下则响应
96 2 {
97 3 switch(uiKey) //判断键值进行分支控制界面
98 3 {
99 4 case 3: //确定键按下
100 4 Enter_Flag=1; //enter flag set
101 4 break;
102 4 case 2: //down 向下键按下
103 4 if(Active_Index<Item_Num)
104 4 {
105 5 Active_Index++;
106 5 if(Temp_Index<PageItem_Num-1) Temp_Index++;
107 5 else if(First_Index<Item_Num) First_Index++;
108 5 Update_Flag = 1;
109 5 }
110 4 break;
111 4 case 1: //up 向上键按下
112 4 if(Active_Index>0)
113 4 {
114 5 Active_Index--;
115 5 if(Temp_Index>0) Temp_Index--;
116 5 else if(First_Index>0) First_Index--;
117 5 Update_Flag = 1;
C51 COMPILER V8.08 MAIN 11/02/2007 15:16:55 PAGE 3
118 5 }
119 4 break;
120 4 default:break;
121 4 }
122 3 }
123 2 if(Update_Flag) //Update_Flag为1时刷新菜单
124 2 {
125 3 UpDate_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
126 3 Update_Flag=0;
127 3 }
128 2 if(Enter_Flag) //有确定键按下时,则进入相应的功能函数
129 2 {
130 3 Enter_Flag = 0;
131 3 switch(Active_Index)
132 3 {
133 4 case 0: //这里仅定义了可以响应第一项菜单
134 4 Show_DotTest();
135 4 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
136 4 Update_Flag = 1;
137 4 break;
138 4 case 1:
139 4 Show_LineTest();
140 4 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
141 4 Update_Flag = 1;
142 4 break; //如感兴趣可以自己加进去玩玩
143 4 case 2:
144 4 Show_RectanglTest();
145 4 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
146 4 Update_Flag = 1;
147 4 break;
148 4 case 3:
149 4 CharTest_Menu();
150 4 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
151 4 Update_Flag = 1;
152 4 break;
153 4 case 4:
154 4 Show_HelpTest();
155 4 Redraw_Menu(First_Index,Active_Index,(unsigned char**)Menu_List01);
156 4 Update_Flag = 1;
157 4 break;
158 4 case 5: break;
159 4 default:break;
160 4 }
161 3 }
162 2 KeyScan_Service(); //键盘扫描的服务程序,最好在1KHz的定时/时基中断调用
163 2 }
164 1 }
165 //绘点菜单项响应函数
166 void Show_DotTest(void)
167 {
168 1 unsigned int Key=0;
169 1 unsigned Exit_flag=1;
170 1 ClrScreen(0); //清屏
171 1 SetPaintMode(0,1); //设置绘图模式及前景色
172 1 PutPixel(0,0); //绘制点
173 1 PutPixel(2,0);
174 1 PutPixel(4,0);
175 1 PutPixel(6,0);
176 1 PutPixel(8,0);
177 1 PutPixel(9,0);
178 1 PutPixel(10,0);
179 1 PutPixel(0,2);
C51 COMPILER V8.08 MAIN 11/02/2007 15:16:55 PAGE 4
180 1 PutPixel(0,4);
181 1 PutPixel(0,6);
182 1 PutPixel(0,8);
183 1 PutPixel(0,10);
184 1
185 1 while(Exit_flag)
186 1 {
187 2 Key = Key_Get();
188 2 if(Key!=0)
189 2 Exit_flag = 0; //任意键按下则返回
190 2 KeyScan_Service();
191 2 }
192 1 }
193 //绘直线菜单项响应函数
194 void Show_LineTest(void)
195 {
196 1 unsigned int Key=0;
197 1 unsigned Exit_flag=1;
198 1 ClrScreen(0); //清屏
199 1 SetPaintMode(0,1); //设置绘图模式及前景色
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -