📄 lcd.lst
字号:
C51 COMPILER V7.20 LCD 02/24/2009 12:33:47 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\output\lcd.obj
COMPILER INVOKED BY: F:\program files\keil3\C51\BIN\C51.EXE src\lcd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\output\lcd.lst)
-OBJECT(.\output\lcd.obj)
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3
4 #define uint8 unsigned int
5 #define uchar unsigned char
6 #define pindata P0
7
8 sbit RS=P1^0;
9 sbit RW=P1^1;
10 sbit E=P1^2;
11
12 //寄存器设置 setRS()
13 void setRS(bit i)
14 {
15 1 if(i==1)
16 1 {
17 2 RS=1; //数据寄存器
18 2 }
19 1 else
20 1 {
21 2 RS=0; //指令寄存器
22 2 }
23 1 }
24
25 //读写设置 setRW()
26 void setRW(bit i)
27 {
28 1 if(i==1)
29 1 {
30 2 RW=1; //读操作
31 2 }
32 1 else
33 1 {
34 2 RW=0; //写操作
35 2 }
36 1 }
37
38 //使能信号 setE()
39 void setE(bit i)
40 {
41 1 if(i==1) E=1;
42 1 else E=0;
43 1 }
44
45 //IO输入输出设置 InitP0()
46 void InitP0(bit i)
47 {
48 1 if(i==1) P0=0xff; //读
49 1 else P0=0x00; //写
50 1 }
51
52 //读BF及AC函数 Read-BF-AC()
53 uint8 Read_BF_AC()
54 {
C51 COMPILER V7.20 LCD 02/24/2009 12:33:47 PAGE 2
55 1 uint8 readValue;
56 1 InitP0(1);
57 1 setRS(0);
58 1 setRW(1);
59 1 setE(0);
60 1 _nop_();
61 1 setE(1);
62 1 _nop_();
63 1 readValue=pindata;
64 1 setE(0);
65 1 _nop_();
66 1 setRS(1);
67 1 setRW(0);
68 1 return readValue;
69 1
70 1 }
71
72 //LCD控制器状态检测 StatusCheck() 1:忙 0:闲
73 bit StatusCheck()
74 {
75 1 return((int)(Read_BF_AC()&0x80));
76 1 }
77
78 //写指令 WriteCommand()
79 void WriteCommand(uint8 command)
80 {
81 1 while(StatusCheck());
82 1 InitP0(0);
83 1 setRS(0);
84 1 setRW(0);
85 1 setE(0);
86 1 _nop_();
87 1 setE(1);
88 1 _nop_();
89 1 pindata=command;
90 1 _nop_();
91 1 _nop_();
92 1 _nop_();
93 1 _nop_();
94 1 _nop_();
95 1 setE(0);
96 1 _nop_();
97 1 setRS(1);
98 1 setRW(1);
99 1
100 1 }
101
102 //写数据到Ram中去 WriteData()
103 void WriteData(uint8 data1)
104 {
105 1 InitP0(0);
106 1 setRS(1);
107 1 setRW(0);
108 1 setE(0);
109 1 setE(1);
110 1 pindata=data1;
111 1 _nop_();
112 1 _nop_();
113 1 _nop_();
114 1 _nop_();
115 1 _nop_();
116 1 _nop_();
C51 COMPILER V7.20 LCD 02/24/2009 12:33:47 PAGE 3
117 1 _nop_();
118 1 _nop_();
119 1 _nop_();
120 1 _nop_();
121 1 setE(0);
122 1 setRS(0);
123 1 setRW(1);
124 1
125 1 }
126
127 //在指定位置显示字符 ShowCharater()
128 void ShowCharacter(uint8 x,uint8 y,uint8 data1)
129 {
130 1 uint8 temp;
131 1 while(StatusCheck());
132 1 temp=y&0x0f;
133 1 x&=0x01;
134 1 if(x)
135 1 {
136 2 temp|=0x40;
137 2 }
138 1 WriteCommand(0x80|temp);
139 1 WriteData(data1);
140 1
141 1 }
142
143 //LCD初始化 InitLCD()
144 void InitLCD()
145 {
146 1 WriteCommand(0x01); //清屏
147 1 WriteCommand(0x02); //归位
148 1 WriteCommand(0x06); //增长方式,不移位
149 1 WriteCommand(0x01); //显示开,光标关,闪烁关 WriteCommand(0x01); //8位,2行,5*7
150 1 }
151
152
153 void main()
154 {
155 1 InitP0(0);
156 1 P2=0x00;
157 1 InitLCD();
158 1 while(1)
159 1 {
160 2 ShowCharacter(0,4,'W');
161 2 ShowCharacter(0,5,'e');
162 2 ShowCharacter(0,6,'l');
163 2 ShowCharacter(0,7,'c');
164 2 ShowCharacter(0,8,'o');
165 2 ShowCharacter(0,9,'m');
166 2 ShowCharacter(0,10,'e');
167 2 ShowCharacter(0,11,'!');
168 2 ShowCharacter(1,3,'2');
169 2 ShowCharacter(1,4,'0');
170 2 ShowCharacter(1,5,'0');
171 2 ShowCharacter(0,6,'8');
172 2 ShowCharacter(1,7,'-');
173 2 ShowCharacter(1,8,'2');
174 2 ShowCharacter(1,9,'-');
175 2 ShowCharacter(1,10,'2');
176 2 ShowCharacter(1,11,'3');
177 2 ShowCharacter(1,12,'W');
178 2 ShowCharacter(1,13,'W');
C51 COMPILER V7.20 LCD 02/24/2009 12:33:47 PAGE 4
179 2 ShowCharacter(1,14,'W');
180 2 }
181 1
182 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 471 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -