📄 12864.lst
字号:
404 1 LCD_EN = 0; /* 使能信号为L */
405 1 LCD_RS = 0; /* 置寄存器选择为L */
406 1 LCD_RW = 0; /* 置读/写选择为L */
407 1 LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
408 1 LCD_EN = 1; /* 使能信号为H */
409 1 Delay_us(1); /* 延时2us */
410 1 LCD_EN = 0; /* 使能信号为L */
411 1 LCD_CS1 = 1; /* 置片选1为L */
412 1 LCD_CS2 = 1; /* 置片选2为L */
413 1 }
414
415
416 /*----------------------------------------------------------------------------
417 下面这个函数用于向液晶模块写入显示数据。
418 函数入口参数:Data------ 向液晶模块写入的显示数据 。
419 CS_Num-------左右半屏的选数值
420 ----------------------------------------------------------------------------*/
421 void LCD_WriteData(uchar Data,uchar CS_Num)
422 {
423 1 LCD_Check_Busy();
424 1 if(CS_Num==1) /*选择左半屏*/
425 1 {
426 2 LCD_CS1 = 0;
427 2 LCD_CS2 = 1;
C51 COMPILER V8.02 12864 04/20/2007 19:40:37 PAGE 8
428 2 }
429 1 else if(CS_Num==2) /*选择右半屏*/
430 1 {
431 2 LCD_CS1 = 1;
432 2 LCD_CS2 = 0;
433 2 }
434 1 LCD_EN = 0;
435 1 LCD_RS = 1; /* 置寄存器选择为H */
436 1 LCD_RW = 0; /* 置读/写选择为L */
437 1 LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
438 1 LCD_EN = 1; /* 使能信号为H */
439 1 Delay_us(1); /* 延时2us */
440 1 LCD_EN = 0; /* 使能信号为L */
441 1 LCD_CS1= 1; /* 置片选1为L */
442 1 LCD_CS2= 1; /* 置片选2为L */
443 1 }
444
445
446 /*---------------------------------------------------------------------------
447 *下面这个函数用于向液晶模块左右半屏写入图象显示数据。
448 *函数入口参数:DisBuf-----向液晶模块写入的图象显示数据
449 Side_Num-----液晶模块左右半屏的选择
450 ---------------------------------------------------------------------------*/
451 void LCD_Graph_Play(uchar *DisBuf,uchar Side_Num)
452 {
453 1 uchar i,k,COM;
454 1
455 1 for(i=0;i<8;i++)
456 1 {
457 2 COM=0xB8+i;
458 2 LCD_WriteCommand(COM,Side_Num);
459 2 COM=0x40;
460 2 LCD_WriteCommand(COM,Side_Num);
461 2
462 2 for(k=0;k<64;k++)
463 2 {
464 3 LCD_WriteData(DisBuf[i*64+k],Side_Num);
465 3 }
466 2 }
467 1 Delay_us(2);
468 1 }
469
470 /*---------------------------------------------------------------------------
471 *下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
472 *函数入口参数:DisBuf-----向液晶模块写入的汉字显示数据
473 Side_Num------液晶模块左右半屏的选择数
474 Page_Num------开始显示页数(0----7),共八页
475 Clm_Num------开始显示列数 (16的倍数),共64列
476 Word_Num------每页显示的汉字个数(最多为4个)
477 ---------------------------------------------------------------------------*/
478 void LCD_Play(uchar Page_Num,uchar Clm_Num,uchar Word_Num,uchar *DisBuf,uchar Side_Num)
479 {
480 1 uchar i,k,COM;
481 1
482 1 COM=0xB8+Page_Num;
483 1 LCD_WriteCommand(COM,Side_Num);
484 1 COM=0x40+Clm_Num;
485 1 LCD_WriteCommand(COM,Side_Num);
486 1 for(i=0;i<Word_Num;i++)
487 1 {
488 2 for(k=0;k<16;k++)
489 2 {
C51 COMPILER V8.02 12864 04/20/2007 19:40:37 PAGE 9
490 3 LCD_WriteData(DisBuf[k+32*i],Side_Num);
491 3 }
492 2 }
493 1
494 1 Page_Num++;
495 1 COM=0xB8+Page_Num;
496 1 LCD_WriteCommand(COM,Side_Num);
497 1 COM=0x40+Clm_Num;
498 1 LCD_WriteCommand(COM,Side_Num);
499 1 for(i=0;i<Word_Num;i++)
500 1 {
501 2 for(k=16;k<32;k++)
502 2 {
503 3 LCD_WriteData(DisBuf[k+32*i],Side_Num);
504 3 }
505 2 }
506 1 Delay_us(2);
507 1 }
508
509
510 /*---------------------------------------------------------------------------
511 下面这个函数用于液晶模块的清屏。
512 ---------------------------------------------------------------------------*/
513 void LCD_CLR(uchar Side_Num)
514 {
515 1 uchar i,k,COM;
516 1
517 1 for(i=0;i<8;i++)
518 1 {
519 2 COM=0xB8+i;
520 2 LCD_WriteCommand(COM,Side_Num);
521 2 COM=0x40;
522 2 LCD_WriteCommand(COM,Side_Num);
523 2
524 2 for(k=0;k<64;k++)
525 2 {
526 3 LCD_WriteData(0x00,Side_Num);
527 3 }
528 2 }
529 1 Delay_us(2);
530 1 }
531
532
533 /*---------------------------------------------------------------------------
534 下面这个函数用于向液晶模块初始化。
535 如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
536 ---------------------------------------------------------------------------*/
537 void LCD_Initial(void)
538 {
539 1 LCD_RST = 0; /* 置复位信号为低电平 */
540 1 Delay_us(2);
541 1 LCD_RST = 1; /* 置复位信号为高电平 */
542 1 LCD_WriteCommand(0x3F,Left); /*显示开*/
543 1 LCD_WriteCommand(0x3F,Right);
544 1 LCD_WriteCommand(0xC0,Left); /*起始行*/
545 1 LCD_WriteCommand(0xC0,Right);
546 1 LCD_WriteCommand(0xB8,Left); /*起始页*/
547 1 LCD_WriteCommand(0xB8,Right);
548 1 LCD_WriteCommand(0x40,Left); /*起始列*/
549 1 LCD_WriteCommand(0x40,Right);
550 1 }
551
C51 COMPILER V8.02 12864 04/20/2007 19:40:37 PAGE 10
552
553
554 /*---------------------------------------------------------------------------
555 下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
556 ---------------------------------------------------------------------------*/
557 void main(void)
558 {
559 1
560 1 LCD_Initial();
561 1 LCD_CLR(Left);
562 1 LCD_CLR(Right);
563 1 LCD_Play(3,0,4,Table,Left);
564 1 LCD_Play(3,0,4,Table0,Right);
565 1 Delay_x10ms(250);
566 1 Delay_x10ms(250);
567 1 Delay_x10ms(250);
568 1 Delay_x10ms(250);
569 1 LCD_CLR(Left);
570 1 LCD_CLR(Right);
571 1 LCD_Graph_Play(Table1,Left);
572 1 LCD_Graph_Play(Table2,Right);
573 1 LCD_Play(6,0,4,Table8,Left);
574 1 LCD_Play(6,0,4,Table9,Right);
575 1 Delay_x10ms(250);
576 1 Delay_x10ms(250);
577 1 Delay_x10ms(250);
578 1 Delay_x10ms(250);
579 1 LCD_Graph_Play(Table5,Left);
580 1 LCD_Graph_Play(Table5,Right);
581 1 LCD_Play(6,0,4,Table3,Left);
582 1 LCD_Play(6,0,4,Table4,Right);
583 1 Delay_x10ms(250);
584 1 Delay_x10ms(250);
585 1 Delay_x10ms(250);
586 1 Delay_x10ms(250);
587 1 LCD_Graph_Play(Table6,Left);
588 1 LCD_Graph_Play(Table7,Right);
589 1 Delay_x10ms(250);
590 1 Delay_x10ms(250);
591 1 Delay_x10ms(250);
592 1 Delay_x10ms(250);
593 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 631 ----
CONSTANT SIZE = 3328 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 14
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 + -