www.pudn.com > 320.rar > lcd.LST
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************************************************
2 ** 320240ALCD控制
3 **
4 **
5 **--------------当前版本信息----------------------------------------------------------------------------
6 ** 文件名: lcd.c
7 ** 创建人: 刘明宇
8 ** 日 期: 2005年10月11日
9 ** 描 述: LCD320240A控制的主文件
10 ** 硬件连接
11 ** 51 lcd
12 ** P0~7-------->D0~7
13 ** P2.7-------->cs
14 ** P2.6-------->A0
15 ** P1.0-------->Res
16 ** wr -------->wr
17 ** rd -------->rd
18 **
19 **--------------历史版本信息----------------------------------------------------------------------------
20 ** 无
21 **------------------------------------------------------------------------------------------------------
22 ** 修改人:
23 ** 日 期:
24 ** 描 述:
25 **
26 **------------------------------------------------------------------------------------------------------
27 ********************************************************************************************************/
28
29 #include <REG52.H>
30 #include <stdio.h>
31 #include <INTRINS.H>
32 #include <ABSACC.H>
33 #include "lcd.h"
34 #include "disdata.h"
35
36
37
38
39
40 /*LCD initial parameters*/
41 /*
42 在下面的数据里面,第四个0x27对应是显示的横向范围,8位除去
43 -------------------240128的SYSTEM SET 参数-------------------------------
44 unsigned char SYSTAB[8]={0x30,0x87,0x09,0x1d,0x64,0xa0,0x1e,0x00};
45
46 unsigned char SCRTAB[10]={0x00,0x00,0xa0,0x00,0x00,0xa0,0x00,0x80,0x00,0x00};
47
48 Uchar code ParaSysTable8[]= {
49 0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00 // P1-P8参数
50 };
51 */
52 BYTE code SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
53 //BYTE code SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
54 BYTE code SCRTAB[10]={0x00,0x00,0xf0,0x00,0x40,0xf0,0x00,0x80,0x00,0x00};
55
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 2
56 /****************************************************************************
57 * 名称:main
58 * 功能:主函数
59 * 入口参数:无
60 * 出口参数:无
61 ****************************************************************************/
62 void main(void)
63 {
64 1 BYTE i;
65 1 serial_init();
66 1 Lcd_res=0;
67 1 Lcd_res=1;
68 1 test_serial();
69 1
70 1 INITLCD();
71 1 CLRSCREEN();
72 1 FULLSCREEN();
73 1 while(1)
74 1 {
75 2 sam1();
76 2 delaylong(50000);
77 2 CLRSCREEN();
78 2 delaylong(10000);
79 2 FULLSCREEN();
80 2 delaylong(10000);
81 2 }
82 1
83 1 }
*** WARNING C280 IN LINE 64 OF LCD.C: 'i': unreferenced local variable
84
85
86 /*************************SBUROUTINES OF LCD DRIVE**************************/
87
88 /****************************************************************************
89 * 名称:WLCDCOM
90 * 功能:写LCD控制命令
91 * 入口参数:com
92 * 出口参数:无
93 ****************************************************************************/
94 void WLCDCOM(BYTE com )
95 //写LCD控制命令
96 {
97 1 SEDWRCOM=com;
98 1 _nop_();
99 1 }
100
101 /****************************************************************************
102 * 名称:WLCDDATA
103 * 功能:写LCD控制参数和显示字符数据
104 * 入口参数:ref
105 * 出口参数:无
106 ****************************************************************************/
107 void WLCDDATA(BYTE ref )
108 //写LCD控制参数和显示字符数据
109 {
110 1 SEDWRDAT=ref;
111 1 _nop_();
112 1 }
113
114 /****************************************************************************
115 * 名称:CLRVRAM
116 * 功能:显示存储器清零
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 3
117 * 入口参数:无
118 * 出口参数:无
119 ****************************************************************************/
120 void CLRVRAM(void)
121 //显示存储器清零
122 {
123 1 WORD i,j;
124 1 WLCDCOM(CSRRGT);
125 1 WLCDCOM(CSRW);
126 1 WLCDDATA(0x00);
127 1 WLCDDATA(0x00);
128 1 WLCDCOM(MWRITE);
129 1 for(i=0;i<=0xff;i++)
130 1 {
131 2 for(j=0;j<=0xff;j++)
132 2 {
133 3 WLCDDATA(0x00);
134 3 }
135 2 }
136 1 }
137
138 /****************************************************************************
139 * 名称:CLRSCREEN
140 * 功能:清除显示屏幕
141 * 入口参数:无
142 * 出口参数:无
143 ****************************************************************************/
144 void CLRSCREEN(void)
145 //清除显示屏幕
146 {
147 1 WORD i,j;
148 1 //BYTE a;
149 1 WLCDCOM(CSRRGT);
150 1 WLCDCOM(CSRW);
151 1 WLCDDATA(0X00);
152 1 WLCDDATA(0X00);
153 1 WLCDCOM(MWRITE);
154 1 /*
155 1 for(i=0;i<0xa0;i++)
156 1 {
157 1 for(j=0;j<0x1e0;j++)
158 1 {
159 1 WLCDDATA(0x00);
160 1 }
161 1 }*/
162 1 for(i=0;i<9600;i++)
163 1 {
164 2 WLCDDATA(0x00);
165 2 }
166 1 }
*** WARNING C280 IN LINE 147 OF LCD.C: 'j': unreferenced local variable
167
168 /****************************************************************************
169 * 名称:WNUMBER
170 * 功能:显示0~9等10个数字
171 * 入口参数:...
172 * 出口参数:无
173 ****************************************************************************/
174 void WNUMBER(BYTE x,BYTE y,BYTE (*p)[16],BYTE num )
175 //功能:显示0~9等10个数字,num为要显示的数字的值(16×8)
176 //x坐标寄存器(字节),y坐标寄存器(点行)
177 {
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 4
178 1 WORD temp;
179 1 BYTE hi,lo;
180 1 BYTE a,b,c;
181 1 temp=y*AP;
182 1 hi=HIBYTE(temp);
183 1 lo=LOBYTE(temp);
184 1 lo=x+lo;
185 1 if(CY==1) {hi+=0x01;CY=0;}
186 1
187 1 WLCDCOM(CSRDOWN);
188 1 WLCDCOM(CSRW);
189 1 WLCDDATA(lo);
190 1 WLCDDATA(hi);
191 1 WLCDCOM(MWRITE);
192 1 for(c=0;c<16;c++)
193 1 {
194 2 WLCDDATA(*(*(p+num)+c));
195 2 }
196 1 lo=lo+0x01;
197 1 if(CY==1) {hi+=0x01;CY=0;}
198 1 }
*** WARNING C280 IN LINE 180 OF LCD.C: 'a': unreferenced local variable
*** WARNING C280 IN LINE 180 OF LCD.C: 'b': unreferenced local variable
199
200 /****************************************************************************
201 * 名称:WBLOCK
202 * 功能:显示16×8点字符
203 * 入口参数:...
204 * 出口参数:无
205 ****************************************************************************/
206 void WBLOCK(BYTE x,BYTE y,BYTE (*p)[16],BYTE num )
207 //功能:显示16×8点字符,num为要显示的字符块长度
208 //x坐标为低8位寄存器(字节),y坐标寄存器(点行)
209 {
210 1 WORD temp;
211 1 BYTE hi,lo;
212 1 BYTE a,b,c;
213 1 temp=y*AP;
214 1 hi=HIBYTE(temp);
215 1 lo=LOBYTE(temp);
216 1 lo=x+lo;
217 1 if(CY==1) {hi+=0x01;CY=0;}
218 1
219 1 WLCDCOM(CSRDOWN);
220 1 WLCDCOM(CSRW);
221 1 WLCDDATA(lo);
222 1 WLCDDATA(hi);
223 1 WLCDCOM(MWRITE);
224 1 for(c=0;c<16;c++)
225 1 {
226 2 WLCDDATA(*(*(p+num-1)+c));
227 2 }
228 1 lo=lo+0x01;
229 1 if(CY==1) {hi+=0x01;CY=0;}
230 1 }
*** WARNING C280 IN LINE 212 OF LCD.C: 'a': unreferenced local variable
*** WARNING C280 IN LINE 212 OF LCD.C: 'b': unreferenced local variable
231
232 /****************************************************************************
233 * 名称:FILLBLOCK
234 * 功能:显示16×16字符
235 * 入口参数:...
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 5
236 * 出口参数:无
237 ****************************************************************************/
238 void FILLBLOCK(BYTE x,BYTE y,BYTE len )
239 //功能:显示16×16字符,len为要显示的字符块的长度
240 //x坐标为低8位寄存器(字节),y坐标寄存器(点行)
241 {
242 1 WORD temp;
243 1 BYTE hi,lo;
244 1 BYTE a,b;
245 1 temp=y*AP;
246 1 hi=HIBYTE(temp);
247 1 lo=LOBYTE(temp);
248 1 lo=x+lo;
249 1 if(CY==1) {hi+=0x01;CY=0;}
250 1 for(b=0;b<0x10;b++)//**************************************************************这里要改
251 1 {
252 2 WLCDCOM(CSRDOWN);
253 2 WLCDCOM(CSRW);
254 2 WLCDDATA(lo);
255 2 WLCDDATA(hi);
256 2 WLCDCOM(MWRITE);
257 2 for(a=0;a<16;a++)
258 2 {
259 3 WLCDDATA(0xff);
260 3 }
261 2 lo=lo+0x01;
262 2 if(CY==1) {hi+=0x01;CY=0;}
263 2 }
264 1 }
*** WARNING C280 IN LINE 238 OF LCD.C: 'len': unreferenced local variable
265
266 /****************************************************************************
267 * 名称:CLRBLOCK
268 * 功能:清除16×8字符快
269 * 入口参数:...
270 * 出口参数:无
271 ****************************************************************************/
272 void CLRBLOCK(BYTE x,BYTE y,BYTE len )
273 //清除16×8字符快,len为要清除的字符块的长度
274 //x坐标寄存器(字节),y坐标寄存器(点行)
275 {
276 1 WORD temp;
277 1 BYTE hi,lo;
278 1 BYTE a,b;
279 1 temp=y*AP;
280 1 hi=HIBYTE(temp);
281 1 lo=LOBYTE(temp);
282 1 lo=x+lo;
283 1 if(CY==1) {hi+=0x01;CY=0;}
284 1 for(b=0;b<0x10;b++)//**********************************************************这里要改
285 1 {
286 2 WLCDCOM(CSRDOWN);
287 2 WLCDCOM(CSRW);
288 2 WLCDDATA(lo);
289 2 WLCDDATA(hi);
290 2 WLCDCOM(MWRITE);
291 2 for(a=0;a<16;a++)
292 2 {
293 3 WLCDDATA(0x00);
294 3 }
295 2 lo=lo+0x01;
296 2 if(CY==1) {hi+=0x01;CY=0;}
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 6
297 2 }
298 1 }
*** WARNING C280 IN LINE 272 OF LCD.C: 'len': unreferenced local variable
299
300
301 /****************************************************************************
302 * 名称:WLCDCHR
303 * 功能:显示16×32字符
304 * 入口参数:...
305 * 出口参数:无
306 ****************************************************************************/
307 void WLCDCHR(BYTE x,BYTE y,BYTE (*p)[32],BYTE num )
308 //功能:显示16×32字符,num为要显示字符数组的第一维的值
309 //x坐标寄存器(字节),y坐标寄存器(点行)
310 {
311 1 WORD temp;
312 1 BYTE hi,lo;
313 1 BYTE a,b,c;
314 1 temp=y*AP;
315 1 hi=HIBYTE(temp);
316 1 lo=LOBYTE(temp);
317 1 lo=x+lo;
318 1 if(CY==1) {hi+=0x01;CY=0;}
319 1
320 1 WLCDCOM(CSRDOWN);
321 1 for(a=0;a<0x10;a++)//**********************************************************这里要改
322 1 {
323 2 WLCDCOM(CSRW);
324 2 WLCDDATA(lo);
325 2 WLCDDATA(hi);
326 2 WLCDCOM(MWRITE);
327 2 for(c=0;c<0x20;c+=2)
328 2 {
329 3 WLCDDATA(*(*(p+a)+c));
330 3 }
331 2 lo=lo+0x01;
332 2 if(CY==1) {hi+=0x01;CY=0;}
333 2
334 2 WLCDCOM(CSRW);
335 2 WLCDDATA(lo);
336 2 WLCDDATA(hi);
337 2 WLCDCOM(MWRITE);
338 2 for(c=1;c<0x20;c+=2)
339 2 {
340 3 WLCDDATA(*(*(p+a)+c));
341 3 }
342 2 lo=lo+0x01;
343 2 if(CY==1) {hi+=0x01;CY=0;}
344 2
345 2 }
346 1 }
*** WARNING C280 IN LINE 307 OF LCD.C: 'num': unreferenced local variable
*** WARNING C280 IN LINE 313 OF LCD.C: 'b': unreferenced local variable
347
348 /****************************************************************************
349 * 名称:INITLCD
350 * 功能:初始化LCD显示参数以及界面
351 * 入口参数:...
352 * 出口参数:无
353 ****************************************************************************/
354 void INITLCD(void)
355 //初始化LCD显示参数以及界面
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 7
356 {
357 1 WORD a,b,c;
358 1 WLCDCOM(SYSSET);
359 1 for(b=0;b<8;b++)
360 1 {
361 2 WLCDDATA(SYSTAB[b]);
362 2 }
363 1 WLCDCOM(SCROLL);
364 1 for(b=0;b<10;b++)
365 1 {
366 2 WLCDDATA(SCRTAB[b]);
367 2 //WLCDDATA(0x00);
368 2 }
369 1 WLCDCOM(HDOTSCR);
370 1 WLCDDATA(0X00);
371 1 WLCDCOM(OVLAY);
372 1 WLCDDATA(0X1c);
373 1 WLCDCOM(DISPOFF);
374 1 WLCDDATA(0X56);
375 1 CLRVRAM();
376 1 WLCDCOM(CSRFORM);
377 1 WLCDDATA(0X07);
378 1 WLCDDATA(0X8f);
379 1 WLCDCOM(DISPON);
380 1 WLCDDATA(0X16);
381 1
382 1 }
*** WARNING C280 IN LINE 357 OF LCD.C: 'a': unreferenced local variable
*** WARNING C280 IN LINE 357 OF LCD.C: 'c': unreferenced local variable
383
384 /****************************************************************************
385 * 名称:FULLSCREEN
386 * 功能:清除显示屏幕
387 * 入口参数:无
388 * 出口参数:无
389 ****************************************************************************/
390 void FULLSCREEN(void)
391 //清除显示屏幕
392 {
393 1 //WORD i,j;
394 1 WORD i;
395 1 //BYTE a;
396 1 WLCDCOM(CSRRGT);
397 1 WLCDCOM(CSRW);
398 1 WLCDDATA(0X00);
399 1 WLCDDATA(0X00);
400 1 WLCDCOM(MWRITE);
401 1 /*
402 1 for(i=0;i<320;i++)
403 1 {
404 1 for(j=0;j<30;j++)
405 1 {
406 1 WLCDDATA(0xff);
407 1 }
408 1 }*/
409 1 for(i=0;i<9600;i++)
410 1 {
411 2 WLCDDATA(0xff);
412 2 }
413 1 }
414
415 /****************************************************************************
C51 COMPILER V7.50 LCD 10/17/2005 10:28:55 PAGE 8
416 * 名称:FULLSCREEN
417 * 功能:清除显示屏幕
418 * 入口参数:无
419 * 出口参数:无
420 ****************************************************************************/
421 void sam1(void)
422 {
423 1 WORD i;
424 1 WLCDCOM(CSRRGT);
425 1 WLCDCOM(CSRW);
426 1 WLCDDATA(0X00);
427 1 WLCDDATA(0X00);
428 1 WLCDCOM(MWRITE);
429 1
430 1 for(i=0;i<320*5*2;i++)
431 1 {
432 2 WLCDDATA(Bmp1[i]);
433 2 }
434 1
435 1 for(i=0;i<320*5*2;i++)
436 1 {
437 2 WLCDDATA(Bmp1[i]);
438 2 }
439 1
440 1 for(i=0;i<320*5*2;i++)
441 1 {
442 2 WLCDDATA(Bmp1[i]);
443 2 }
444 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 887 ----
CONSTANT SIZE = 3474 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 42
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 12 WARNING(S), 0 ERROR(S)