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

📄 lcd.lst

📁 flash_download.C8051中的应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
 606   3               x1=x2;
 607   3               x2=temp;
 608   3            }
 609   2            
 610   2            for (i=x1;i<x2+1; i++)
 611   2               LCD_Draw_dot(i,y1,flag);
 612   2         }
 613   1      
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 11  

 614   1         else if (x1==x2)        
 615   1         {
 616   2            if (y1>y2)
 617   2            {
 618   3               temp=y1;
 619   3               y1=y2;
 620   3               y2=temp;
 621   3            }
 622   2         
 623   2            for (i=y1;i<y2+1; i++)
 624   2                  LCD_Draw_dot(x1,i,flag);
 625   2         }
 626   1         else
 627   1         {
 628   2            if (abs(x2-x1)>=abs(y2-y1))
 629   2            {
 630   3               k=1.0*(y2-y1)/(x2-x1);
 631   3               b=y1-k*x1;
 632   3               if (x1>x2)
 633   3               {
 634   4                  temp=x1;
 635   4                  x1=x2;
 636   4                  x2=temp;
 637   4               }
 638   3      
 639   3               for (i=x1;i<x2+1; i++)
 640   3               {
 641   4                  temp=k*i+b;
 642   4                  LCD_Draw_dot(i,temp,flag);
 643   4               }  
 644   3            }
 645   2            else
 646   2            {
 647   3               k=1.0*(x2-x1)/(y2-y1);
 648   3               b=x1-k*y1;
 649   3      
 650   3               if (y1>y2)
 651   3               {
 652   4                  temp=y1;
 653   4                  y1=y2;
 654   4                  y2=temp;
 655   4               }
 656   3      
 657   3               for (i=y1;i<y2+1; i++)
 658   3               {
 659   4                  temp=k*i+b;
 660   4                  LCD_Draw_dot(temp,i,flag);
 661   4               }  
 662   3            }
 663   2         }
 664   1      }
 665          
 666          /***********************************************************************************
 667          * 函数名称:LCD_Draw_circle;
 668          *
 669          * 函数功能描述:以(x,y)为圆心,r为半径画圆;
 670          *              
 671          * 输入参数:unsigned char类型坐标x,y, bool类型标识flag;
 672          *
 673          * 返回数据:none;
 674          *
 675          * 注意:    none;
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 12  

 676          ************************************************************************************/
 677          
 678          void  LCD_Draw_circle(unsigned char x,unsigned char y,unsigned char r,bool flag)
 679          {
 680   1         R_BYTE r_2,i,x1,y1,temp_x;
 681   1         R_WORD temp;
 682   1      
 683   1         r_2=0.707*r;
 684   1         temp=r*r;
 685   1      
 686   1         for (i=0; i<=r_2; i++)
 687   1         {
 688   2            if (flag)
 689   2            {
 690   3               if (!(i&0x01))
 691   3               {  
 692   4      
 693   4                  x1=i;
 694   4                  y1=sqrt(1.0*(temp-x1*x1))+0.5;
 695   4                  LCD_Draw_dot(x1+x,y1+y,flag);
 696   4                  LCD_Draw_dot(-x1+x,y1+y,flag);
 697   4                  LCD_Draw_dot(x1+x,-y1+y,flag);
 698   4                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 699   4            
 700   4                  temp_x=x1;
 701   4                  x1=y1;
 702   4                  y1=temp_x;
 703   4            
 704   4                  LCD_Draw_dot(x1+x,y1+y,flag);
 705   4                  LCD_Draw_dot(-x1+x,y1+y,flag);
 706   4                  LCD_Draw_dot(x1+x,-y1+y,flag);
 707   4                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 708   4               }
 709   3            }
 710   2            else
 711   2            {
 712   3                  x1=i;
 713   3                  y1=sqrt(1.0*(temp-x1*x1))+0.5;
 714   3                  LCD_Draw_dot(x1+x,y1+y,flag);
 715   3                  LCD_Draw_dot(-x1+x,y1+y,flag);
 716   3                  LCD_Draw_dot(x1+x,-y1+y,flag);
 717   3                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 718   3            
 719   3                  temp_x=x1;
 720   3                  x1=y1;
 721   3                  y1=temp_x;
 722   3            
 723   3                  LCD_Draw_dot(x1+x,y1+y,flag);
 724   3                  LCD_Draw_dot(-x1+x,y1+y,flag);
 725   3                  LCD_Draw_dot(x1+x,-y1+y,flag);
 726   3                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 727   3            }
 728   2      
 729   2         }
 730   1      }
 731          
 732          /***********************************************************************************
 733          * 函数名称:LCD_Draw_Rectangle;
 734          *
 735          * 函数功能描述:以(x1,y1)和(x2,y2)为对角点画矩形;
 736          *              
 737          * 输入参数:BYTE类型坐标x1,y1,x2,y2; bool类型标识flag;
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 13  

 738          *
 739          * 返回数据:none;
 740          *
 741          * 注意:    none;
 742          ************************************************************************************/
 743          
 744          void  LCD_Draw_Rectangle(unsigned char x1,y1,x2,y2, bool flag)
 745          {
 746   1         LCD_Draw_line(x1,y1,x2,y1,flag);
 747   1         LCD_Draw_line(x1,y1,x1,y2,flag);
 748   1      
 749   1         LCD_Draw_line(x2,y1,x2,y2,flag);
 750   1         LCD_Draw_line(x1,y2,x2,y2,flag);
 751   1      }
 752          
 753          
 754          /***********************************************************************************
 755          * 函数名称:LCD_Draw_FillRectangle;
 756          *
 757          * 函数功能描述:以(x1,y1)和(x2,y2)为对角点画矩形实体;
 758          *              
 759          * 输入参数:BYTE类型坐标x1,y1,x2,y2; bool类型标识flag;
 760          *
 761          * 返回数据:none;
 762          *
 763          * 注意:    none;
 764          ************************************************************************************/
 765          
 766          void  LCD_Draw_FillRectangle(unsigned char x1,y1,x2,y2, bool flag)
 767          {
 768   1         R_BYTE  i;
 769   1         for (i=x1; i<=x2; i++)
 770   1            LCD_Draw_line(i,y1,i,y2,flag);
 771   1      }
 772          
 773          /***********************************************************************************
 774          * 函数名称:LCD_Draw_byte;
 775          *
 776          * 函数功能描述:向LCD写一个字节数据;
 777          *              
 778          * 输入参数:BYTE类型坐标x,y;BYTE类型字节数据value;
 779          *
 780          * 返回数据:none;
 781          *
 782          * 注意:    none;
 783          ************************************************************************************/
 784          
 785          void  LCD_Draw_byte(unsigned char x,y, unsigned char value)
 786          {
 787   1         R_BYTE temp,bit_x;
 788   1      
 789   1         bit_x=y%8;
 790   1         y=y/8;
 791   1      
 792   1         if (bit_x==0)
 793   1            lcd_wrda(x,y,value);
 794   1         else
 795   1         {  
 796   2            temp=lcd_rdda(x,y);  
 797   2            
 798   2            temp&=(0xff>>(8-bit_x));
 799   2            temp|=(value<<bit_x);
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 14  

 800   2            lcd_wrda(x,y,temp);
 801   2         
 802   2            temp=lcd_rdda(x,y+1);
 803   2            temp&=(0xff<<bit_x);
 804   2            temp|=(value>>(8-bit_x));
 805   2            lcd_wrda(x,y+1,temp);      
 806   2         }
 807   1      }
 808          
 809          /***********************************************************************************
 810          * 函数名称:LCD_Disp_Word;
 811          *
 812          * 函数功能描述:向LCD写一组数据,显示黑字符;
 813          *              
 814          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据code区指针p;
 815          *      BYTE类型占用空间line*8行,length列
 816          *
 817          * 返回数据:none;
 818          *
 819          * 注意:    none;
 820          ************************************************************************************/
 821          
 822          void LCD_Disp_Word(unsigned char x,y,unsigned char code *p,unsigned char line,length)
 823          {
 824   1         R_BYTE i,j;
 825   1      
 826   1         y+=(4<<line);  
 827   1         if (y>64)
 828   1            y=64;
 829   1         y=64-y;
 830   1            
 831   1         for (i=0; i<line; i++)
 832   1         for (j=0; j<length; j++)
 833   1            LCD_Draw_byte(x+j,y+i*8, *p++);
 834   1         
 835   1      }
 836          
 837          /***********************************************************************************
 838          * 函数名称: LCD_Disp_Word_F;
 839          *
 840          * 函数功能描述:向LCD写一组数据,显示白字符;
 841          *              
 842          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据code区指针p;
 843          *      BYTE类型占用空间line*8行,length列
 844          *
 845          * 返回数据:none;
 846          *
 847          * 注意:    none;
 848          ************************************************************************************/
 849          
 850          void LCD_Disp_Word_F(unsigned char x,y,unsigned char code *p,unsigned char line,length)
 851          {
 852   1         R_BYTE i,j;
 853   1      
 854   1         y+=(4<<line);  
 855   1         if (y>64)
 856   1            y=64;
 857   1         y=64-y;
 858   1            
 859   1         for (i=0; i<line; i++)
 860   1         for (j=0; j<length; j++)
 861   1            LCD_Draw_byte(x+j,y+i*8, ~(*p++));
C51 COMPILER V7.02b   LCD                                                                  03/06/2006 15:41:23 PAGE 15  

 862   1         
 863   1      }
 864          
 865          /***********************************************************************************
 866          * 函数名称: LCD_Disp_Time;
 867          *
 868          * 函数功能描述:向LCD写一组数据,显示时间;
 869          *              
 870          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据code区指针p;
 871          *      BYTE类型占用空间line*8行,length列
 872          *
 873          * 返回数据:none;
 874          *
 875          * 注意:    none;
 876          ************************************************************************************/
 877          
 878          void LCD_Disp_Time(unsigned char x,y,unsigned char code *p,unsigned char line,length)
 879          {
 880   1         R_BYTE i,j;
 881   1      
 882   1         y+=(4<<line);  
 883   1         if (y>64)
 884   1            y=64;
 885   1         y=64-y;
 886   1            
 887   1         for (i=0; i<line; i++)
 888   1         for (j=0; j<length; j++)
 889   1            LCD_Draw_byte(x+j,y+i*8, *p++);
 890   1      }
 891          
 892          /***********************************************************************************/
 893          // 文件结束
 894          /***********************************************************************************/
 895          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3791    ----
   CONSTANT SIZE    =    771    ----
   XDATA SIZE       =      8      64
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      28
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -