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

📄 sc_t6963.lst

📁 驱动15X20D液晶屏
💻 LST
📖 第 1 页 / 共 3 页
字号:
 392   1              uchar i = 0, j = 0;
 393   1              uchar BmpWidth = BmpAdd[0], BmpHeigh = BmpAdd[1];
 394   1              BmpAdd+=2;
 395   1              for(i = 0;i < BmpHeigh;i++)
 396   1              {
 397   2                      T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
 398   2                      for(j = 0;j < (BmpWidth/8);j++)
 399   2                      {
 400   3                              T6963_OutCommand1byte(*(BmpAdd),T6963_DATA_WRITE_INCRE_ADP);
 401   3                              BmpAdd++;
 402   3                      }
 403   2                      Add += 30;
 404   2      //T6963_Delay(50);
 405   2              }
 406   1      }
 407          
 408          /***************************************************************
 409                  Function:       //      LcdClearRect
 410                  Description://  清除屏幕上指定的一个四边形,应用于图形模式下
 411                  Input:                  GPage:  要显示的图形页号 (0-6)
 412                                                  X:      清屏起始横坐标  0×8--29×8
 413                                                  Y:      清屏起始纵坐标  0--127
 414                                                  Rect_Width:     清屏宽度                1×8--30*8
 415                                                  Rect_Heigh:     清屏高度                1--128
 416          ***************************************************************/
 417          void LcdClearRect(uchar GPage,uchar X,uchar Y,uchar Rect_Width,uchar Rect_Heigh)
 418          {
 419   1              uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
 420   1              uchar i = 0, j = 0;
 421   1              for(i = 0;i < Rect_Heigh;i++)
 422   1              {
 423   2                      T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
 424   2                      for(j = 0;j < Rect_Width/8;j++)
 425   2                      {
 426   3                              T6963_OutCommand1byte(0x00,T6963_DATA_WRITE_INCRE_ADP);
 427   3                      }
C51 COMPILER V7.20   SC_T6963                                                              03/28/2008 14:02:55 PAGE 8   

 428   2                      Add += 30;
 429   2              }
 430   1      }
 431          
 432          /***************************************************************
 433                  Function:       //      LcdRevRect
 434                  Description://  反显指定区域
 435          ***************************************************************/
 436          void LcdRevRect(uchar GPage,uchar X,uchar Y,uchar Width,uchar Heigh)
 437          {
 438   1              uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
 439   1              uchar i = 0, j = 0, uData = 0;
 440   1              for(i = 0;i < Heigh;i++)
 441   1              {
 442   2                      T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
 443   2                      for(j = 0;j < Width/8;j++)
 444   2                      {
 445   3                              T6963_OutCommand0byte(T6963_DATA_READ_NO_ADP);
 446   3                              uData = T6963_InData();
 447   3                              uData = ~uData;
 448   3                              T6963_OutCommand1byte(uData,T6963_DATA_WRITE_INCRE_ADP);
 449   3                      }
 450   2                      Add += 30;
 451   2              }
 452   1      }
 453          
 454          
 455          /***************************************************************
 456                  Function:       //      LcdPixel
 457                  Description://  画点函数,应用于图形模式下
 458                  Called by:      //      LcdLine
 459                  Input:                  GPage:  要显示的图形页号 (0-6)
 460                                                  X:      点的横坐标
 461                                                  Y:      点的纵坐标
 462                                                  Disp:   1画该点,0清除该点
 463          ***************************************************************/
 464          void LcdPixel(uchar GPage, uchar X,uchar Y,bit Disp)
 465          {
 466   1              uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
 467   1              uchar Temp;
 468   1              Temp = 0xF7 - (X%8);
 469   1              if(Disp)        Temp |= 0x08;
 470   1              T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
 471   1              T6963_OutCommand0byte(Temp);
 472   1      }
 473          
 474          /***************************************************************
 475                  Function:       //      LcdLine
 476                  Description://  画直线函数,应用于图形模式下
 477                  Calls:          //      LcdPixel
 478                  Input:                  GPage:  要显示的图形页号 (0-6)
 479                                                  X1,Y1:  第一个点的坐标
 480                                                  X2,Y2:  第二个点的坐标
 481                                                  坐标范围:(0,0)---(239,127)
 482                                                  Disp: 1画该直线,0清除该直线
 483          ***************************************************************/
 484          void LcdLine(uchar GPage,uchar X1,uchar Y1,uchar X2,char Y2,bit Disp)
 485          {
 486   1              uchar i = 0;
 487   1              uchar j = 0;
 488   1              float k = 0;    //斜率
 489   1      
C51 COMPILER V7.20   SC_T6963                                                              03/28/2008 14:02:55 PAGE 9   

 490   1              if(X1 == X2)                                                            //k = 无穷
 491   1              {
 492   2                      j = Y1;
 493   2                      do
 494   2                      {
 495   3                              LcdPixel(GPage,X1,j,Disp);
 496   3                              if(Y1 < Y2)     
 497   3                                      j++;
 498   3                              else 
 499   3                                      j--;
 500   3                      }while(j != Y2);
 501   2                      LcdPixel(GPage,X2,Y2,Disp);
 502   2              }
 503   1              
 504   1              else if(Y1 == Y2)                                                       //k = 0
 505   1              {
 506   2                      i = X1;
 507   2                      do
 508   2                      {
 509   3                              LcdPixel(GPage,i,Y1,Disp);
 510   3                              if(X1 < X2)
 511   3                                      i++;
 512   3                              else
 513   3                                      i--;
 514   3                      }while(i != X2);
 515   2                      LcdPixel(GPage,X2,Y2,Disp);
 516   2              }
 517   1              
 518   1              else if(abs(X1-X2) < abs(Y1-Y2))                        //|k| > 1
 519   1              {
 520   2                      k = (double)(Y2-Y1) / (double)(X2-X1);
 521   2                      i = X1;
 522   2                      do
 523   2                      {
 524   3                              j = (i-X1)*k +Y1;
 525   3                              LcdPixel(GPage,i,j,Disp);
 526   3                              if(X1 < X2)
 527   3                                      i++;
 528   3                              else
 529   3                                      i--;
 530   3                      }while(i != X2);
 531   2                      LcdPixel(GPage,X2,Y2,Disp);
 532   2              }
 533   1      
 534   1              else if(abs(X1-X2) >= abs(Y1-Y2))                       //|k| <= 1
 535   1              {
 536   2                      k = (double)(X2-X1) / (double)(Y2-Y1);
 537   2                      j = Y1;
 538   2                      do
 539   2                      {
 540   3                              i = (j-Y1)*k + X1;
 541   3                              LcdPixel(GPage,i,j,Disp);
 542   3                              if(Y1 < Y2)
 543   3                                      j++;
 544   3                              else
 545   3                                      j--;
 546   3                      }while(j != Y2);
 547   2                      LcdPixel(GPage,X2,Y2,Disp);
 548   2              }
 549   1      }
 550          
 551          /***************************************************************
C51 COMPILER V7.20   SC_T6963                                                              03/28/2008 14:02:55 PAGE 10  

 552                  Function:       //      LcdScrRoll
 553                  Description://  滚屏函数,应用于图形模式下
 554                  Input:                  GPage:  要显示的图形页号 (0-6)
 555                                                  n:滚动的行数
 556          ***************************************************************/
 557          void LcdScrRoll(uchar GPage,uchar n)
 558          {
 559   1              uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE +30*n;
 560   1              T6963_OutCommand2byte((uchar)(Add),(uchar)(Add >> 8),T6963_SET_GRAPH_HOME_ADD);
 561   1      }
 562          
 563          
 564          //-------------------------------------------------------------
 565          void T6963_Delay(uchar n)
 566          {
 567   1              uchar i;
 568   1              uchar j;
 569   1              for(i = 0;i < n;i++)
 570   1              {
 571   2                      for(j = 0;j < 6;j++)
 572   2                      _nop_();
 573   2              }
 574   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1826    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      53
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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