📄 gdlcd.lst
字号:
C51 COMPILER V7.10 GDLCD 06/11/2009 21:16:15 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE GDLCD
OBJECT MODULE PLACED IN .\gdLCD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\C语言\gdLCD.C BROWSE DEBUG OBJECTEXTEND PRINT(.\gdLCD.lst) OBJECT(.\gdLC
-D.obj)
line level source
1 /********************************************************************************
2 * 描述: LCD1602 滚动显示 *
3 * 显示方式: *
4 * 1、从左到右逐字显示,闪动二次,清屏。 *
5 * 2、再从右到左逐字显示,闪动二次,清屏。 *
6 * 3、周期性地重复上述显示方式。 *
-
7 ********************************************************************************/
8
9 #include <reg51.h>
10 #include <intrins.h>
11
12 typedef unsigned char BYTE;
13 typedef bit BOOL;
14
15 sbit LCD_RS = P2^6;
16 sbit LCD_RW = P2^5;
17 sbit LCD_EP = P2^7;
18
19 BYTE code dis1[] = {" WLCOME TO "};
20 BYTE code dis2[] = {" WWW.PRECHIN.COM "};
21 BYTE code dis3[] = {" OT EMOCLW "};
22 BYTE code dis4[] = {" MOC.NIHCERP.WWW "};
23
24 delay(int ms)
25 { // 延时子程序
26 1 int i;
27 1 while(ms--)
28 1 {
29 2 for(i = 0; i< 250; i++)
30 2 {
31 3 _nop_();
32 3 _nop_();
33 3 _nop_();
34 3 _nop_();
35 3 }
36 2 }
37 1 }
38
39 BOOL lcd_bz()
40 { // 测试LCD忙碌状态
41 1 BOOL result;
42 1 LCD_RS = 0;
43 1 LCD_RW = 1;
44 1 LCD_EP = 1;
45 1 _nop_();
46 1 _nop_();
47 1 _nop_();
48 1 _nop_();
49 1 result = (BOOL)(P0 & 0x80);
50 1 LCD_EP = 0;
51 1 return result;
52 1 }
53
C51 COMPILER V7.10 GDLCD 06/11/2009 21:16:15 PAGE 2
54 lcd_wcmd(BYTE cmd)
55 { // 写入指令数据到LCD
56 1 while(lcd_bz());
57 1 LCD_RS = 0;
58 1 LCD_RW = 0;
59 1 LCD_EP = 0;
60 1 _nop_();
61 1 _nop_();
62 1 P0 = cmd;
63 1 _nop_();
64 1 _nop_();
65 1 _nop_();
66 1 _nop_();
67 1 LCD_EP = 1;
68 1 _nop_();
69 1 _nop_();
70 1 _nop_();
71 1 _nop_();
72 1 LCD_EP = 0;
73 1 }
74
75 lcd_pos(BYTE pos)
76 { //设定显示位置
77 1 lcd_wcmd(pos | 0x80);
78 1 }
79
80 lcd_wdat(BYTE dat)
81 { //写入字符显示数据到LCD
82 1 while(lcd_bz());
83 1 LCD_RS = 1;
84 1 LCD_RW = 0;
85 1 LCD_EP = 0;
86 1 P0 = dat;
87 1 _nop_();
88 1 _nop_();
89 1 _nop_();
90 1 _nop_();
91 1 LCD_EP = 1;
92 1 _nop_();
93 1 _nop_();
94 1 _nop_();
95 1 _nop_();
96 1 LCD_EP = 0;
97 1 }
98
99 lcd_init()
100 { //LCD初始化设定
101 1 lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
102 1 delay(1);
103 1 lcd_wcmd(0x0c); //显示开,关光标
104 1 delay(1);
105 1 lcd_wcmd(0x06); //移动光标
106 1 delay(1);
107 1 lcd_wcmd(0x01); //清除LCD的显示内容
108 1 delay(1);
109 1 }
110
111 main()
112 {
113 1 BYTE i;
114 1 lcd_init(); // 初始化LCD
115 1 delay(10);
C51 COMPILER V7.10 GDLCD 06/11/2009 21:16:15 PAGE 3
116 1
117 1 while(1)
118 1 {
119 2 lcd_wcmd(0x06); //向右移动光标
120 2 lcd_pos(0); //设置显示位置为第一行的第1个字符
121 2 i = 0;
122 2 while(dis1[ i ] != '\0')
123 2 { //显示字符"WLCOME TO"
124 3 lcd_wdat(dis1[ i ]);
125 3 i++;
126 3 delay(30); //控制两字之间显示速度
127 3 }
128 2 lcd_pos(0x40); //设置显示位置为第二行第1个字符
129 2 i = 0;
130 2 while(dis2[ i ] != '\0')
131 2 {
132 3 lcd_wdat(dis2[ i ]); //显示字符" WWW.PRECHIN.COM "
133 3 i++;
134 3 delay(30); //控制两字之间显示速度
135 3 }
136 2 delay(800); //控制停留时间
137 2
138 2 lcd_wcmd(0x01); //清除LCD的显示内容
139 2 delay(1);
140 2 lcd_wcmd(0x04); //向左移动光标
141 2
142 2 lcd_pos(15); //设置显示位置为第一行的第16个字符
143 2 i = 0;
144 2 while(dis3[ i ] != '\0')
145 2 { //显示字符"WLCOME TO"
146 3 lcd_wdat(dis3[ i ]);
147 3 i++;
148 3 delay(30); //控制两字之间显示速度
149 3 }
150 2 lcd_pos(0x4F); //设置显示位置为第二行的第16个字符
151 2 i = 0;
152 2 while(dis4[ i ] != '\0')
153 2 {
154 3 lcd_wdat(dis4[ i ]); //显示字符" WWW.PRECHIN.COM "
155 3 i++;
156 3 delay(30); //控制两字之间显示速度
157 3 }
158 2 delay(800); //控制停留时间
159 2
160 2 lcd_wcmd(0x01); //清除LCD的显示内容
161 2 delay(200); //控制两屏转换时间
162 2
163 2 }
164 1 }
165
166
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 305 ----
CONSTANT SIZE = 70 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILER V7.10 GDLCD 06/11/2009 21:16:15 PAGE 4
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -