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

📄 lcd12864_driver.lst

📁 该程序是基于c8051f020的平台
💻 LST
📖 第 1 页 / 共 2 页
字号:
 188   3                                for(i=0;i<y;i++)      
 189   3                                  {
 190   4                        Locat_Dot(x1,y1+i);
 191   4                                  }
 192   3                        }
 193   2                       else if(y==0)
 194   2                           Locat_Dot(x1,y1);
 195   2                       else
 196   2                        {
 197   3                           for(i=y;i<0;i++)   
 198   3                                 {
 199   4                        Locat_Dot(x1,y1+i);
 200   4                                 }
 201   3                        }
 202   2      
 203   2                }
 204   1              else 
 205   1                 y_add = y*1.000/x;
 206   1              if(x>0)
 207   1              {
 208   2                if(y_add <=1&&y_add>=-1)
 209   2                 {
 210   3                   for(i=0;i<x;i++)   
 211   3                    {
 212   4                          y=y1+y_add*i;
 213   4                          Locat_Dot(x1+i,y);
 214   4                    }
 215   3                 }
 216   2               else
 217   2                {
 218   3                  if(y>0)
 219   3                       {
 220   4                         for(i=0;i<y;i++)
 221   4                          {
 222   5                                x=x1+i/y_add;
 223   5                                Locat_Dot(x,y1+i);
 224   5                              }
 225   4                       }
 226   3                       else if(y==0)
 227   3                        {
 228   4                           for(i=0;i<x;i++)   
 229   4                        {
 230   5                               Locat_Dot(x1+i,y1);
C51 COMPILER V8.02   LCD12864_DRIVER                                                       07/09/2007 08:18:06 PAGE 5   

 231   5                        }
 232   4                        }
 233   3                       else
 234   3                       {
 235   4                          for(i=y;i<0;i++)
 236   4                          {
 237   5                                x=x1+i/y_add;
 238   5                                Locat_Dot(x,y1+i);
 239   5                              }
 240   4                       }
 241   3      
 242   3                } 
 243   2                 
 244   2              }
 245   1         else if(x<0)
 246   1          {      
 247   2                if(y_add <=1&&y_add>=-1)
 248   2                 {
 249   3                   for(i=x;i<0;i++)   
 250   3                    {
 251   4                          y=y1+y_add*i;
 252   4                          Locat_Dot(x1+i,y);
 253   4                    }
 254   3                 }
 255   2                else
 256   2                {
 257   3                  if(y>0)
 258   3                       {
 259   4                         for(i=0;i<y;i++)
 260   4                          {
 261   5                                x=x1+i/y_add;
 262   5                                Locat_Dot(x,y1+i);
 263   5                              }
 264   4                       }
 265   3                       else if(y==0)
 266   3                        {
 267   4                           for(i=x;i<0;i++)   
 268   4                        {
 269   5                               Locat_Dot(x1+i,y1);
 270   5                        }
 271   4                        }
 272   3                       else
 273   3                       {
 274   4                          for(i=y;i<0;i++)
 275   4                          {
 276   5                                x=x1+i/y_add;
 277   5                                Locat_Dot(x,y1+i);
 278   5                              }
 279   4                       }
 280   3      
 281   3                } 
 282   2          }
 283   1         
 284   1            
 285   1      }
 286          
 287          void Circle(uchar x1,uchar y1,uchar R)
 288          {
 289   1         uchar x,y;
 290   1         uint a,b;
 291   1      
 292   1        // y1 = 64 - y1 ;
C51 COMPILER V8.02   LCD12864_DRIVER                                                       07/09/2007 08:18:06 PAGE 6   

 293   1      
 294   1         for(x=x1-R;x<=x1+R;x++)
 295   1           {  
 296   2              for(y=0;y<=64;y++)
 297   2                {  a=(abs(x-x1))*(abs(x-x1));
 298   3                   b=(abs(y-y1))*(abs(y-y1));
 299   3                   if( ((a+b)<=R*R) && ((a+b)>=(R-1)*(R-1))){ 
 300   4                   Locat_Dot(x,y); }
 301   3                }
 302   2            }
 303   1      }             
 304                   
 305          
 306          
 307          //读状态==================================
 308          uchar Read_state()
 309          {
 310   1           uchar sta;
 311   1           Data_Port=0xff;
 312   1           CD=1;CE=0;RD=0;WR=1; 
 313   1           sta=Data_Port;
 314   1           Delay(10,5);
 315   1           RD=1;CE=1;RD=1;CD=1;
 316   1           return(sta);
 317   1      }
 318          //发指令-----------------------------------                                               
 319          
 320          
 321          
 322          //2字节数据--------------------------
 323          //
 324          void Send_cmd2(uchar d1,uchar c)
 325          {
 326   1           Send_data(d1);
 327   1           Send_cmd1(c);
 328   1      }
 329          
 330          
 331          //3字节数据--------------------------
 332          //设置光标指针,CGRAM偏置地址,地址指针,
 333          //显示区域设置
 334          void Send_cmd3(uchar d1,uchar d2,uchar c)  
 335          {
 336   1           Send_data(d1);
 337   1           Send_data(d2);
 338   1           Send_cmd1(c);
 339   1      }
 340          
 341          //发数据--------------------
 342          
 343          void Send_data(uchar d)
 344          {
 345   1           uchar s1,D1;
 346   1           D1=d;
 347   1           do
 348   1           {s1=Read_state();}
 349   1           while((s1)&0x03!=0x03);//R_sta check;
 350   1               Data_Port=D1;
 351   1           CD=0; CE=0; WR=0;
 352   1           Delay(10,5);          
 353   1           CE=1; WR=1;RD=1;CD=1;
 354   1           Data_Port=0XFF;
C51 COMPILER V8.02   LCD12864_DRIVER                                                       07/09/2007 08:18:06 PAGE 7   

 355   1      }
 356          
 357          void Send_cmd1(uchar c)
 358          {
 359   1           uchar s0,c1;
 360   1           c1=c;
 361   1           do
 362   1           {s0=Read_state();}
 363   1           while(((s0)&0x03)!=0x03);//r_cmd check;
 364   1               Data_Port=c1;
 365   1           CD=1; CE=0;  WR=0;RD=1;
 366   1           
 367   1           Delay(10,5);
 368   1           CE=1;RD=1; WR=1;CD=1;
 369   1           Data_Port=0XFF;
 370   1      }
 371          /*
 372          void PORT_Init ()
 373          {
 374                XBR2=0X40;
 375                P1MDOUT=0XFF; 
 376                P2MDOUT=0XFF;
 377                P74OUT=0X00;  //读端口数据时,要把端口配为漏极,且向端口写“1”Data_Port=0XFF;
 378          }*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1744    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      62
   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 + -