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

📄 lcd_dis.lst

📁 使用单片机8051开发2.4寸tft lcd。
💻 LST
📖 第 1 页 / 共 3 页
字号:
 446          //========================================================================
 447          // 函数: unsigned int Get_Dot(int x,int y)
 448          // 描述: 获取x,y为坐标的象素
 449          // 参数: x  X轴坐标     y  Y轴坐标      
 450          // 返回: Color  像素颜色 
 451          // 备注: 这里以及之前的所有x和y坐标系都是用户层的,并不是实际LCD的坐标体系
 452          //               本函数提供可进行坐标变换的接口
 453          // 版本:
 454          //      2006/10/15      First version
 455          //========================================================================
 456          unsigned int Get_Dot(int x,int y)
 457          {
 458   1      #if     LCD_XY_Switch == 0
 459   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
 460   1                      return Get_Dot_LCD(x,y);
 461   1              #endif
 462   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              return Get_Dot_LCD(LCD_X_MAX - x,y);
                      #endif
 465   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              return Get_Dot_LCD(x,LCD_Y_MAX - y);
                      #endif
 468   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              return Get_Dot_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
                      #endif
 471   1      #endif
 472   1      #if     LCD_XY_Switch == 1
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
                              return Get_Dot_LCD(y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              return Get_Dot_LCD(y,LCD_Y_MAX - x);
                      #endif
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              return Get_Dot_LCD(LCD_X_MAX - y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              return Get_Dot_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
                      #endif
              #endif  
 486   1      }
 487          
 488          //========================================================================
 489          // 函数: void Clear_Dot(int x,int y)
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 9   

 490          // 描述: 清除以x,y为坐标的象素
 491          // 参数: x  X轴坐标     y  Y轴坐标      
 492          // 返回: 无 
 493          // 备注: 这里以及之前的所有x和y坐标系都是用户层的,并不是实际LCD的坐标体系
 494          //               本函数提供可进行坐标变换的接口
 495          // 版本:
 496          //      2006/10/15      First version
 497          //========================================================================
 498          void Clear_Dot(int x,int y)
 499          {
 500   1      #if     LCD_XY_Switch == 0
 501   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
 502   1                      Clear_Dot_LCD(x,y);
 503   1              #endif
 504   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              Clear_Dot_LCD(LCD_X_MAX - x,y);
                      #endif
 507   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              Clear_Dot_LCD(x,LCD_Y_MAX - y);
                      #endif
 510   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              Clear_Dot_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
                      #endif
 513   1      #endif
 514   1      #if     LCD_XY_Switch == 1
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
                              Clear_Dot_LCD(y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              Clear_Dot_LCD(y,LCD_Y_MAX - x);
                      #endif
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              Clear_Dot_LCD(LCD_X_MAX - y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              Clear_Dot_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
                      #endif
              #endif  
 528   1      }
 529          //========================================================================
 530          // 函数: void Set_Dot_Addr(int x,int y)
 531          // 描述: 设置当前需要操作的象素地址
 532          // 参数: x  X轴坐标     y  Y轴坐标      
 533          // 返回: 无 
 534          // 备注: 这里以及之前的所有x和y坐标系都是用户层的,并不是实际LCD的坐标体系
 535          //               本函数提供可进行坐标变换的接口
 536          // 版本:
 537          //      2006/10/15      First version
 538          //========================================================================
 539          void Set_Dot_Addr(int x,int y)
 540          {
 541   1      #if     LCD_XY_Switch == 0
 542   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
 543   1                      Set_Dot_Addr_LCD(x,y);
 544   1              #endif
 545   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              Set_Dot_Addr_LCD(LCD_X_MAX - x,y);
                      #endif
 548   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              Set_Dot_Addr_LCD(x,LCD_Y_MAX - y);
                      #endif
 551   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 10  

                              Set_Dot_Addr_LCD(LCD_X_MAX - x,LCD_Y_MAX - y);
                      #endif
 554   1      #endif
 555   1      #if     LCD_XY_Switch == 1
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
                              Set_Dot_Addr_LCD(y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              Set_Dot_Addr_LCD(y,LCD_Y_MAX - x);
                      #endif
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              Set_Dot_Addr_LCD(LCD_X_MAX - y,x);
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              Set_Dot_Addr_LCD(LCD_X_MAX - y,LCD_Y_MAX - x);
                      #endif
              #endif          
 569   1      }
 570          //========================================================================
 571          // 函数: void Pos_Switch(unsigned int * x,unsigned int * y)
 572          // 描述: 将画面的坐标变换为实际LCD的坐标体系,以便于快速画圆形以及矩形
 573          // 参数: x  X轴坐标     y  Y轴坐标      
 574          // 返回: 无 
 575          // 备注: 这里以及之前的所有x和y坐标系都是用户层的,并不是实际LCD的坐标体系
 576          //               本函数提供可进行坐标变换的接口
 577          // 版本:
 578          //      2006/10/15      First version
 579          //========================================================================
 580          void Pos_Switch(unsigned int * x,unsigned int * y)
 581          {
 582   1              *x = *x;
 583   1              *y = *y;
 584   1      #if     LCD_XY_Switch == 0
 585   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
 586   1              #endif
 587   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              *x = LCD_X_MAX-*x;
                      #endif
 590   1              #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              *y = LCD_Y_MAX-*y;
                      #endif
 593   1              #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              *x = LCD_X_MAX-*x;
                              *y = LCD_Y_MAX-*y;
                      #endif
 597   1      #endif
 598   1      #if     LCD_XY_Switch == 1
                      unsigned int uiTemp;
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 0)
                              uiTemp = *x;
                              *x = y;
                              *y = uiTemp;
                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 0)
                              uiTemp = LCD_Y_MAX-*x;
                              *x = *y;
                              *y = uiTemp;
                      #endif
                      #if (LCD_X_Rev == 0)&&(LCD_Y_Rev == 1)
                              uiTemp = *x;
                              *x = LCD_X_MAX-*y;
                              *y = uiTemp;
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 11  

                      #endif
                      #if (LCD_X_Rev == 1)&&(LCD_Y_Rev == 1)
                              uiTemp = LCD_Y_MAX - *x;
                              *x = LCD_X_MAX-*y;
                              *y = uiTemp;
                      #endif
              #endif
 621   1      }
 622          //========================================================================
 623          // 函数: void W_Line_f(int s_x,int s_y,int e_x,int e_y,int Mode)
 624          // 描述: 以s_x,s_y为起点,e_x,e_y为终点连续填充一条直线上的点.用于画矩形、圆
 625          // 参数: x  X轴坐标     y  Y轴坐标      
 626          // 返回: 无 
 627          // 备注: 以实际的LCD坐标体系为准
 628          // 版本:
 629          //      2006/10/16      First version
 630          //========================================================================
 631          void Line_f(int s_x,int s_y,int e_x)//,int e_y)
 632          {  
 633   1              unsigned int uiTemp;
 634   1              if(s_x>e_x) 
 635   1              {
 636   2                      uiTemp = s_x;
 637   2                      s_x = e_x;
 638   2                      e_x = uiTemp;
 639   2              }
 640   1              Write_Dot_LCD(s_x++,s_y,BMP_Color);
 641   1              for(;s_x<=e_x;s_x++)
 642   1                      Fill_Dot_LCD(BMP_Color);
 643   1      }
 644          //========================================================================
 645          // 函数: void ClrScreen(void)
 646          // 描述: 全屏以初始化屏幕色的颜色进行清屏
 647          // 参数: 无      
 648          // 返回: 无 
 649          // 备注: 无
 650          // 版本:
 651          //      2007/01/16      First version
 652          //========================================================================
 653          void ClrScreen(void)
 654          {  
 655   1              Set_Dot_Addr_LCD(0,0);
 656   1              LCD_Fill(LCD_INITIAL_COLOR);
 657   1      }


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