📄 text1.lst
字号:
C51 COMPILER V7.09 TEXT1 09/05/2008 10:33:02 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: R:\electronic\keilc51\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51RC2.h>
2 #include <intrins.h>
3 unsigned char COM ; //command register
4 unsigned char DAT ; //data register
5
6 /*unsigned char code CGTAB[64]={ 0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02, //"年"代码=00H
7 0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //"月"代码=01H
8 0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00, //"日"代码=02H
9 0x11,0x0A,0x04,0x1F,0x04,0x1F,0x04,0x00, //"$"代码=03H
10 0x0E,0x00,0x1F,0x0A,0x0A,0x0A,0x13,0x00, //"元"代码=04H
11 0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00, //"℃"代码=05H
12 0x04,0x0A,0x15,0x04,0x04,0x04,0x04,0x00, //"↑"代码=06H
13 0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00}; //"10"代码=07H*/
14 unsigned char code sanjiaobo[]={0x00,0x04,0xa0,0x11,0x00,0x00,0x00,0x00, //第一行
15 0x00,0x00,0x00,0x00,0x11,0xa0,0x04,0x00, //第二行
16 0x00,0x04,0xa0,0x11,0x00,0x00,0x00,0x00, //第三行
17 0x00,0x00,0x00,0x00,0x11,0xa0,0x04,0x00, //第四行
18 0x00,0x04,0xa0,0x11,0x00,0x00,0x00,0x00, //第五行
19 0x00,0x00,0x00,0x00,0x11,0xa0,0x04,0x00, //第六行
20 0x00,0x04,0xa0,0x11,0x00,0x00,0x00,0x00, //第七行
21 0x00,0x00,0x00,0x00,0x11,0xa0,0x04,0x00, //第八行
22 };
23
24 unsigned char code Tab_z[12]={0x42,0x43,0x44,0x41,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
25
26 sbit Rs = P3^4;
27 sbit RW = P3^5;
28 sbit E = P3^6;
29
30
31 void Delay(unsigned int ms)
32 {
33 1 unsigned int i;
34 1 while(ms--)
35 1 {
36 2 for(i = 0; i< 250; i++){
37 3 _nop_();
38 3 _nop_();
39 3 _nop_();
40 3 _nop_();
41 3 }
42 2 }
43 1 }
44
45 unsigned char ReadCommand(void)
46 {
47 1 unsigned char iData;
48 1 Rs=0;
49 1 RW=1;
50 1 E=1; //延迟一段时间,建立控制信号
51 1 _nop_();
52 1 _nop_();
53 1 _nop_();
54 1 _nop_();
55 1 iData=P1;
C51 COMPILER V7.09 TEXT1 09/05/2008 10:33:02 PAGE 2
56 1 return iData;
57 1 }
58
59 void WriteCommand(unsigned char command)
60 {
61 1 unsigned char wCom,rCom;
62 1
63 1 wCom=command;
64 1 rCom=ReadCommand();
65 1 rCom=rCom&0x80;
66 1 while(rCom!=0){ //it is busy
67 2 rCom=ReadCommand();
68 2 rCom=rCom&0x80;
69 2 }
70 1 //it is not busy
71 1
72 1 P1=wCom;
73 1 RW=0;
74 1 Rs=0;
75 1 E=0; //延迟一段时间,来建立信号
76 1
77 1 _nop_();
78 1 _nop_();
79 1 E=1;
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 _nop_();
84 1 E = 0;
85 1 }
86
87 unsigned char ReadData(void)
88 {
89 1 unsigned char rData,rCom;
90 1 rCom=ReadCommand();
91 1 rCom=rCom&0x80;
92 1 while(rCom!=0){ //it is busy
93 2 rCom=ReadCommand();
94 2 rCom=rCom&0x80;
95 2 }
96 1 //it is not busy
97 1 RW=1;
98 1 Rs=1;
99 1 E=1;//延迟一段时间控制时序
100 1 _nop_();
101 1 _nop_();
102 1 _nop_();
103 1 _nop_();
104 1 rData=P1;
105 1 return rData;
106 1 }
107
108 void WriteData(unsigned char dat)
109 {
110 1 unsigned char wData,rCom;
111 1 wData=dat;
112 1 rCom=ReadCommand();
113 1 rCom=rCom&0x80;
114 1 while(rCom!=0){ //it is busy
115 2 rCom=ReadCommand();
116 2 rCom=rCom&0x80;
117 2 }
C51 COMPILER V7.09 TEXT1 09/05/2008 10:33:02 PAGE 3
118 1 //it is not busy
119 1
120 1 P1=wData;
121 1 Rs=1;
122 1 RW=0;
123 1 E=0;
124 1
125 1 _nop_();
126 1 _nop_();
127 1 _nop_();
128 1 _nop_();
129 1 E=1; //此时建立高电平准备下降沿,写数据
130 1 _nop_();
131 1 _nop_(); //
132 1 _nop_();
133 1 _nop_();
134 1 E = 0;
135 1 }
136 void LCDPosition(unsigned int pos)
137 {
138 1 WriteCommand(pos | 0x80);
139 1 }
140 void InitLCD(void)
141 {
142 1 COM=0x01;
143 1 WriteCommand(COM);
144 1 Delay(1);
145 1
146 1
147 1 COM=0x38; //设置工作方式:8位数据接口,两行显示,5*7点阵字符(要显示5*11的数据就要将行显示设置为一行显示
-)
148 1 WriteCommand(COM);
149 1 Delay(1);
150 1
151 1 COM=0x06; //设置输入方式:数据读、写操作后,AC自动增一,数据读、写操作,画面不动
152 1 WriteCommand(COM);
153 1 Delay(1);
154 1
155 1 COM=0x0c; //设置显示方式:显示开,光标开,闪烁开
156 1 WriteCommand(COM);
157 1 Delay(1);
158 1
159 1
160 1 COM=0x40;
161 1 WriteCommand(COM);//设置第一次显示地址
162 1 Delay(1);
163 1
164 1 COM=0x01; //清屏
165 1 WriteCommand(COM);
166 1 Delay(1);
167 1 }
168
169 /*void Creat_CGRAM(void) //调用自己的字库时如同调用CGROM一样
170 {
171 unsigned char i,j,k,tmp;
172
173 tmp=0x40;//设置CGRAM地址的格式字 CGRAM地址格式很复杂 01 000 000 其中01是固定的 左起第一个000是代码的
-大小,最后的000是个偏移量(存储每个代码数据的偏移量)
174 k=0;
175 for(j=0;j<8;j++) {
176 for(i=0;i<8;i++) {
177 WriteCommand(tmp+i); // 设置自定义字符的 CGRAM 地址
C51 COMPILER V7.09 TEXT1 09/05/2008 10:33:02 PAGE 4
178 Delay(12);
179 WriteData(CGTAB[k]); // 向CGRAM写入自定义字符表的数据
180 k++;
181 Delay(12);
182 }
183 tmp=tmp+8; //写完00H的8个数据后,转入写01H的8个数据
184 }
185 }
186
187 void Display_input_CGRAM(void)
188 {
189 unsigned char i;
190
191 COM=0x06; //设置输入方式:数据读、写操作后,AC自动增一,数据读、写操作,画面不动
192 WriteCommand(COM);
193
194 COM=0x80; //设置DDRAM
195 WriteCommand(COM);
196
197 for(i=0;i<=8;i++){
198 DAT=Tab_z[i];
199 WriteData(DAT);
200 Delay(10);
201 }
202 }
203 */
204 void main(void)
205 {
206 1 // unsigned char i;
207 1 unsigned char i,j,k,tmp;
208 1 InitLCD();
209 1
210 1 Delay(100);
211 1
212 1 /* tmp=0x40;//设置CGRAM地址的格式字 CGRAM地址格式很复杂 01 000 000 其中01是固定的 左起第一个000是代码
-的大小,最后的000是个偏移量(存储每个代码数据的偏移量)
213 1 k=0;
214 1 for(j=0;j<8;j++) {
215 1 for(i=0;i<8;i++) {
216 1 WriteCommand(tmp+i); // 设置自定义字符的 CGRAM 地址
217 1 Delay(12);
218 1 WriteData(CGTAB[k]); // 向CGRAM写入自定义字符表的数据
219 1 k++;
220 1 Delay(12);
221 1 }
222 1 tmp=tmp+8; //写完00H的8个数据后,转入写01H的8个数据
223 1 }
224 1 //Creat_CGRAM();
225 1 //Display_input_CGRAM();
226 1 //Delay(1);
227 1
228 1 COM=0x80; //设置DDRAM
229 1 WriteCommand(COM);
230 1
231 1 LCDPosition(0x00);
232 1
233 1 Delay(1);
234 1
235 1 for(i=0;i<10;i++){
236 1 DAT=Tab_z[i];
237 1 WriteData(DAT);
238 1 }
C51 COMPILER V7.09 TEXT1 09/05/2008 10:33:02 PAGE 5
239 1 Delay(100);
240 1 */
241 1 tmp=0x40;//设置CGRAM地址的格式字 CGRAM地址格式很复杂 01 000 000 其中01是固定的 左起第一个000是代码的
-大小,最后的000是个偏移量(存储每个代码数据的偏移量)
242 1 k=0;
243 1 for(j=0;j<8;j++) {
244 2 for(i=0;i<8;i++) {
245 3 WriteCommand(tmp+i); // 设置自定义字符的 CGRAM 地址
246 3 Delay(12);
247 3 WriteData(sanjiaobo[k]); // 向CGRAM写入自定义字符表的数据
248 3 k++;
249 3 Delay(12);
250 3 }
251 2 tmp=tmp+8; //写完00H的8个数据后,转入写01H的8个数据
252 2 }
253 1
254 1 COM=0x80; //设置DDRAM
255 1 WriteCommand(COM);
256 1
257 1 LCDPosition(0x00);
258 1
259 1 Delay(1);
260 1
261 1 for(i=0;i<4;i++){
262 2 DAT=Tab_z[i];
263 2 WriteData(DAT);
264 2 }
265 1
266 1 LCDPosition(0x40);
267 1 for(i=4;i<12;i++){
268 2 DAT=Tab_z[i];
269 2 WriteData(DAT);
270 2 }
271 1 Delay(100);
272 1 while(1);
273 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 329 ----
CONSTANT SIZE = 76 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -