📄 12864a-3.lst
字号:
239 /*------------------首屏显示--------------------------*/
240 void ceshi()
241 {write_com(0x01);//清除显示,并且设定地址指针为00H
C51 COMPILER V8.08 12864A_3 05/01/2009 00:31:52 PAGE 5
242 1 delay(5);
243 1
244 1 write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
245 1 hzkdis(" yzx.2288.org");
246 1
247 1 write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
248 1 hzkdis("承泰单片机开发网");
249 1
250 1 write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
251 1 hzkdis("电话:13983293681");
252 1
253 1 write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
254 1 hzkdis("测试程序: 余承泰");
255 1
256 1
257 1 }
258 /*------------------显示图片------------------------*/
259 void Disp_Img(unsigned char code *img)
260 { unsigned int j=0;
261 1 unsigned char x,y,i;
262 1 for(i=0;i<9;i+=8)
263 1 for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙*/
264 1 for(x=0;x<8;x++)
265 1 { write_com(0x36);//功能设置---8BIT控制界面,扩充指令集
266 2 write_com(y+0x80); //行地址
267 2 write_com(x+0x80+i); //列地址
268 2 write_com(0x30);
269 2 write_data(img[j++]);
270 2 write_data(img[j++]);
271 2 }
272 1
273 1 }
274 /*------------------清整个GDRAM空间----------------------------*/
275 void clrgdram()
276 { unsigned char x,y;
277 1 for(y=0;y<64;y++)
278 1 for(x=0;x<16;x++)
279 1 { write_com(0x34);
280 2 write_com(y+0x80); //行地址
281 2 write_com(x+0x80); //列地址
282 2 write_com(0x30);
283 2 write_data(0x00);
284 2 write_data(0x00);
285 2 }
286 1 }
287 /*------------------整屏写入数据:全亮,或者竖条-----------------------------*/
288 void lcdfill(unsigned char disdata)
289 { unsigned char x,y;
290 1 for(y=0;y<32;y++)
291 1 for(x=0;x<16;x++)
292 1 { write_com(0x36);
293 2 write_com(y+0x80); //行地址
294 2 write_com(x+0x80); //列地址
295 2 write_com(0x30);
296 2 write_data(disdata);
297 2 write_data(disdata);
298 2 }
299 1 write_com(0x34);
300 1 write_com(0x36);
301 1 }
302 /*------------------显示横-----------------------------*/
303 void Disp_H_Line()
C51 COMPILER V8.08 12864A_3 05/01/2009 00:31:52 PAGE 6
304 { unsigned char x,y;
305 1 unsigned char k=0x00;
306 1 for(y=0;y<32;y++)
307 1 { k=~k;
308 2 for(x=0;x<16;x++)
309 2 { write_com(0x36);
310 3 write_com(y+0x80); //行地址
311 3 write_com(x+0x80); //列地址
312 3 write_com(0x30);
313 3 write_data(k);
314 3 write_data(k);
315 3 };
316 2 }
317 1 write_com(0x34);
318 1 write_com(0x36);
319 1 }
320 /*------------------显示边框-------------------------------*/
321 void Frame()
322 {unsigned char x,y;
323 1 lcdfill(0x00);
324 1 for(x=0;x<9;x+=8)
325 1 for(y=0;y<32;y++)
326 1 { write_com(0x36);
327 2 write_com(y+0x80); //行地址
328 2 write_com(x+0x80); //列地址
329 2 write_com(0x30);
330 2 write_data(0x80);
331 2 write_data(0x00);
332 2
333 2 write_com(0x36);
334 2 write_com(y+0x80); //行地址
335 2 write_com(x+0x87); //列地址
336 2 write_com(0x30);
337 2 write_data(0x00);
338 2 write_data(0x01);
339 2
340 2 }
341 1 for(y=0;y<2;y++)
342 1 for(x=0;x<8;x++)
343 1 {write_com(0x36);
344 2 write_com(y*31+0x80); //行地址
345 2 write_com(x+0x80+8*y); //列地址
346 2 write_com(0x30);
347 2 write_data(0xff);
348 2 write_data(0xff);
349 2 }
350 1 write_com(0x34);
351 1 write_com(0x36);
352 1 }
353
354 /*------------------在第7列的位置加入两条竖线--------------------------*/
355 void shuxian()
356 { unsigned char x,y;
357 1
358 1 for(x=0;x<9;x+=8)
359 1 for(y=0;y<32;y++)
360 1 { write_com(0x36);
361 2 write_com(y+0x80); //行地址
362 2 write_com(x+0x86); //列地址
363 2 write_com(0x30);
364 2 write_data(0x00);
365 2 write_data(0x14);
C51 COMPILER V8.08 12864A_3 05/01/2009 00:31:52 PAGE 7
366 2 };
367 1 }
368
369 /*------------------清屏命令--------------------------*/
370 void clrscreen()
371 {
372 1 write_com(0x01);
373 1 delay(10);
374 1 }
375
376 /*------------------唐诗《静夜思》--------------------------*/
377 void gushi_display()
378 { write_com(0x30);
379 1 clrscreen();
380 1 write_com(0x80+FIRST_ADDR);
381 1 hzkdis("白日依山尽,");
382 1 write_com(0x90+FIRST_ADDR);
383 1 hzkdis("黄河入海流。");
384 1 write_com(0x88+FIRST_ADDR);
385 1 hzkdis("欲穷千里目,");
386 1 write_com(0x98+FIRST_ADDR);
387 1 hzkdis("更上一层楼。");
388 1 write_com(0xb3+FIRST_ADDR);
389 1 hzkdis("登鹳雀楼");
390 1 write_com(0xaa+FIRST_ADDR);
391 1 hzkdis("王之焕");
392 1 }
393
394 main()
395 { unsigned char i;
396 1 while(1)
397 1 {
398 2 ee=0;
399 2 ee1=0;
400 2 ee3=0;
401 2 PSB=0;
402 2 delay(300);
403 2 PSB=1;
404 2 RW=0;
405 2 lcdreset(); //初始化LCD屏
406 2 CGRAM();
407 2 ceshi(); //显示测试字样
408 2 delay(2000);
409 2
410 2 clrgdram();
411 2 clrscreen(); //清屏
412 2 Disp_Img(BMP); //调入一幅图画
413 2 delay(30000);
414 2
415 2 Disp_Img(BMP1); //调入一幅图画
416 2 delay(20000);
417 2
418 2 lcdfill(0xff); //显示全开
419 2 delay(2000);
420 2
421 2 Disp_H_Line(); //显示横条
422 2 delay(2000);
423 2
424 2 lcdfill(0xaa); //显示竖条
425 2 delay(2000);
426 2
427 2 Frame(); //显示边框
C51 COMPILER V8.08 12864A_3 05/01/2009 00:31:52 PAGE 8
428 2 delay(2000);
429 2
430 2 gushi_display(); //显示唐诗
431 2 clrgdram();
432 2
433 2 write_com(0x87); //调用自定义的CGRAM的代码
434 2 write_data(0x00);
435 2 write_data(0x00);
436 2 delay(400);
437 2
438 2 shuxian(); //加入两条竖线
439 2 delay(8000);
440 2 write_com(0x30);
441 2 delay(2000);
442 2
443 2 gushi_display();
444 2 delay(6000);
445 2 for(i=0;i<8;i++) //字符循环左移
446 2 {write_com(0x18);
447 3 delay(2000);}
448 2
449 2 gushi_display();
450 2 delay(6000);
451 2 write_com(0x36);
452 2 write_com(0x04); //第一行反白显示
453 2 delay(6000);
454 2 write_com(0x04); //第一行恢复正常
455 2 delay(6000);
456 2 write_com(0x05); //第二行反白显示
457 2 delay(6000);
458 2 write_com(0x05); //第二行恢复正常
459 2 delay(6000);
460 2
461 2 write_com(0x03); //垂直滚动屏幕的内容
462 2 write_com(0x60);
463 2 delay(6000);
464 2 }
465 1 }
466
467
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1119 ----
CONSTANT SIZE = 2214 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
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 + -