📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SRC\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(main.obj)
line level source
1 //***********************************************************
2 //*标题:自制板实验 - ZZ005_12864LCD(带汉字库)菜单演示
3 //*硬件:自制板
4 //*文件:ZZ005.c
5 //*日期:2006-1-1
6 //*版本:1.0
7 //*作者:lluct
8 //*邮箱:lluct@hotmail.com
9 //*********************************************************
10 //*描述:
11 //*
12 //* 按KEY1键进行菜单选择
13 //*********************************************************
14 //*【版权】 lluct, GPL
15 //*【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!
16 //*********************************************************
17 //头文件
18 #include <regx52.h>
19 #include <intrins.h>
20 #include <string.h>
21
22 #define uchar unsigned char //自定义关键字
23 //-----------------------------------------------
24 //TS12864并口相关设定//
25 #define BUSY_FLAG P0_7 //液晶模块忙标志
26 #define BG_LED_SET P1_7 //液晶背景光控制
27 #define MPU_RS_CH P2_0 //寄存器选择输入
28 #define MPU_RW_CH P2_1 //读写控制
29 #define MPU_ENABLE P2_2 //使能控制
30 #define MPU_PS_CH P2_3 //串/并传输控制
31 #define MPU_RESET P2_5 //液晶复位控制
32 #define LCD_DATA P0 //液晶数据口
33 //-----------------------------------------------
34 #define LOW 0 //低电平
35 #define HIGH 1 //高电平
36 #define OFF 0 //逻辑关
37 #define ON 1 //逻辑开
38 //-----------------------------------------------
39 //液晶模块指令集定义
40 #define cClearDisplay 0x01 //清显示指令
41 #define cEntryModeSet 0x06 //设置输入模式
42 #define cDisplayOnCtrl 0x0c //设置开显控制
43 #define cFunctionSetB 0x30 //功能设定(基本指令)
44 #define cFunctionSetE 0x34 //功能设定(扩充指令)
45 #define cFuncDrawOn 0x36 //设置绘图功能
46 //-----------------------------------------------
47 uchar lcdPosX, lcdPosY; //X,Y坐标
48 uchar halfScr, halfLineCnt, basicBlock; //半屏,半屏行数,N*8块
49 uchar data key1Times; //按键1次数
50 uchar key1Save, key1Check; //按键1保存和检测
51 //-----------------------------------------------
52 uchar code powerOnPhoto [] = { //开机画面
53 0xFF,0xFF,0xFF,0xFE,0x00,0x3E,0x18,0x00,
54 0x00,0x00,0x00,0x00,0x1F,0x3F,0xFF,0xFF,
55 0xFF,0xFF,0xFF,0xF2,0x00,0x1E,0x1C,0x00,
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 2
56 0x00,0x00,0x00,0x00,0x07,0xBF,0xFF,0xFF,
57 0xFF,0xFF,0xFF,0xF3,0x00,0x0E,0x0C,0x00,
58 0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
59 0xFF,0xFF,0xFF,0xF5,0x80,0x04,0x06,0x00,
60 0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,
61 0xFF,0xFF,0xFF,0xFC,0x80,0x00,0x06,0x00,
62 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,
63 0xFF,0xFF,0xFF,0xFE,0xC0,0x00,0x02,0x00,
64 0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,
65 0xFF,0xFF,0xFF,0xFF,0x7C,0x00,0x03,0x00,
66 0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
67 0xFF,0xFF,0xFF,0xFF,0xFD,0x00,0x03,0x00,
68 0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
69 0xFF,0xFF,0xFF,0xFF,0xFD,0x1C,0x03,0x00,
70 0x00,0x00,0x04,0x20,0x00,0x1F,0xFF,0xFF,
71 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
72 0x00,0x00,0x3E,0x2C,0x00,0x0F,0xFF,0xFF,
73 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
74 0x00,0x00,0x7E,0xE9,0x00,0x0F,0xFF,0xFF,
75 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
76 0x00,0x00,0xFF,0xFF,0x00,0x07,0xFF,0xFF,
77 0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xE0,0x00,
78 0x00,0x01,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,
79 0xFF,0xFF,0xFF,0xFF,0xCF,0xF8,0xE0,0x00,
80 0x00,0x03,0xFF,0xFF,0xF0,0x03,0xFF,0xFF,
81 0xFF,0xFF,0xFF,0xFF,0xEF,0xFC,0xE0,0x60,
82 0x00,0x03,0xDF,0xFF,0xF8,0x03,0xFF,0xFF,
83 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x60,
84 0x00,0x03,0xFF,0xF9,0xFC,0x00,0xFF,0xFF,
85 0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x60,
86 0x00,0x00,0x7F,0xF3,0xFE,0x01,0xFF,0xFF,
87 0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x60,
88 0x00,0x00,0x1F,0x7F,0xFE,0x01,0xFF,0xFF,
89 0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x60,
90 0x00,0x00,0x08,0x1F,0xFA,0x01,0x7F,0xFF,
91 0xFF,0xFF,0xFF,0xB0,0x60,0x00,0x00,0xE0,
92 0x00,0x00,0x00,0x00,0x78,0x00,0x7F,0xFF,
93 0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x00,0xE0,
94 0x00,0x00,0x00,0x00,0x39,0x00,0x7F,0xFF,
95 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0xE0,
96 0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
97 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x01,0xE0,
98 0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
99 0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x01,0xE0,
100 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
101 0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x01,0xC0,
102 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
103 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x03,0xC0,
104 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
105 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xC0,
106 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
107 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xC0,
108 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
109 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0x80,
110 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
111 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0x80,
112 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
113 0xFF,0xFF,0xFF,0x88,0x00,0x00,0x0E,0x00,
114 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
115 0xFF,0xFF,0xFF,0x80,0x00,0x00,0x1C,0x30,
116 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
117 0xFF,0xFF,0xFF,0xA0,0x00,0x00,0x1C,0x38,
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 3
118 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
119 0xFF,0xFF,0xFF,0x90,0x00,0x00,0x18,0x38,
120 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
121 0xFF,0xFF,0xFF,0x98,0x00,0x00,0x18,0xFC,
122 0x0E,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
123 0xFF,0xFF,0xFF,0x80,0x00,0x00,0x19,0xFD,
124 0x1F,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,
125 0xFF,0xFF,0xFF,0xC4,0x00,0x00,0x39,0xFE,
126 0xBF,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,
127 0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x31,0xFE,
128 0xFF,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,
129 0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x38,0xFF,
130 0xC7,0x80,0x00,0x00,0x00,0x00,0xBF,0xFF,
131 0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x38,0x75,
132 0x87,0x80,0x00,0x00,0x00,0x01,0xBF,0xFF,
133 0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x38,0x70,
134 0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,
135 0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x3C,0xC0,
136 0x00,0x30,0x00,0x00,0x00,0x01,0xFF,0xFF,
137 0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x1F,0xE0,
138 0x00,0x20,0x00,0x00,0x00,0x02,0xFF,0xFF,
139 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
140 0x00,0x00,0x00,0x00,0x00,0x02,0xFF,0xFF,
141 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
142 0x00,0x00,0x00,0x00,0x00,0x06,0xFF,0xFF,
143 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
144 0x00,0x00,0x00,0x00,0x00,0x04,0xFF,0xFF,
145 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
146 0x00,0x00,0x00,0x00,0x00,0x05,0xFF,0xFF,
147 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
148 0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,
149 0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
150 0x00,0x00,0x00,0x00,0x00,0x0B,0xF7,0xFE,
151 0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
152 0x00,0x00,0x00,0x00,0x00,0x13,0xF7,0xFF,
153 0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
154 0x00,0x00,0x00,0x00,0x00,0x13,0xFF,0xFF,
155 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
156 0x00,0x00,0x00,0x00,0x00,0x11,0xFF,0xFF,
157 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
158 0x00,0x00,0x00,0x00,0x00,0x11,0xFD,0xFF,
159 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x01,0x18,
160 0x00,0x00,0x00,0x00,0x00,0x01,0xBC,0xF7,
161 0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x07,0x7F,
162 0xFE,0x00,0x00,0x00,0x00,0x03,0xBC,0xFF,
163 0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xFF,
164 0xFE,0xC0,0x00,0x00,0x00,0x03,0xFE,0xEF,
165 0xFF,0xFF,0xFF,0xF9,0x00,0x00,0x7F,0xFF,
166 0xFF,0xC0,0x00,0x00,0x00,0x03,0xFE,0x6F,
167 0xFF,0xFF,0xFF,0xF9,0x00,0x00,0x7F,0xE3,
168 0x9F,0xC0,0x00,0x00,0x00,0x03,0xFE,0xFF,
169 0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xC0,
170 0x0F,0xF0,0x00,0x00,0x00,0x07,0xFE,0xFF,
171 0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFE,0xC0,
172 0x05,0xFC,0x00,0x00,0x00,0x07,0xCE,0xFF,
173 0xFF,0xFF,0xFF,0xFC,0x00,0x03,0xFF,0xCB,
174 0x4D,0xFF,0x80,0x00,0x00,0x07,0xFE,0xFF,
175 0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFC,0x00,
176 0x00,0xFF,0xC0,0x00,0x00,0x0E,0x00,0xF7,
177 0xFF,0xFF,0xFF,0xFE,0x00,0x01,0xC0,0x00,
178 0x00,0x0F,0xC0,0x00,0x00,0x06,0x01,0xFF,
179 0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x1D,0x00,
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 4
180 0x00,0x01,0xC0,0x00,0x00,0x0E,0x03,0xFF
181 };
182 //-----------------------------------------------
183 sbit KEY1 = P3^2; //按键1定义
184 sbit KEY2 = P3^3; //按键2定义
185 sbit KEY3 = P3^4; //按键3定义
186 sbit KEY4 = P3^5; //按键4定义
187 sbit BEEP = P3^7; //蜂鸣器定义
188 //-----------------------------------------------
189 //子程序声明和用法
190 bit scanKey1 (void);
191 //按键1检测
192 void procKey (void);
193 //按键处理子程序
194 void lcdInit (void);
195 //初始化LCD子程序
196 void lcdClear (void);
197 //清除LCD文本屏幕子程序
198 void lcdWriteCommand (uchar Command);
199 //写入控制命令到LCD子程序
200 //输入参数:LCD控制指令
201 void lcdWriteData (uchar Data);
202 //写入显示数据到LCD子程序
203 //输入参数:显示数据
204 void checkLcdBusy (void);
205 //检测LCD忙碌子程序
206 void displayPhoto (uchar *bmp, uchar bmpCls);
207 //全屏显示图形子程序
208 //输入参数:*bmp=图形数据
209 //bmpCls=清除图形屏幕选项(OFF为不清屏,即显示图形,ON为清屏)
210 void convertChar (uchar CX, CY, width);
211 //字符反白显示
212 //输入参数:CX=要反白字符的行(0-3)
213 //CY=要反白字符的列(0-7)
214 //width=要反白字符的长度(1-16)
215 void wrPosition (void);
216 //坐标写入子程序
217 void dispString (uchar X, Y, speed, uchar *msg);
218 //显示字符串子程序
219 //输入参数:X=行(0-3), Y=列(0-7), speed=显示速度(毫秒), msg=字符数据
220 void beepBl (void);
221 //蜂鸣器响一声子程序
222 void delayMs (uchar ms);
223 //延时(毫秒)子程序
224 //输入参数:毫秒数
225 void delaySec (uchar sec);
226 //延时(秒)子程序
227 //输入参数:秒数
228 //===============================================
229
230
231 void main (void)
232 {
233 1 uchar InitLine;
234 1 BG_LED_SET = LOW;
235 1
236 1 key1Times = 0;
237 1 key1Check = 0x01;
238 1 lcdInit ();
239 1
240 1 lcdClear();
241 1 displayPhoto(powerOnPhoto, OFF);
C51 COMPILER V7.50 MAIN 12/30/2005 12:13:31 PAGE 5
242 1 delaySec(6);
243 1 lcdClear();
244 1 dispString(0, 0, 1, "┏━━━━━━┓");
245 1 dispString(1, 0, 1, "┃12864LCD测试┃");
246 1 dispString(2, 0, 1, "┃画面人物宝儿┃");
247 1 dispString(3, 0, 1, "┗━━━━━━┛");
248 1 delaySec(6);
249 1 lcdClear();
250 1 dispString(0, 1, 100, "请稍等片刻");
251 1 dispString(2, 0, 100, "系统初始化。。。");
252 1 for (InitLine = 0; InitLine < 17; InitLine++)
253 1 {
254 2 convertChar(2, 0, InitLine);
255 2 delaySec(2);
256 2 }
257 1 lcdClear();
258 1 dispString(2, 0, 1, "按K1键继续。。。");
259 1 convertChar(2, 0, 16);
260 1
261 1 while(1)
262 1 {
263 2 if (scanKey1())
264 2 {
265 3 delayMs(10);
266 3 if (scanKey1())
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -