📄 1602lcd_gd.lst
字号:
C51 COMPILER V7.06 1602LCD_GD 07/29/2007 23:17:47 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602LCD_GD
OBJECT MODULE PLACED IN 1602LCD_GD.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE 1602LCD_GD.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************
2 *
- *
3 *ME300B单片机开发系统演示程序 - LCD1602 滚动显示 *
4 *
- *
5 * 显示内容:WLCOME TO WWW.WILLAR.COM *
6 *
- *
7 * 显示方式:
- *
8 * 1、从左到右逐字显示,闪动二次,清屏。
- *
9 * 2、再从右到左逐字显示,闪动二次,清屏。
- *
10 * 3、周期性地重复上述显示方式。
- *
11 *
- *
12 * 邮箱: gguoqing@willar.com
- *
13 * 网站: http://www.willar.com
- *
14 * 作者: gguoqing
- *
15 * 创作时间:2005/06/20
- *
16 * 修改时间:2006/01/20
- *
17 *
- *
18 *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
19 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
20 *
- *
21 *******************************************************************/
22
23
24
25 #include <reg51.h>
26 #include <intrins.h>
27
28 typedef unsigned char BYTE;
29 typedef bit BOOL;
30
31 sbit LCD_RS = P2^0;
32 sbit LCD_RW = P2^1;
33 sbit LCD_EP = P2^2;
34
35 BYTE code dis1[] = {" WLCOME TO "};//原来空格也算进去了,如此
36 BYTE code dis2[] = {" WWW.WILLAR.COM "};
37 BYTE code dis3[] = {" OT EMOCLW "};
38 BYTE code dis4[] = {" MOC.RALLIW.WWW "};
39
40 delay(int ms)
C51 COMPILER V7.06 1602LCD_GD 07/29/2007 23:17:47 PAGE 2
41 { // 延时子程序
42 1 int i;
43 1 while(ms--)
44 1 {
45 2 for(i = 0; i< 250; i++)
46 2 {
47 3 _nop_();
48 3 _nop_();
49 3 _nop_();
50 3 _nop_();
51 3 }
52 2 }
53 1 }
54
55 BOOL lcd_bz()
56 { // 测试LCD忙碌状态
57 1 BOOL result;
58 1 LCD_RS = 0;
59 1 LCD_RW = 1;
60 1 LCD_EP = 1;
61 1 _nop_();
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 result = (BOOL)(P0 & 0x80);
66 1 LCD_EP = 0;
67 1 return result;
68 1 }
69
70 lcd_wcmd(BYTE cmd)
71 { // 写入指令数据到LCD
72 1 while(lcd_bz());
73 1 LCD_RS = 0;
74 1 LCD_RW = 0;
75 1 LCD_EP = 0;
76 1 _nop_();
77 1 _nop_();
78 1 P0 = cmd;
79 1 _nop_();
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 LCD_EP = 1;
84 1 _nop_();
85 1 _nop_();
86 1 _nop_();
87 1 _nop_();
88 1 LCD_EP = 0;
89 1 }
90
91 lcd_pos(BYTE pos)
92 { //设定显示位置
93 1 lcd_wcmd(pos | 0x80);
94 1 }
95
96 lcd_wdat(BYTE dat)
97 { //写入字符显示数据到LCD
98 1 while(lcd_bz());
99 1 LCD_RS = 1;
100 1 LCD_RW = 0;
101 1 LCD_EP = 0;
102 1 P0 = dat;
C51 COMPILER V7.06 1602LCD_GD 07/29/2007 23:17:47 PAGE 3
103 1 _nop_();
104 1 _nop_();
105 1 _nop_();
106 1 _nop_();
107 1 LCD_EP = 1;
108 1 _nop_();
109 1 _nop_();
110 1 _nop_();
111 1 _nop_();
112 1 LCD_EP = 0;
113 1 }
114
115 lcd_init()
116 { //LCD初始化设定
117 1 lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
118 1 delay(1);
119 1 lcd_wcmd(0x0c); //显示开,关光标
120 1 delay(1);
121 1 lcd_wcmd(0x06); //移动光标
122 1 delay(1);
123 1 lcd_wcmd(0x01); //清除LCD的显示内容
124 1 delay(1);
125 1 }
126
127 main()
128 {
129 1 BYTE i;
130 1 lcd_init(); // 初始化LCD
131 1 delay(10);
132 1
133 1 while(1)
134 1 {
135 2 lcd_wcmd(0x06); //向右移动光标
136 2 lcd_pos(0); //设置显示位置为第一行的第1个字符
137 2 i = 0;
138 2 while(dis1[ i ] != '\0')
139 2 { //显示字符"Welcome TO"
140 3 lcd_wdat(dis1[ i ]);
141 3 i++;
142 3 delay(30); //控制两字之间显示速度
143 3 }
144 2 lcd_pos(0x40); //设置显示位置为第二行第1个字符
145 2 i = 0;
146 2 while(dis2[ i ] != '\0')
147 2 {
148 3 lcd_wdat(dis2[ i ]); //显示字符" WWW.WILLAR.COM "
149 3 i++;
150 3 delay(30); //控制两字之间显示速度
151 3 }
152 2 delay(800); //控制停留时间
153 2
154 2 lcd_wcmd(0x01); //清除LCD的显示内容
155 2 delay(1);
156 2 lcd_wcmd(0x04); //向左移动光标 AC自动减1(光标左移)
157 2
158 2 lcd_pos(15); //设置显示位置为第一行的第16个字符
159 2 i = 0;
160 2 while(dis3[ i ] != '\0')
161 2 { //显示字符"Welcome TO"
162 3 lcd_wdat(dis3[ i ]);
163 3 i++;
164 3 delay(30); //控制两字之间显示速度
C51 COMPILER V7.06 1602LCD_GD 07/29/2007 23:17:47 PAGE 4
165 3 }
166 2 lcd_pos(0x4F); //设置显示位置为第二行的第16个字符
167 2 i = 0;
168 2 while(dis4[ i ] != '\0')
169 2 {
170 3 lcd_wdat(dis4[ i ]); //显示字符" WWW.WILLAR.COM "
171 3 i++;
172 3 delay(30); //控制两字之间显示速度
173 3 }
174 2 delay(800); //控制停留时间
175 2
176 2 lcd_wcmd(0x01); //清除LCD的显示内容
177 2 delay(200); //控制两屏转换时间
178 2
179 2 }
180 1 }
181
182
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 305 ----
CONSTANT SIZE = 68 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -