?? 1602lcd_gd.lst
字號:
C51 COMPILER V7.06 1602LCD_GD 07/13/2008 23:08:00 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602LCD_GD
OBJECT MODULE PLACED IN 1602LCD_GD.OBJ
COMPILER INVOKED BY: C:\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 ;* 創作時間:2004/12/20
13 ;* 修改時間:2006/01/20
14 ;* 作者: gguoqing (Email: gguoqing@willar.com)
15 ;* 網站: www.willar.com(偉納電子) www.mcusj.com(偉納單片機世界)
16 ;* 郵箱: support@willar.com
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[] = {" l-f-f "};
37 BYTE code dis3[] = {" OT EMOCLW "};
38 BYTE code dis4[] = {" 987654321 "};
39
40 delay(int ms)
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()
C51 COMPILER V7.06 1602LCD_GD 07/13/2008 23:08:00 PAGE 2
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;
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位數據
C51 COMPILER V7.06 1602LCD_GD 07/13/2008 23:08:00 PAGE 3
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); //向左移動光標
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); //控制兩字之間顯示速度
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 }
C51 COMPILER V7.06 1602LCD_GD 07/13/2008 23:08:00 PAGE 4
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 + -