📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN D:\下载文件\LCD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C BROWSE DEBUG OBJECTEXTEND OBJECT(D:\下载文件\LCD.obj)
line level source
1 //*********************************************************
2 // 简易数字频率计
3 //*********************************************************
4 #include <reg52.H>
5 #include <absacc.h>
6 #include<intrins.h>
7 #include<math.h>
8
9 #define lcdDl XBYTE [0xA201]
10 #define lcdDr XBYTE [0xA301]
11 #define lcdlCommand XBYTE [0xA200]
12 #define lcdrCommand XBYTE [0xA300]
13
14 #define strat_yaddr 0x40 //0x40 --0x7f
15 #define strat_xaddr 0xb8 //0xb8--0xbf
16 #define strat_dispaddr 0xc0 //液晶的开始行选择 0xc0-0xff
17 #define dataleng 16*8 //全屏8*8点阵容量
18
19 sbit RW=P1^6; //液晶的读写控制信号
20 sbit P1_4=P1^4;
21 sbit P1_3=P1^3;
22
23 sbit reset=P1^0; //FPGA清0,负跳变有效
24 sbit P1_1=P1^1; //预置门信号
25 sbit ad=P1^2; //方式选择
26
27 #define KEY XBYTE [0xA100]
28 #define LED1 XBYTE [0xA000]
29 #define LED2 XBYTE [0xA001]
30 #define LED3 XBYTE [0xA002]
31 #define LED4 XBYTE [0xA003]
32 #define LED5 XBYTE [0xA004]
33 #define LED6 XBYTE [0xA005]
34 #define LED7 XBYTE [0xA006]
35 #define LED8 XBYTE [0xA007]
36
37 #define sxchar static unsigned char xdata
38 #define schar static unsigned char
39 #define uchar unsigned char
40 #define uint unsigned int
41 #define ulong unsigned long
42
43 //*******************************************************************
44
45 //变量说明
46 sxchar fpga[32] _at_ 0xa800; //FPGA地址
47 void pt0m1(void); //定时器0工作模式1初始化
48 void readkey(void);
49 void lcdreset(void); //LCD显示初始化子程序
50 void clear(void); //全屏清除
51 void clear_hang(uchar hang);
52 void leddisp(void);
53 void lcdlon_off(uchar D);
54 void setlstartx(uchar D);
55 void setlstarty(uchar D);
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 2
56 void setlstartline(uchar D);
57 void lcdron_off(uchar D);
58 void setrstartx(uchar D);
59 void setrstarty(uchar D);
60 void setrstartline(uchar D);
61 void lcdlwrite(uchar D);
62 void lcdrwrite(uchar D);
63 void hanzi_lcd(uchar code *word_data, uchar index ,uchar len);
64 uchar code mcbce[]={
65
66 0x04,0x34,0xC4,0x04,0xC4,0x3C,0x20,0x10,
67 0x0F,0xE8,0x08,0x08,0x28,0x18,0x00,0x00,
68 0x10,0x08,0x06,0x01,0x82,0x8C,0x40,0x30,
69 0x0C,0x03,0x0C,0x10,0x60,0xC0,0x40,0x00,
70
71 0x40,0x42,0x44,0xC8,0x00,0xFC,0x04,0x02,
72 0x82,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
73 0x00,0x40,0x20,0x1F,0x20,0x47,0x42,0x41,
74 0x40,0x7F,0x40,0x42,0x44,0x63,0x20,0x00,
75
76 0x40,0x20,0xF8,0x07,0x04,0xF4,0x14,0x14,
77 0x14,0xFF,0x14,0x14,0x14,0xF6,0x04,0x00,
78 0x00,0x00,0xFF,0x00,0x80,0x43,0x45,0x29,
79 0x19,0x17,0x21,0x21,0x41,0xC3,0x40,0x00,
80
81 0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,
82 0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,
83 0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x7F,
84 0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00,
85
86 0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,
87 0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
88 0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
89 0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,
90
91 0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
92 0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
93 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
94 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
95
96 0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9F,
97 0x81,0x81,0x81,0x9F,0xA0,0x20,0x20,0x00,
98 0x00,0x00,0x00,0x7F,0xA0,0x90,0x40,0x43,
99 0x2C,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,
100
101 0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,
102 0x40,0xFF,0x40,0x40,0x40,0x60,0x40,0x00,
103 0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,
104 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
105 0x10,0x0C,0x04,0x44,0x8C,0x94,0x35,0x06,
106 0xF4,0x04,0x04,0x04,0x04,0x14,0x0C,0x00,
107 0x02,0x82,0x82,0x42,0x42,0x23,0x12,0x0E,
108 0x03,0x0A,0x12,0x22,0x42,0xC3,0x02,0x00,
109
110 0x02,0xFA,0x02,0x02,0xFF,0x42,0x20,0x50,
111 0x4C,0x43,0x4C,0x50,0x20,0x60,0x20,0x00,
112 0x10,0x31,0x11,0x49,0x89,0x7F,0x42,0x5C,
113 0x40,0x4F,0x60,0x58,0x47,0x60,0x40,0x00,
114
115 0x40,0x48,0x44,0x43,0xF6,0x4A,0x43,0x0A,
116 0xE4,0x23,0x26,0x2A,0x22,0xF3,0x22,0x00,
117 0x20,0x10,0x0C,0x03,0xFF,0x02,0x04,0x00,
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 3
118 0xFF,0x49,0x49,0x49,0x49,0xFF,0x00,0x00
119 };
120
121 uchar code author[]={
122 0x40,0x60,0x5E,0x48,0x48,0xFF,0x48,0x4C,
123 0x68,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,
124 0x00,0x00,0x3F,0x01,0x01,0xFF,0x11,0x21,
125 0x1F,0x00,0x07,0x40,0x80,0x7F,0x00,0x00,
126
127 0x80,0x40,0x20,0xF8,0x87,0x40,0x30,0x0F,
128 0xF8,0x88,0x88,0xC8,0x88,0x0C,0x08,0x00,
129 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
130 0xFF,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,
131
132 0x20,0x20,0x24,0x24,0x24,0xA4,0x7F,0x24,
133 0x34,0x2C,0x24,0xA2,0x20,0x30,0x20,0x00,
134 0x10,0x08,0x04,0x02,0xFF,0x49,0x49,0x49,
135 0x49,0x49,0x49,0xFF,0x01,0x00,0x00,0x00
136 };
137
138 uchar code name[]={
139 0x08,0x08,0x88,0xA4,0xAC,0xEA,0xAA,0xF9,
140 0xAA,0xEA,0xAC,0xA4,0x88,0x08,0x08,0x00,
141 0x88,0xD4,0x96,0xFD,0x96,0xD4,0x88,0x08,
142 0x88,0xD4,0x96,0xFD,0x96,0xD4,0x88,0x00,
143
144 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,
145 0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
146 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
147 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
148 0x40,0x20,0x1F,0x08,0xF8,0x08,0x0C,0x88,
149 0x00,0xF8,0x08,0x08,0x08,0xFC,0x08,0x00,
150 0x81,0x41,0x21,0x19,0x07,0x09,0x31,0x01,
151 0x01,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00
152
153 };
154
155
156
157
158 void delay_10us(void)
159 {
160 1 uchar n;
161 1 for(n=0;n<5;n++)
162 1 {}
163 1 }
164
165
166
167
168
169 //*******************************************************************
170
171
172
173
174 void lcdreset(void)
175 {
176 1 lcdlon_off(0x3F);
177 1 lcdron_off(0x3F);
178 1 setlstartline(strat_dispaddr);
179 1 setrstartline(strat_dispaddr);//初始化
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 4
180 1 clear();
181 1 }
182
183 //////////////////////////////////
184 void lcdlon_off(uchar D)
185 {RW=0;
186 1 lcdlCommand=D;
187 1 _nop_();
188 1 }
189
190 void setlstartx(uchar D)
191 {RW=0;
192 1 lcdlCommand=D;
193 1 _nop_();
194 1 }
195
196 void setlstarty(uchar D)
197 {
198 1 RW=0;
199 1 lcdlCommand=D;
200 1 _nop_();
201 1 }
202
203 void setlstartline(uchar D)
204 {
205 1 RW=0;
206 1 lcdlCommand=D;
207 1
208 1 _nop_();
209 1 }
210 //////////////////////////////
211
212 void lcdron_off(uchar D)
213 {RW=0;
214 1 lcdrCommand=D;
215 1 _nop_();
216 1 }
217
218 void setrstartx(uchar D)
219 {RW=0;
220 1 lcdrCommand=D;
221 1 _nop_();
222 1 }
223
224 void setrstarty(uchar D)
225 {
226 1 RW=0;
227 1 lcdrCommand=D;
228 1 _nop_();
229 1 }
230
231 void setrstartline(uchar D)
232 { RW=0;
233 1 lcdrCommand=D;
234 1 _nop_();
235 1 }
236 ///////////////////////////////////
237 void lcdlwrite(uchar D)
238 {RW=0;
239 1 lcdDl=D;
240 1 _nop_();
241 1 }
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 5
242
243 void lcdrwrite(uchar D)
244 {RW=0;
245 1 lcdDr=D;
246 1 _nop_();
247 1 }
248
249 void clear(void)
250 { uchar i;
251 1 for(i=1;i<=8;i++)
252 1 clear_hang(i);
253 1 }
254
255 void clear_hang(uchar hang)
256 {
257 1
258 1 uchar i,j;
259 1
260 1 for(i=0;i<8;i++)
261 1 {
262 2 setlstartx(strat_xaddr+hang-1);
263 2 for(j=0;j<64;j++)
264 2 {
265 3 setlstarty(strat_yaddr+j);
266 3 lcdlwrite(0x00);
267 3 _nop_();
268 3 }
269 2 setrstartx(strat_xaddr+hang-1);
270 2 for(j=0;j<64;j++)
271 2 {
272 3 setrstarty(strat_yaddr+j);
273 3 lcdrwrite(0x00);
274 3 _nop_();
275 3 }
276 2 }
277 1
278 1 }
279
280 void hanzi_lcd(uchar code *word_data, uchar index,uchar len )
281 {
282 1 uchar i,iloop;
283 1 uchar j;
284 1 uchar k;
285 1 uchar dex;
286 1 for(iloop=0;iloop<len;iloop++)
287 1 {
288 2 dex=index+iloop;
289 2 if( (dex % 8)< 4)
290 2 { j=(dex % 4)*16;
291 3 k=(dex/8)*2;
292 3 setlstartx(strat_xaddr+k);
293 3
294 3 for(i=0;i<16;i++)
295 3 {
296 4 setlstarty(strat_yaddr+j+i);
297 4 lcdlwrite(*(word_data+i+iloop*32));
298 4 }
299 3
300 3 setlstartx(strat_xaddr+k+1);
301 3 for(i=0;i<16;i++)
302 3 {
303 4 setlstarty(strat_yaddr+i+j);
C51 COMPILER V7.50 LCD 09/16/2008 09:13:02 PAGE 6
304 4 lcdlwrite(*(word_data+i+16+iloop*32));
305 4 }
306 3 }
307 2
308 2 else if ((dex%8)>=4)
309 2 {
310 3 j=(dex%4)*16;
311 3 k=(dex/8)*2;
312 3 setrstartx(strat_xaddr+k);
313 3 for(i=0;i<16;i++)
314 3 {
315 4 setrstarty(strat_yaddr+j+i);
316 4 lcdrwrite(*(word_data+i+iloop*32));
317 4 }
318 3 setrstartx(strat_xaddr+k+1);
319 3 for(i=0;i<16;i++)
320 3 {
321 4 setrstarty(strat_yaddr+i+j);
322 4 lcdrwrite(*(word_data+i+16+iloop*32));
323 4 }
324 3 }
325 2 }
326 1 }
327
328
329
330 void main()
331 {
332 1
333 1 lcdreset();
334 1 clear(); //LCD显示初始化
335 1 // init_mcu();
336 1 while(1)
337 1 {
338 2
339 2 hanzi_lcd(mcbce,0,11); //其中hanzi_lcd是汉字显示函数 第一个参数对应的是字模数组,第二个参数对应的是
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -