📄 lcd_12864.lst
字号:
504 4 }
505 3 else if(b==0)
506 3 {
507 4 for(i=a;i<0;i++)
508 4 Locat_Dot(a1+i,b1);
509 4 }
510 3 else
511 3 {
512 4 for(i=b;i<0;i++)
513 4 {
514 5 a=a1+i/y_add;
515 5 Locat_Dot(a,b1+i);
516 5 }
517 4 }
518 3 }
519 2 }//x<0: 反向
520 1 }
521
522 /*----------------显示图形-----------------*/
523 void img_disp (uchar code *img)
524 {
525 1 uchar i,j;
526 1 for(j=0;j<32;j++)
527 1 {
528 2 for(i=0;i<8;i++)
529 2 {
530 3 wr_lcd (comm,0x34);
531 3 wr_lcd (comm,y+j);
532 3 wr_lcd (comm,x1+i);
533 3 wr_lcd (comm,0x30);
534 3 wr_lcd (dat,img[j*16+i*2]);
535 3 wr_lcd (dat,img[j*16+i*2+1]);
536 3 }
537 2 }
538 1 for(j=32;j<64;j++)
539 1 {
540 2 for(i=0;i<8;i++)
541 2 {
542 3 wr_lcd (comm,0x34);
543 3 wr_lcd (comm,y+j-32);
544 3 wr_lcd (comm,x2+i);
545 3 wr_lcd (comm,0x30);
546 3 wr_lcd (dat,img[j*16+i*2]);
547 3 wr_lcd (dat,img[j*16+i*2+1]);
548 3 }
549 2 }
550 1 wr_lcd (comm,0x36);
551 1 }
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 10
552 /*-------------下半屏显示图形--------------*/
553 void img_disp1 (uchar code *img)
554 {
555 1 uchar i,j;
556 1 for(j=0;j<32;j++)
557 1 {
558 2 for(i=0;i<8;i++)
559 2 {
560 3 wr_lcd (comm,0x34);
561 3 wr_lcd (comm,y+j);
562 3 wr_lcd (comm,x2+i);
563 3 wr_lcd (comm,0x30);
564 3 wr_lcd (dat,img[j*16+i*2]);
565 3 wr_lcd (dat,img[j*16+i*2+1]);
566 3 }
567 2 }
568 1 wr_lcd (comm,0x36);
569 1 }
570 /*--------------显示点阵----------------*/
571 void lat_disp (uchar data1,uchar data2)
572 {
573 1 uchar i,j,k,x;
574 1 x=x1;
575 1 for(k=0;k<2;k++)
576 1 {
577 2 for(j=0;j<16;j++)
578 2 {
579 3 for(i=0;i<8;i++)
580 3 {
581 4 wr_lcd (comm,0x34);
582 4 wr_lcd (comm,y+j*2);
583 4 wr_lcd (comm,x+i);
584 4 wr_lcd (comm,0x30);
585 4 wr_lcd (dat,data1);
586 4 wr_lcd (dat,data1);
587 4 }
588 3 for(i=0;i<8;i++)
589 3 {
590 4 wr_lcd (comm,0x34);
591 4 wr_lcd (comm,y+j*2+1);
592 4 wr_lcd (comm,x+i);
593 4 wr_lcd (comm,0x30);
594 4 wr_lcd (dat,data2);
595 4 wr_lcd (dat,data2);
596 4 }
597 3 }
598 2 x=x2;
599 2 }
600 1 wr_lcd (comm,0x36);
601 1 }
602 /*-----------------------------------------------*/
603 //当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
604 void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
605 {
606 1 uchar i,j;
607 1 for(j=0;j<yl;j++)
608 1 {
609 2 for(i=0;i<xl;i++)
610 2 {
611 3 wr_lcd (comm,0x34);
612 3 wr_lcd (comm,y0+j);
613 3 wr_lcd (comm,x0+i);
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 11
614 3 wr_lcd (comm,0x30);
615 3 wr_lcd (dat,data1);
616 3 wr_lcd (dat,data2);
617 3 }
618 2 }
619 1 wr_lcd (comm,0x36);
620 1 }
621 /*--------------清DDRAM------------------*/
622 void clrram (void)
623 {
624 1 wr_lcd (comm,0x30);
625 1 wr_lcd (comm,0x01);
626 1 }
627 /*---------------------------------------*/
628 void wr_lcd (uchar dat_comm,uchar content)
629 {
630 1 chk_busy ();
631 1 if(dat_comm)
632 1 {
633 2 P0=P0|0x01; //data
634 2 delay(20);
635 2 P0=P0&0xfd; //write
636 2 delay(20);
637 2 }
638 1 else
639 1 {
640 2 P0=P0&0xfe; //command
641 2 delay(20);
642 2 P0=P0&0xfd; //write
643 2 delay(20);
644 2 }
645 1 data1=content; //output data or comm
646 1 P0=P0|0x04;
647 1 delay(50);
648 1 P0=P0&0xfb;
649 1
650 1 }
651 uint Read_state()
652 {
653 1 uint rd_data;
654 1 P2MDOUT=0x00;
655 1 data1=0xff;
656 1 chk_busy ( );
657 1 P0=P0|0x01; //rs=1;
658 1 delay(20);
659 1 P0=P0|0x02;//rw=1;
660 1 delay(20);
661 1 P0=P0|0x04;//e=1;
662 1 delay(20);
663 1 rd_data=data1;
664 1 delay(20);
665 1 P0=P0&0xfb;
666 1 P2MDOUT=0xff;
667 1 return( rd_data);
668 1 }
669
670
671 void chk_busy (void)
672
673 {
674 1
675 1 //P74OUT=0xf3;
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 12
676 1
677 1 data1=0xff;
678 1 _nop_();
679 1 delay(10);
680 1 P0=P0|0x02;
681 1 delay(20);
682 1 P0=P0&0xfe;
683 1 delay(20);
684 1
685 1 P0=P0|0x04;
686 1 delay(20);
687 1 P0 =P0&0xfb;
688 1 // while(data1&0x80);
689 1
690 1 delay(20);
691 1 //P74OUT=0xff;
692 1 }
693
694 void delay (uint us) //delay time
695 {
696 1 while(us--);
697 1 }
698 void delay1 (uint ms)
699 {
700 1 uint i,j;
701 1 for(i=0;i<ms;i++)
702 1 for(j=0;j<150;j++)
703 1 delay(1);
704 1 }
705
706
707 /*------------------主程序--------------------*/
708 void main ()
709 {
710 1 System_initial( );
711 1 Port_initial( ) ;
712 1 init_lcd ();
713 1 while (1)
714 1 {
715 2 /*
716 2 lat_disp (0x00,0x00);
717 2 chn_disp (tab1);
718 2 con_disp (0xff,0xff,0x8c,0x80,2,16);
719 2 delay1 (8000);
720 2 clrram();
721 2 lat_disp (0xcc,0xcc);
722 2 delay1 (8000);
723 2 lat_disp (0x00,0x00);
724 2 chn_disp1 (tab31);
725 2 img_disp1 (tab32);
726 2 delay1 (8000);
727 2 */
728 2 clrram();
729 2 delay1 (80);
730 2 //lat_disp (0xff,0x00);
731 2 //delay1 (8000);
732 2 //img_disp (tab5);
733 2 lat_disp (0x00,0x00);
734 2 delay1 (80);
735 2 Line(0,0,30,10);
736 2 Line(0,50,30,50);
737 2 Line(0,50,40,30);
C51 COMPILER V8.02 LCD_12864 05/20/2002 14:31:23 PAGE 13
738 2 Line(20,50,30,60);
739 2 Line(10,0,10,60);
740 2 delay1 (8000);
741 2
742 2 }
743 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2218 ----
CONSTANT SIZE = 3682 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 57
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 + -