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

📄 lcd.lst

📁 t6963的程序显示图形
💻 LST
📖 第 1 页 / 共 3 页
字号:
 372   2      {
 373   3              for(i=0;i<30;i++)
 374   3              {
 375   4              writedate(logo1[j]);
 376   4              j++;
 377   4              }
 378   3      }
 379   2          writecommand(audo_over);
 380   2              writecommand02(0x00,0x00,dis_address);  
 381   2      }
 382   1      }
 383          /*************************************************************/
 384          //反向显示一幅图
 385          
 386          void reverseimg1()                                              
 387          {
 388   1              unsigned char i,k;
 389   1              unsigned char j;
 390   1      
 391   1      for(k=0;k<128;k++)
 392   1      {
 393   2              for(i=0;i<30;i++)
 394   2              {       
 395   3      
 396   3              writecommand(zer_rd);
 397   3              j=readate();
 398   3              j=~j;
 399   3              writecommand01(j, 0xc0);
 400   3              }
 401   2      }
 402   1      
 403   1      }
 404          
 405          
 406          //*****************************************************************
 407          // 通过位操作方式实现绘制点
 408          
 409          void dot(unsigned char x,unsigned char y, unsigned char m)
 410          { 
 411   1              unsigned int z;
 412   1              z=(30*y+(x/8));
 413   1              if(z<=256) 
 414   1              writecommand02(z,0x00,dis_address);
 415   1              else    
 416   1              writecommand02(z%256,z/256,dis_address);
 417   1      
 418   1              if(m)
 419   1              writecommand(0xf8+7-(x&0x0007));
 420   1              else
 421   1              writecommand(0xf0+x%8);
 422   1      }
 423          
 424          //*****************************************************************
 425          //通用方式实现点绘制
 426          
 427          void dot1(unsigned char x,unsigned char y, unsigned char m)
C51 COMPILER V8.02   LCD                                                                   07/13/2008 00:52:57 PAGE 8   

 428          { 
 429   1              unsigned int z,y0;
 430   1              unsigned char n;
 431   1              z=(30*y+(x/8));
 432   1              if(z<=256) 
 433   1              writecommand02(z,0x00,dis_address);
 434   1              else    
 435   1              writecommand02(z%256,z/256,dis_address);
 436   1      
 437   1              writecommand(zer_rd);  /*此处要注意这条指令必须要加上,*/
 438   1              y0=readate();
 439   1              if(m)
 440   1              n=(7-x&0x0007);
 441   1              y0|=(1<<n);
 442   1          writecommand01(y0,0xc0);
 443   1      }
 444          //*****************************************************************
 445          //画线
 446          
 447          void line(unsigned int x0,unsigned int y0,unsigned int xt,unsigned int yt, unsigned char m)
 448          {
 449   1              register unsigned char t;
 450   1              int     xerr=0,yerr=0,delta_x,delta_y,distance;
 451   1              int     incx,incy;
 452   1              unsigned int row,col;
 453   1              delta_x = xt-x0;                                                
 454   1              delta_y = yt-y0;
 455   1              col     = x0;
 456   1              row     = y0;
 457   1              if(delta_x>0) incx=1;                                   
 458   1              else 
 459   1          {
 460   2              if( delta_x==0  ) incx=0;                       
 461   2                      else {incx=-1;delta_x=-delta_x;}
 462   2              }
 463   1                      if(delta_y>0) incy=1;
 464   1                      else
 465   1          {
 466   2              if( delta_y==0  ) incy=0;                       
 467   2                      else {incy=-1;delta_y=-delta_y;}
 468   2              }
 469   1                      if(     delta_x > delta_y )     distance=delta_x;       
 470   1                      else distance=delta_y;
 471   1      
 472   1              for( t=0;t <= distance+1; t++ )
 473   1              {                                                                                       
 474   2                      dot1(col,row,m);
 475   2      
 476   2                      shortdelay(1000);                               
 477   2                      xerr += delta_x ;
 478   2                      yerr += delta_y ;
 479   2                      
 480   2                      if(     xerr > distance )
 481   2                      {
 482   3                              xerr-=distance;
 483   3                              col+=incx;
 484   3                      }
 485   2                      if(     yerr > distance )
 486   2                      {
 487   3                              yerr-=distance;
 488   3                              row+=incy;
 489   3                      }
C51 COMPILER V8.02   LCD                                                                   07/13/2008 00:52:57 PAGE 9   

 490   2              }
 491   1      }
 492          
 493          /*************************************************************************/
 494          //画矩形
 495          
 496          void pane(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
 497          {
 498   1              line(x1,y1,x2,y1,1);
 499   1              line(x2,y1,x2,y2,1);
 500   1              line(x2,y2,x1,y2,1);
 501   1              line(x1,y2,x1,y1,1);
 502   1      }
 503          /***********************************************************************/
 504          //画圆
 505          
 506          void circle(unsigned int Ox,unsigned char Oy,unsigned char Rx,unsigned char m)
 507          {
 508   1              unsigned int xx,rr,xt,yt,rs,col,row;
 509   1              yt=Rx;
 510   1              rr=Rx*Rx+1;                     
 511   1              rs=(yt+(yt>>1))>>1;             //(*0.75)分开1/8圆弧来画
 512   1              for (xt=0;xt<=rs;xt++)
 513   1              {
 514   2                      xx=xt*xt;
 515   2                      while ((yt*yt)>(rr-xx))yt--;
 516   2                      col=Ox+xt;              //第一象限
 517   2                      row=Oy-yt;
 518   2                      dot1(col,row,m);
 519   2                      col=Ox-xt;              //第二象限
 520   2                      dot1(col,row,m);
 521   2                      row=Oy+yt;              //第三象限
 522   2                      dot1(col,row,m);
 523   2                      col=Ox+xt;              //第四象限
 524   2                      dot1(col,row,m);
 525   2      
 526   2      /***************45度镜象画另一半***************/
 527   2      
 528   2                      col=Ox+yt;              //第一象限
 529   2                      row=Oy-xt;
 530   2                      dot1(col,row,m);
 531   2                      col=Ox-yt;              //第二象限
 532   2                      dot1(col,row,m);
 533   2                      row=Oy+xt;              //第三象限
 534   2                      dot1(col,row,m);
 535   2                      col=Ox+yt;              //第四象限
 536   2                      dot1(col,row,m);
 537   2              }
 538   1      }
 539          
 540          
 541          /*************************************************************************/
 542          
 543          
 544          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1179    ----
   CONSTANT SIZE    =   3840    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.02   LCD                                                                   07/13/2008 00:52:57 PAGE 10  

   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 + -