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

📄 t6963b.lst

📁 c8051学习机实验程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 382   2                      {
 383   3                              uRow +=16;
 384   3                              if(uRow < 0x80)
 385   3                                      uCol -= 30;
 386   3                              else
 387   3                              {
 388   4                                      uRow = 0;
 389   4                                      uCol = 0;
 390   4                              }
 391   3                      }
 392   2                      fnSetPos(uRow,uCol);
 393   2                      i++;
 394   2              }
 395   1             // EA=1;
 396   1              return uLen;
 397   1      }        
 398          #if 1
 399          /*==============================*/
 400          /* 延时                         */
 401          /*==============================*/
 402          void shortdelay(uint tt)
 403                  {
 404   1              uchar i;
 405   1              while (tt)
 406   1                      {
 407   2                      i=100;
 408   2                      while (i)i--;
 409   2                      tt--;
 410   2                      };
 411   1              }        
 412          /****************************************/
 413          /*      画点                            */
 414          /****************************************/
 415          
 416          void point(uchar x,uchar y,uchar s)
 417                  {
 418   1              uchar   x1;
 419   1              x1=x>>3;                        //取Y方向分页地址
 420   1              fnSetPos(y,x1);                 //起点定位
 421   1              x1 = turnf[ x & 0x07 ];
 422   1              x1=0xF0|x1|s;                   //字节内位置计算
 423   1              fnPR12(x1);                     //画上屏幕,S显示属性8画点0擦除点
 424   1              }
 425          
 426          
 427          /************************************************/
C51 COMPILER V7.01  T6963B                                                                 03/31/2005 21:39:13 PAGE 8   

 428          /*画线。任意方向的斜线,直线数学方程 aX+bY=1     */
 429          /************************************************/
 430          void Linexy(uchar x0,uchar y0,uchar xt,uchar yt,uchar s)
 431          {
 432   1              register uchar t;
 433   1              int xerr=0,yerr=0,delta_x,delta_y,distance;
 434   1              int incx,incy,uRow,uCol;
 435   1      
 436   1              delta_x = xt-x0;                                //计算坐标增量
 437   1              delta_y = yt-y0;
 438   1              uRow = x0;
 439   1              uCol = y0;
 440   1              if(delta_x>0) incx=1;                           //设置单步方向
 441   1              else if( delta_x==0 ) incx=0;                   //垂直线
 442   1                      else {incx=-1;delta_x=-delta_x;}
 443   1      
 444   1              if(delta_y>0) incy=1;
 445   1              else if( delta_y==0 ) incy=0;                   //水平线
 446   1                      else {incy=-1;delta_y=-delta_y;}
 447   1      
 448   1              if( delta_x > delta_y ) distance=delta_x;       //选取基本增量坐标轴
 449   1              else distance=delta_y;
 450   1      
 451   1              for( t=0;t <= distance+1; t++ )
 452   1                      {                                       //画线输出
 453   2                      point(uRow,uCol,s);                     //画点
 454   2                      xerr += delta_x ;
 455   2                      yerr += delta_y ;
 456   2                      
 457   2                      if( xerr > distance )
 458   2                              {
 459   3                              xerr-=distance;
 460   3                              uRow+=incx;
 461   3                              }
 462   2                      if( yerr > distance )
 463   2                              {
 464   3                              yerr-=distance;
 465   3                              uCol+=incy;
 466   3                              }
 467   2                      }
 468   1      }
 469          
 470          
 471          /************************************************/
 472          /*画圆。数学方程(X-Ox)^2+(Y-Oy)^2=Rx^2                  */
 473          /************************************************/
 474          
 475          void circle(uchar Ox,uchar Oy,uchar Rx,uchar s)
 476          {
 477   1              unsigned int xx,rr,xt,yt,rs,row,col;
 478   1              yt=Rx;
 479   1              rr=Rx*Rx+1;                     //补偿 1 修正方形
 480   1              rs=(yt+(yt>>1))>>1;             //(*0.75)分开1/8圆弧来画
 481   1              for (xt=0;xt<=rs;xt++)
 482   1              {
 483   2                      xx=xt*xt;
 484   2                      while ((yt*yt)>(rr-xx))yt--;
 485   2                      row=Ox+xt;              //第一象限
 486   2                      col=Oy-yt;
 487   2                      point(row,col,s);
 488   2                      row=Ox-xt;              //第二象限
 489   2                      point(row,col,s);
C51 COMPILER V7.01  T6963B                                                                 03/31/2005 21:39:13 PAGE 9   

 490   2                      col=Oy+yt;              //第三象限
 491   2                      point(row,col,s);
 492   2                      row=Ox+xt;              //第四象限
 493   2                      point(row,col,s);
 494   2      
 495   2      /***************45度镜象画另一半***************/
 496   2      
 497   2                      row=Ox+yt;              //第一象限
 498   2                      col=Oy-xt;
 499   2                      point(row,col,s);
 500   2                      row=Ox-yt;              //第二象限
 501   2                      point(row,col,s);
 502   2                      col=Oy+xt;              //第三象限
 503   2                      point(row,col,s);
 504   2                      row=Ox+yt;              //第四象限
 505   2                      point(row,col,s);
 506   2              }
 507   1      }
 508                  
 509          
 510          void LCDTest(void)      // 测试用
 511          {
 512   1              uchar i;
 513   1              float xx=3.1415926;
 514   1              shortdelay(1200);
 515   1              fnLCMInit();
 516   1              cls();
 517   1              cursor(0,0);
 518   1              dprintf("This is a test: 中文测试\n");
 519   1              cursor(0,5);
 520   1              dprintf("%1.4f\n",xx);
 521   1              cursor(0,6);
 522   1              dprintf("LCM Example in C8051F020&T6963\n");
 523   1              cursor(7,7);
 524   1              black = 1;
 525   1              dprintf("---HuangYang---\n");
 526   1              Linexy(10,20,239,110,8);                        // 画斜线1
 527   1              Linexy(10,20,217,1,8);                          // 斜线2
 528   1              Linexy(239,110,217,1,8);                        // 斜线3
 529   1              circle(185,45,40,8);                            // 画圆
 530   1              circle(185,45,41,8);                            // 画同心圆加粗
 531   1              shortdelay(24000);
 532   1      
 533   1              P3 = 0xff;
 534   1              while(P3 == 0xff)
 535   1              {
 536   2      //变化圆演示,直径不断的变化,由大到小再由小到大来回缩放
 537   2                      for (i=40;i>5;i--)
 538   2                      {
 539   3                      circle(185,45,i+1,0);           //擦除外圆
 540   3                      circle(185,45,i,8);
 541   3                      circle(185,45,i-1,8);
 542   3                      shortdelay(3600);
 543   3                      };
 544   2      
 545   2                      shortdelay(8000);
 546   2      
 547   2                      for (i=5;i<40;i++)
 548   2                      {
 549   3                      circle(185,45,i-1,0);           //擦除内圆
 550   3                      circle(185,45,i,8);                                     
 551   3                      circle(185,45,i+1,8);
C51 COMPILER V7.01  T6963B                                                                 03/31/2005 21:39:13 PAGE 10  

 552   3                      shortdelay(1800);
 553   3                      };
 554   2      
 555   2                      shortdelay(4000);
 556   2      
 557   2              };
 558   1      }
 559          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2095    ----
   CONSTANT SIZE    =   2340    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =      3     160
   DATA SIZE        =   ----    ----
   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 + -