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

📄 lcd.lst

📁 CF8051F040开发板的 flash_gb程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 626   2         
 627   2            for (i=y1;i<y2+1; i++)
 628   2                  LCD_Draw_dot(x1,i,flag);
 629   2         }
 630   1         else
 631   1         {
 632   2            if (abs(x2-x1)>=abs(y2-y1))
 633   2            {
 634   3               k=1.0*(y2-y1)/(x2-x1);
 635   3               b=y1-k*x1;
 636   3               if (x1>x2)
 637   3               {
 638   4                  temp=x1;
 639   4                  x1=x2;
 640   4                  x2=temp;
 641   4               }
 642   3      
 643   3               for (i=x1;i<x2+1; i++)
 644   3               {
 645   4                  temp=k*i+b;
 646   4                  LCD_Draw_dot(i,temp,flag);
 647   4               }  
 648   3            }
 649   2            else
 650   2            {
 651   3               k=1.0*(x2-x1)/(y2-y1);
 652   3               b=x1-k*y1;
 653   3      
 654   3               if (y1>y2)
 655   3               {
 656   4                  temp=y1;
 657   4                  y1=y2;
 658   4                  y2=temp;
 659   4               }
 660   3      
 661   3               for (i=y1;i<y2+1; i++)
 662   3               {
 663   4                  temp=k*i+b;
 664   4                  LCD_Draw_dot(temp,i,flag);
 665   4               }  
 666   3            }
 667   2         }
 668   1      }
 669          
 670          /***********************************************************************************
 671          * 函数名称:LCD_Draw_circle;
 672          *
 673          * 函数功能描述:以(x,y)为圆心,r为半径画圆;
 674          *              
 675          * 输入参数:unsigned char类型坐标x,y, bool类型标识flag;
C51 COMPILER V7.02b   LCD                                                                  01/03/2006 09:50:07 PAGE 12  

 676          *
 677          * 返回数据:none;
 678          *
 679          * 注意:    none;
 680          ************************************************************************************/
 681          
 682          void  LCD_Draw_circle(unsigned char x,unsigned char y,unsigned char r,bool flag)
 683          {
 684   1         R_BYTE r_2,i,x1,y1,temp_x;
 685   1         R_WORD temp;
 686   1      
 687   1         r_2=0.707*r;
 688   1         temp=r*r;
 689   1      
 690   1         for (i=0; i<=r_2; i++)
 691   1         {
 692   2            if (flag)
 693   2            {
 694   3               if (!(i&0x01))
 695   3               {  
 696   4      
 697   4                  x1=i;
 698   4                  y1=sqrt(1.0*(temp-x1*x1))+0.5;
 699   4                  LCD_Draw_dot(x1+x,y1+y,flag);
 700   4                  LCD_Draw_dot(-x1+x,y1+y,flag);
 701   4                  LCD_Draw_dot(x1+x,-y1+y,flag);
 702   4                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 703   4            
 704   4                  temp_x=x1;
 705   4                  x1=y1;
 706   4                  y1=temp_x;
 707   4            
 708   4                  LCD_Draw_dot(x1+x,y1+y,flag);
 709   4                  LCD_Draw_dot(-x1+x,y1+y,flag);
 710   4                  LCD_Draw_dot(x1+x,-y1+y,flag);
 711   4                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 712   4               }
 713   3            }
 714   2            else
 715   2            {
 716   3                  x1=i;
 717   3                  y1=sqrt(1.0*(temp-x1*x1))+0.5;
 718   3                  LCD_Draw_dot(x1+x,y1+y,flag);
 719   3                  LCD_Draw_dot(-x1+x,y1+y,flag);
 720   3                  LCD_Draw_dot(x1+x,-y1+y,flag);
 721   3                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 722   3            
 723   3                  temp_x=x1;
 724   3                  x1=y1;
 725   3                  y1=temp_x;
 726   3            
 727   3                  LCD_Draw_dot(x1+x,y1+y,flag);
 728   3                  LCD_Draw_dot(-x1+x,y1+y,flag);
 729   3                  LCD_Draw_dot(x1+x,-y1+y,flag);
 730   3                  LCD_Draw_dot(-x1+x,-y1+y,flag);
 731   3            }
 732   2      
 733   2         }
 734   1      }
 735          
 736          /***********************************************************************************
 737          * 函数名称:LCD_Draw_Rectangle;
C51 COMPILER V7.02b   LCD                                                                  01/03/2006 09:50:07 PAGE 13  

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

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

 862   1            
 863   1         for (i=0; i<line; i++)
 864   1         for (j=0; j<length; j++)
 865   1            LCD_Draw_byte(x+j,y+i*8, ~(*p++));
 866   1         
 867   1      }
 868          
 869          /***********************************************************************************
 870          * 函数名称: LCD_Disp_Time;
 871          *
 872          * 函数功能描述:向LCD写一组数据,显示时间;
 873          *              
 874          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据code区指针p;
 875          *      BYTE类型占用空间line*8行,length列
 876          *
 877          * 返回数据:none;
 878          *
 879          * 注意:    none;
 880          ************************************************************************************/
 881          
 882          void LCD_Disp_Time(unsigned char x,y,unsigned char code *p,unsigned char line,length)
 883          {
 884   1         R_BYTE i,j;
 885   1      
 886   1         y+=(4<<line);  
 887   1         if (y>64)
 888   1            y=64;
 889   1         y=64-y;
 890   1            
 891   1         for (i=0; i<line; i++)
 892   1         for (j=0; j<length; j++)
 893   1            LCD_Draw_byte(x+j,y+i*8, *p++);
 894   1      }
 895          /***********************************************************************************
 896          * 函数名称: LCD_Disp_Flash_Word;
 897          *
 898          * 函数功能描述:向LCD写一组数据,显示时间;
 899          *              
 900          * 输入参数:BYTE类型写入起始坐标x,y; BYTE类型写入数据code区指针p;
 901          *      BYTE类型占用空间line*8行,length列
 902          *
 903          * 返回数据:none;
 904          *
 905          * 注意:    none;
 906          ************************************************************************************/
 907          
 908          void LCD_Disp_Flash_Word(BYTE x,y,BYTE xdata *p,BYTE line,length)
 909          {
 910   1         R_BYTE i,j;
 911   1      
 912   1         y+=(4<<line);  
 913   1         if (y>64)
 914   1            y=64;
 915   1         y=64-y;
 916   1            
 917   1         for (i=0; i<line; i++)
 918   1         for (j=0; j<length; j++)
 919   1            LCD_Draw_byte(x+j,y+i*8, *p++);  
 920   1      }
 921          
 922          /***********************************************************************************/
 923          // 文件结束
C51 COMPILER V7.02b   LCD                                                                  01/03/2006 09:50:07 PAGE 16  

 924          /***********************************************************************************/
 925          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3972    ----
   CONSTANT SIZE    =    771    ----
   XDATA SIZE       =      8      72
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      30
   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 + -