⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lst

📁 电机驱动!四相五线的步进电机用C8051F020驱动
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -