📄 lcdtest.lst
字号:
C51 COMPILER V7.50 LCDTEST 09/25/2005 15:49:02 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCDTEST
OBJECT MODULE PLACED IN lcdtest.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE lcdtest.c ROM(COMPACT) OPTIMIZE(4,SIZE) BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************
2 LCD测试程序
3 魏东 2004-11-22 10:15
4 8051,频率:7.372848MHz
5 **************************************************************************/
6 #include <stdio.h>
7 #define __SRC
8 #include "def_port.h"
9 #undef __SRC
10 #include "lcddrv.h"
11
12 #define CON_OSC 7372848 /* 振荡频率 */
13 #define CON_BPS 256 - ( CON_OSC / 12 / 32 / 19200 ) /* 19200BPS时间常数 */
14 #define CON_MSC CON_OSC/36000 /* 延时 */
15
16 /* 函数定义 */
17 void main_init (void); /* 初始化 */
18 void delay_ms(unsigned char); /* 延时(单位:毫秒) */
19
20 /***********************************************************************************/
21 /* 延时(单位:1毫秒) */
22 void delay_ms(unsigned char cn)
23 { unsigned char cm;
24 1
25 1 while(cn)
26 1 { for(cm=0;cm<CON_MSC;cm++) ; /* 延时(12/CON_OSC)*3 */
27 2 /* 编译为汇编如下:
28 2 delay_ub: INC R6 ;1
29 2 CJNE R6,delay_ub ;2
30 2 */
31 2 cn --;
32 2 }
33 1 }
34
35 /* 初始化 */
36 void main_init (void)
37 {
38 1 SCON=0x50; /* 置串口工作方式1(T1用作串口波特率发生) */
39 1 TMOD=0x20; /* 置定时器1工作方式2 */
40 1 TH1=CON_BPS; /* 波特率时间常数 */
41 1 TL1=CON_BPS;
42 1 TR1=1; /* 启动定时器1 */
43 1 ET1=0; /* 禁止定时器1中断 */
44 1 EA=0; /* 禁止中断 */
45 1 ES=0; /* 关串口中断 */
46 1 TI=1; /* 调试:set TI to send first char of UART */
47 1 }
48
49 /***********************************************************************************/
50
51 void main (void)
52 { unsigned char ci,cx,cy;
53 1 unsigned int ui;
54 1
55 1 main_init(); /* 初始化 */
C51 COMPILER V7.50 LCDTEST 09/25/2005 15:49:02 PAGE 2
56 1 while(1)
57 1 {
58 2 lcd_id=0;
59 2 printf("lcdtest.....\n");
60 2 lcd_id=1;
61 2 lcd_reset();
62 2
63 2 lcd_fill(0);
64 2 for(cy=0;cy<64;cy++)
65 2 { for(cx=0;cx<128;cx++)
66 3 { lcd_dot(cx,cy,1);
67 4 }
68 3 }
69 2 for(ui=0;ui<5;ui++) delay_ms(100);
70 2 lcd_fill(0xff);
71 2 for(cy=0;cy<64;cy++)
72 2 { for(cx=0;cx<128;cx++)
73 3 { lcd_dot(cx,cy,0);
74 4 }
75 3 }
76 2 for(ui=0;ui<5;ui++) delay_ms(100);
77 2 lcd_fill(0);
78 2 for(cy=0;cy<64;cy++)
79 2 { for(cx=0;cx<128;cx++)
80 3 { lcd_dot(127-cx,63-cy,1);
81 4 }
82 3 }
83 2 for(ui=0;ui<5;ui++) delay_ms(100);
84 2 lcd_fill(0xff);
85 2 for(cy=0;cy<64;cy++)
86 2 { for(cx=0;cx<128;cx++)
87 3 { lcd_dot(127-cx,63-cy,0);
88 4 }
89 3 }
90 2 for(ui=0;ui<5;ui++) delay_ms(100);
91 2
92 2 L_LED=0; /* 背光亮 */
93 2 lcd_fill(0);
94 2 lcd_set_chlib(3);
95 2 lcd_moveto(16,0);
96 2 printf("汉字液晶");
97 2 lcd_set_chlib(2);
98 2 lcd_moveto(0,6);
99 2 printf("16x16点阵字库");
100 2 lcd_set_chlib(1);
101 2 lcd_moveto(0,10);
102 2 printf("12x12点阵字库");
103 2 lcd_moveto(100,13);
104 2 printf("魏东");
105 2 for(ui=0;ui<25;ui++) delay_ms(100);
106 2
107 2 lcd_set_chlib(0);
108 2 lcd_moveto(0,14);
109 2 printf("lcd_off");
110 2 for(ci=0;ci<5;ci++)
111 2 { if(ci&1) lcd_on();
112 3 else lcd_off();
113 3 delay_ms(100);
114 3 }
115 2 lcd_on();
116 2
117 2 lcd_set_chlib(0);
C51 COMPILER V7.50 LCDTEST 09/25/2005 15:49:02 PAGE 3
118 2 lcd_moveto(0,14);
119 2 printf("lcd_roll");
120 2 for(ci=1;ci<64;ci++)
121 2 { lcd_roll(ci);
122 3 delay_ms(50);
123 3 }
124 2 lcd_roll(0);
125 2
126 2 lcd_fill(0);
127 2 lcd_set_chlib(1);
128 2 printf("12x12点阵字库小字体,128x64液晶满屏可显示5行每行10个汉字。显示函\xca\xfd中可自动处理英文字母显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -