📄 yejing12864.lst
字号:
157 };
158
159
160
161
162 //函数声明
163 void initializeLCD(void);
164 void check_busy(void);
165 void l_w_code(char l_code);
166 void l_w_data(char l_data);
167 void r_w_code(char r_code);
168 void r_w_data(char r_data);
169 void l_display(void);
170 void r_display(void);
171
172 //初始化
173 void initializeLCD(void)
174 {
175 1 l_w_code(0x3f); //开显示设置
176 1 l_w_code(0xc0); //设置显示起始行为第一行
177 1 l_w_code(0xb8); //页面地址设置
178 1 l_w_code(0x40); //列地址设为0
179 1 r_w_code(0x3f);
C51 COMPILER V8.02 YEJING12864 04/27/2007 17:07:10 PAGE 4
180 1 r_w_code(0xc0);
181 1 r_w_code(0xb8);
182 1 r_w_code(0x40);
183 1 }
184
185 //检测忙状态
186 void check_busy(void)
187 {
188 1
189 1 E=1;
190 1 RS=0;
191 1 RW=1;
192 1
193 1 P0=0xff;
194 1 ACC=P0;
195 1 while(!busy); //这边我觉得应该是while(busy);可是不行,
196 1 // 看别人这么写的,也就采用了,可把它屏蔽了也没关系,
197 1 //不信的可以试试,我试过了,没这句也可以
198 1
199 1
200 1 }
201
202 //写指令代码(左)
203 void l_w_code(char l_code)
204 {
205 1 check_busy();
206 1 P2=0xf2; //1111 0010;E=1,RW=0,RS=0,CS2=1,CS1=0
207 1 P0=l_code;
208 1 E=1;
209 1 E=0;
210 1 }
211
212 //写显示数据(左)
213 void l_w_data(char l_data)
214 {
215 1 check_busy();
216 1 P2=0xf6; //1111 0110;E=1,RW=0,RS=1,CS2=1,CS1=0
217 1 P0=l_data;
218 1 E=1;
219 1 E=0;
220 1 }
221
222
223 //写指令代码(右)
224 void r_w_code(char r_code)
225 {
226 1 check_busy();
227 1 P2=0xf1; //1111 0001;E=1,RW=0,RS=0,CS2=0,CS1=1
228 1 P0=r_code;
229 1 E=1;
230 1 E=0;
231 1 }
232
233 //写显示数据(右)
234 void r_w_data(char r_data)
235 {
236 1 check_busy();
237 1 P2=0xf5; //1111 0101;E=1,RW=0,RS=1,CS2=0,CS1=1
238 1 P0=r_data;
239 1 E=1;
240 1 E=0;
241 1 }
C51 COMPILER V8.02 YEJING12864 04/27/2007 17:07:10 PAGE 5
242
243 void display()
244 {k=0;
245 1 for(i=0xb8;i<0xc0;i++)
246 1 {
247 2 l_w_code(i); //写入页地址
248 2 l_w_code(0x40); //第一列开始
249 2 for(j=64;j>0;j--)
250 2 {
251 3 l_w_data(tab1[k++]);
252 3 }
253 2 r_w_code(i); //写入页地址
254 2 r_w_code(0x40); //第一列开始
255 2 for(j=64;j>0;j--)
256 2 {
257 3 r_w_data(tab1[k++]);
258 3 }
259 2 }
260 1 }
261 void display1()
262 {k=0;
263 1 for(i=0xb8;i<0xc0;i++)
264 1 {
265 2 l_w_code(i); //写入页地址
266 2 l_w_code(0x40); //第一列开始
267 2 for(j=64;j>0;j--)
268 2 {
269 3 l_w_data(tab2[k++]);
270 3 }
271 2 r_w_code(i); //写入页地址
272 2 r_w_code(0x40); //第一列开始
273 2 for(j=64;j>0;j--)
274 2 {
275 3 r_w_data(tab2[k++]);
276 3 }
277 2 }
278 1 }
279
280
281 void main(void)
282 {
283 1 P0=0x00;
284 1 initializeLCD();
285 1 while(1)
286 1 {
287 2 k=0;
288 2 //l_display();
289 2 //r_display();
290 2
291 2 display();
292 2 for (k=0;k<50000;k++);
293 2 display1();
294 2 for (k=0;k<50000;k++);
295 2 }
296 1 }
297
298
299
300
301
302
303
C51 COMPILER V8.02 YEJING12864 04/27/2007 17:07:10 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = 2048 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -