📄 text12.lst
字号:
623 "E_mail:syl@gptlcm.cn support@gptlcm.cn "
624 };
625 /*---------------延时子程序----------------*/
626 void delay (uint us)
627 {
628 1 while(us--);
629 1 }
630 void delay1 (uint ms)
631 {
632 1 uint i,j;
633 1 for(i=0;i<ms;i++)
634 1 for(j=0;j<1000;j++)
635 1 ;
636 1 }
637 void chk_busy (void) //忙检测
638 {
639 1 //P1=0xff;
640 1 a0=0;
641 1 wr=1;
642 1 rd=0;
643 1 while(busy==1)
644 1 ;
645 1 rd=1;
646 1 }
647 void wr_comm (uchar comm) //写命令
648 {
649 1 chk_busy ();
650 1 a0=1;
651 1 rd=1;
652 1 data_ora=comm;
653 1 wr=0;
654 1 // delay(2);
655 1 wr=1;
656 1 }
657
658 void wr_data (uchar dat) //写数据
659 {
660 1 chk_busy ();
661 1 a0=0;
662 1 rd=1;
663 1 data_ora=dat;
664 1 wr=0;
665 1 // delay(2);
666 1 wr=1;
667 1 }
668
669 uchar rd_data (uchar dat) //读数据
670 {
671 1 a0=1;
672 1 wr=1;
673 1 rd=0;
674 1 ;
675 1 dat=data_ora;
C51 COMPILER V7.06 TEXT12 05/25/2009 21:56:28 PAGE 12
676 1 rd=1;
677 1 return dat;
678 1 }
679 void wr_xd (uint dat) //写一个16进制数据
680 {
681 1 uchar datl,dath;
682 1 datl=dat;
683 1 dath=dat>>8;
684 1 wr_data (datl); //送低八位
685 1 wr_data (dath); //送高八位
686 1 }
687 //........显示点阵..........
688 void lcd_lattice(uchar dat1,uchar dat2)
689 {
690 1 uchar i,j,k;
691 1 //wr_comm(0x4c); //光标自动移动方向--向右
692 1 wr_comm(0x46);
693 1 wr_xd(0x04b0);
694 1 wr_comm(0x42);
695 1 for(i=0;i<60;i++)
696 1 {
697 2 for(j=0;j<80;j++)
698 2 wr_data(dat1);
699 2 for(k=0;k<80;k++)
700 2 wr_data(dat2);
701 2 }
702 1 }
703
704 /*--------------显示字符------------------*/
705 void disp_eng(uchar code *eng)
706 {
707 1 uchar i,j;
708 1 wr_comm(0x46);
709 1 wr_data(0x00);
710 1 wr_data(0x00);
711 1 //wr_xd(0x0000);
712 1 wr_comm(0x42);
713 1 for(i=0;i<7;i++)
714 1 for(j=0;j<40;j++)
715 1 wr_data(eng[40*i+j]);
716 1 for(i=0;i<96;i++)
717 1 {
718 2 wr_data(0x20+i);
719 2 }
720 1 for(i=0;i<24;i++)
721 1 {
722 2 wr_data(0xa0+i);
723 2 }
724 1 }
725 //..........显示中文...............
726 void disp_character(uchar x,uchar y,uchar x1,uchar y1,uchar x2,uchar y2,uchar code *chn)
727 { //在x,y处显示大小x1,y1的字,显示x2行,每行y2个字
728 1 uchar i,j,k,l; //x为字节数,y为点行数
729 1 for(i=0;i<x2;i++)
730 1 for(j=0;j<y2;j++)
731 1 for(k=0;k<y1;k++)
732 1 for(l=0;l<x1;l++)
733 1 {
734 2 wr_comm(0x46);
735 2 wr_xd(0x04b0+x+40*y+l+k*40+j*x1+i*y1*40);
736 2 wr_comm(0x42);
737 2 wr_data(*chn);
C51 COMPILER V7.06 TEXT12 05/25/2009 21:56:28 PAGE 13
738 2 ++chn;
739 2 }
740 1 }
741
742 //............显示图形..........
743 void disp_photo(uchar x,uchar y,uchar x1,uchar y1,uchar code *pho)
744 {
745 1 uchar i,j; //在x,y处显示大小x1,y1的图形
746 1 wr_comm(0x46);
747 1 wr_xd(0x04b0+x+40*y);
748 1 wr_comm(0x42);
749 1 for(i=0;i<y1;i++)
750 1 for(j=0;j<x1;j++)
751 1 {
752 2 wr_data(*pho);
753 2 ++pho;
754 2 }
755 1 }
756 //.......清屏............
757 void lcd_clear(void)
758 {
759 1 uint i,j;
760 1 wr_comm(0x46); //显示光标地址
761 1 //wr_xd(0x0000);
762 1 wr_data(0x00);
763 1 wr_data(0x00);
764 1 wr_comm(0x42);
765 1 for(i=0;i<135;i++)
766 1 for(j=0;j<80;j++)
767 1 wr_data(0x00);
768 1 }
769
770 //.......初始化...........
771 void init_lcd (void)
772 {
773 1 uchar i;
774 1 rst=1;
775 1 cs=0;
776 1 wr_comm(0x40); //WRITE SYSTEMSET 指令和参数
777 1 for(i=0;i<8;i++)
778 1 wr_data(systab[i]);
779 1 wr_comm(0x44); //WRITE SCROLL 指令和参数
780 1 for(i=0;i<10;i++)
781 1 wr_data(scrtab[i]);
782 1 wr_comm(0x5a); //显示画面水平移动量:00--07点
783 1 wr_data(0x00);
784 1 wr_comm(0x5b); //显示属性:DM1(DM2)=0,文本方式;DM1(DM2)=1,图形方式;OV=1,三重合成;OV=0,两重合成
785 1 wr_data(0x08);
786 1 wr_comm(0x5d);
787 1 wr_data(0x07);
788 1 wr_data(0x8f);
789 1 wr_comm(0x4c); //光标自动移动方向--向右
790 1 wr_comm(0x59); //DISP ON
791 1 wr_data(0x56);
792 1 }
793
794 //...............主程序...............
795 void main()
796 {
797 1 delay(12);
798 1 // SP=0x5f;
799 1
C51 COMPILER V7.06 TEXT12 05/25/2009 21:56:28 PAGE 14
800 1 init_lcd ();
801 1 lcd_clear();
802 1
803 1
804 1 while(1)
805 1 {
806 2
807 2
808 2 disp_photo(0,160,40,80,tab1);
809 2
810 2
811 2
812 2 disp_character(4,19,3,19,4,12,tab);
813 2
814 2
815 2 }
816 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 674 ----
CONSTANT SIZE = 6235 ----
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 + -