📄 lcd.lst
字号:
794 3
795 3
796 3 lcdadd=lcdadd+40; //30
797 3 wlcdi(0x46);
798 3 wlcdd(lcdadd%256);
799 3 wlcdd(lcdadd/256);
800 3 }
801 2 lcdadd=lcdadd-319;
802 2 wlcdi(0x46);
803 2 wlcdd(lcdadd%256);
804 2 wlcdd(lcdadd/256);
805 2 }
806 1 }
807
808
809
810 /*
811 void draw_line(uint x,y,x1,y1)
812 {
813
814 uint i;
815 float a,b,delta_x,delta_y,delta;
816 a=x;b=y;
817 delta_x=x1-a;delta_y=y1-b;
818 delta=fabs((fabs(delta_x)>fabs(delta_y))?delta_x:delta_y);
819 for (i=0;i<delta;i++)
820 {line(x,y,x,y,1); a+=delta_x/delta;b+=delta_y/delta;x=a;y=b;}
821
822 }
823
824
825 */
826 void HW_line(int x,y,x1,y1,bit WR)
827 {
828 1 float XL,fx,fy,bz1,bz2;
829 1 int i,ii;
830 1 bz1=1;bz2=1;
831 1
832 1 fy=y1-y+.0001;fx=x1-x+.0001;
833 1 XL=fy/fx;
834 1 if(x>x1){i=x1;x1=x;x=i;i=y1;y1=y;y=i;}
835 1 for (i=x;i<=x1;i++){ii=XL*(i-x)+y+.5;line (i,ii,i,ii,WR); }
836 1 XL=fx/fy;
837 1 if(y>y1){i=y1;y1=y;y=i;i=x1;x1=x;x=i;}
838 1 for (i=y;i<=y1;i++){ii=XL*(i-y)+x+.5;line (ii,i,ii,i,WR); }
839 1
840 1
841 1 }
842
843
844
845
846
847 void line(uint x,y,x1,y1,bit WR)
848 {
849 1 uint i,ii;
850 1 unsigned int lcdadd,lcddata,lcdd;
851 1 if(x>320) x=319;
852 1 if(x1>320) x1=319;
853 1 if(y>240) y=239;
854 1 if(y1>240) y1=239;
855 1 if(x<0) x=0;
C51 COMPILER V7.50 LCD 04/10/2009 16:27:31 PAGE 15
856 1 if(x1<0) x1=0;
857 1 if(y<0) y=0;
858 1 if(y1<0) y1=0;
859 1
860 1 for (i=y;i<=y1;i++)
861 1 {
862 2 for (ii=x;ii<=x1;ii++)
863 2 {
864 3 // if (x1==x)
865 3 {
866 4
867 4 if((x1>ii+7)&&(ii%8==0))
868 4 {
869 5 lcdadd=ii/8+i*40+9600;
870 5 lcdd=0xff;
871 5 ii=ii+7;
872 5 goto s1;
873 5 }
874 4 lcdadd=ii/8+i*40+9600;
875 4 lcddata=ii%8;
876 4
877 4 wlcdi(0x46);
878 4 wlcdd(lcdadd%256);
879 4 wlcdd(lcdadd/256);
880 4 wlcdi(0x43);
881 4 lcdd=rlcdd();
882 4 s1:
883 4 wlcdi(0x46);
884 4 wlcdd(lcdadd%256);
885 4 wlcdd(lcdadd/256);
886 4 wlcdi(0x42);
887 4 lcddata=1<<(7-lcddata);
888 4 if (WR==1) lcddata=lcddata|lcdd;
889 4 else lcddata=(~lcddata)&lcdd;
890 4
891 4 wlcdd(lcddata);
892 4
893 4 }
894 3 }
895 2 }
896 1
897 1 lcddw(7,14);
898 1 //lcdhz(0);
899 1 lcddw(7,14);
900 1 //lcdhz(0);
901 1
902 1 }
903
904
905
906
907
908
909
910
911
912 /*
913
914 void print (void)
915 {
916 int i,ii;
917 P4&=0x7f;
C51 COMPILER V7.50 LCD 04/10/2009 16:27:31 PAGE 16
918 if(dyf==1) prtbusy();
919 else goto end;
920 for (i=0;i<160;i++)
921 {
922 if (dyf==0) break;
923 STB=0;
924 P5=d[i]
925 xspdelay(200);
926 STB=1;
927 xspdelay(200);
928 STB=0;
929 //xspdelay(200);
930 if(P5==0x0a) break;
931 }
932 end:
933 i=i;
934 P4|=0x80;
935 }
936 */
937 //k>9时快速显示 行、列、快、
938 void lcdk( uchar h,l,k,i)
939 {
940 1 uchar oldkey;
941 1 uint sx,sy,ex,ey,ii,iii;
942 1 oldkey=key;
943 1 sx=l*16-16;
944 1 sy=h*20;
945 1 ex=sx+k*16+30;
946 1 ey=sy+17;
947 1 if (i==1)
948 1 {
949 2 line(sx,sy,sx,ey,1);
950 2 line(ex,sy,ex,ey,1);
951 2 line(ex+1,sy+1,ex+1,ey+1,1);
952 2 line(sx,sy,ex,sy,1);
953 2 line(sx,ey,ex,ey,1);
954 2 line(sx+1,ey+1,ex+1,ey+1,1);
955 2 }
956 1 if (i==0)
957 1 {
958 2 lcdzt(2);
959 2 //bwlcdi(0x59);
960 2 //bwlcdd(0x04);
961 2 //k=k%10;
962 2 for (iii=0;iii<19;iii++)
963 2 {
964 3 bwlcdi(0x46);
965 3 bwlcdd((9600+h*800+l*2-2+iii*40)%256);
966 3 bwlcdd((9600+h*800+l*2-2+iii*40)/256);
967 3 bwlcdi(0x42);
968 3 for (ii=0;ii<=(k%10*2+3);ii++) bwlcdd(0xff);
969 3
970 3 }
971 2 // else
972 2 // for (iii=0;iii<19;iii++)
973 2 // {
974 2 // bwlcdi(0x46);
975 2 // bwlcdd((9600+h*800+l*2+iii*40)%256);
976 2 // bwlcdd((9600+h*800+l*2+iii*40)/256);
977 2 // bwlcdi(0x42);
978 2 // bwlcdd(0xff);
979 2 // bwlcdd(0xff);
C51 COMPILER V7.50 LCD 04/10/2009 16:27:31 PAGE 17
980 2
981 2 // }
982 2
983 2 lcdzt(1);
984 2 //bwlcdi(0x59);
985 2 //bwlcdd(0x14);
986 2 if (k<10) for (iii=0;iii<=120;iii++) xspdelay(5000);
987 2 }
988 1
989 1 if (i==2)
990 1 {
991 2 lcdzt(2);
992 2 // bwlcdi(0x59);
993 2 // bwlcdd(0x04);
994 2 for (iii=0;iii<19;iii++)
995 2 {
996 3 bwlcdi(0x46);
997 3 bwlcdd((9600+h*800+l*2-2+iii*40)%256);
998 3 bwlcdd((9600+h*800+l*2-2+iii*40)/256);
999 3 bwlcdi(0x42);
1000 3 for (ii=0;ii<=(k*2+3);ii++) bwlcdd(0x00);
1001 3
1002 3 }
1003 2 line(sx,sy,sx,ey,1);
1004 2 line(ex,sy,ex,ey,1);
1005 2 line(ex+1,sy+1,ex+1,ey+1,1);
1006 2 line(sx,sy,ex,sy,1);
1007 2 line(sx,ey,ex,ey,1);
1008 2 line(sx+1,ey+1,ex+1,ey+1,1);
1009 2 lcdzt(1);
1010 2 //bwlcdi(0x59);
1011 2 //bwlcdd(0x14);
1012 2 //for (iii=0;iii<=150;iii++) xspdelay(5000);
1013 2 }
1014 1
1015 1 key=oldkey;
1016 1 }
1017
1018 void lcd_exit(uchar h,l)
1019 {
1020 1
1021 1 //lcddw(h,l);lcdhz(65);lcdhz(12);
1022 1 strcpy(dispbuf,"Exit");
1023 1 lcdsz(h,l*2,4);
1024 1 lcdk(h,l,2,1);
1025 1 }
1026
1027
1028 void lcd_enter(uchar h,l)
1029 {
1030 1
1031 1 //lcddw(h,l);lcdhz(55);lcdhz(57);
1032 1 strcpy(dispbuf," OK ");
1033 1 lcdsz(h,l*2,4);
1034 1 lcdk(h,l,2,1);
1035 1 }
1036
1037 void lcd_next(uchar h,l)
1038 {
1039 1
1040 1 //lcddw(h,l);lcdhz(105);lcdhz(106);
1041 1 strcpy(dispbuf,"Next");
C51 COMPILER V7.50 LCD 04/10/2009 16:27:31 PAGE 18
1042 1 lcdsz(h,l*2,4);
1043 1 lcdk(h,l,2,1);
1044 1 }
1045
1046
1047
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3519 ----
CONSTANT SIZE = 2879 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 103
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -