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

📄 lcd_function.lst

📁 CM320X240LCD的驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 219          //                                                      unsigned right, unsigned bottom, unsigned Mode)
 220          //描述:画矩形程序
 221          //参数:left - 矩形的左上角横坐标,范围0到118
 222          //              top - 矩形的左上角纵坐标,范围0到50
 223          //              right - 矩形的右下角横坐标,范围1到119
 224          //              bottom - 矩形的右下角纵坐标,范围1到51
 225          //              Mode - 绘制模式,可以是下列数值之一:
 226          //                              PAINT_HOLLOW:   矩形框(空心矩形)
 227          //                              PAINT_SOLID:    矩形面(实心矩形)
 228          //声明:xinqiang        20050521        sunnorth  Mz Design
 229          //注意:无
 230          //***************************************************************************//
 231          void LCD_Rectangle(unsigned left, unsigned top, unsigned right, unsigned bottom, unsigned Mode)
 232          {
 233   1              unsigned uiTemp;
 234   1      /*      if(left>right)
 235   1              {
 236   1                      uiTemp = left;
 237   1                      left = right;
 238   1                      right = left;
 239   1              }
 240   1              if(top>bottom)
 241   1              {
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 5   

 242   1                      uiTemp = top;
 243   1                      top = bottom;
 244   1                      bottom = uiTemp;
 245   1              }   */
 246   1      /*      if(Mode==0)
 247   1              {
 248   1                      LCD_Line(left,top,left,bottom);
 249   1                      LCD_Line(left,top,right,top);
 250   1                      LCD_Line(right,bottom,left+1,bottom);
 251   1                      LCD_Line(right,bottom,right,top+1);
 252   1              }
 253   1              else
 254   1              {     */
 255   1                      for(uiTemp=top;uiTemp<=bottom;uiTemp++)
 256   1                      {
 257   2                              LCD_Line(left,uiTemp,right,uiTemp,Mode);
 258   2                      }
 259   1      //      }
 260   1      }
 261          void LCD_Back_Rect(unsigned int x,unsigned char y,unsigned int e_x,unsigned char e_y,bit mode);
 262          void LCD_Rect(unsigned int x,unsigned char y,unsigned int e_x,unsigned char e_y,bit Mode)
 263          {
 264   1              unsigned int uix_1,uix_2;
 265   1              unsigned int uiTemp;
 266   1              if(x>e_x)
 267   1              {
 268   2                      uiTemp = x;
 269   2                      x = e_x;
 270   2                      e_x = uiTemp;
 271   2              }
 272   1              if(y>e_y)
 273   1              {
 274   2                      uiTemp = y;
 275   2                      y = e_y;
 276   2                      e_y = uiTemp;
 277   2              }
 278   1         /*     if(Mode==0)
 279   1              {
 280   1                      LCD_Rectangle(x,y,e_x,e_y,0);
 281   1                      return;
 282   1              }    */
 283   1              if(x&0x07)
 284   1              {
 285   2                      uix_1 = x|0x07;
 286   2                      LCD_Rectangle(x,y,uix_1,e_y,Mode);
 287   2                      x = uix_1+0x08;
 288   2              }
 289   1              if(e_x&0x07)
 290   1              {
 291   2                      uix_2 = e_x&0xFFF8;
 292   2                      LCD_Rectangle(uix_2,y,e_x,e_y,Mode);
 293   2                    //  e_x = uix_2-1;
 294   2              }
 295   1              LCD_Back_Rect(x,y,e_x,e_y,Mode);
 296   1      
 297   1      }
 298          //===================================================//
 299          //程序:void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y)
 300          //描述:CM320X240LCD画点子程序
 301          //参数:Index_x  X轴坐标(0~319)  Index_y  y轴坐标(0~239)
 302          //返回:
 303          //Note:  Edit by Mz      xinqiang zhang
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 6   

 304          //Date:  2006 07 29      beijing
 305          //===================================================//
 306          void LCD_Bitmap(unsigned int x,unsigned char y,unsigned char * bmp)
 307          {
 308   1              unsigned int Addr,index_y=0,index_x=0;
 309   1              unsigned char ui_x=x>>3,s_x=x&0x07,sl_x=8-s_x;
 310   1              unsigned char w_x,w_y,ucTemp1,ucTemp2;
 311   1              w_x = (*bmp++)>>3;
 312   1              w_y = *bmp++;
 313   1              Addr = y*0x32+(x>>3)+(unsigned int)(LCD_show_Addr<<8);
 314   1              while(index_y<w_y)
 315   1              {
 316   2                      if(y>239) break;
 317   2                      LCD_COM_W(0x46);
 318   2                      LCD_Data_W((unsigned char)Addr);
 319   2                      LCD_Data_W((unsigned char)(Addr>>8));
 320   2                      LCD_COM_W(0x43);
 321   2                      for(index_x=0;index_x<=w_x;index_x++)
 322   2                      {
 323   3                             LCD_show_buf[index_x] = LCD_Data_R();
 324   3                      }
 325   2                      LCD_COM_W(0x46);
 326   2                      LCD_Data_W((unsigned char)Addr);
 327   2                      LCD_Data_W((unsigned char)(Addr>>8));
 328   2                      LCD_COM_W(0x42);
 329   2                      ucTemp1 = 0;
 330   2                      ui_x = x>>3;
 331   2                      for(index_x=0;index_x<w_x;index_x++)
 332   2                      {
 333   3                              ucTemp2 = *bmp;
 334   3                              ucTemp2 = ucTemp2>>s_x;
 335   3                              ucTemp2 = ucTemp2|ucTemp1;
 336   3                              ucTemp2 = ucTemp2|LCD_show_buf[index_x];
 337   3                              LCD_COM_W(0x42);
 338   3                              LCD_Data_W(ucTemp2);
 339   3                              ucTemp1 = *bmp++;
 340   3                              ucTemp1 = ucTemp1<<sl_x;
 341   3                              if(ui_x>0x27)
 342   3                              {
 343   4                                      bmp = bmp+w_x-index_x-1;
 344   4                                      index_x++;
 345   4                                      break;
 346   4                              }
 347   3                              ui_x++;
 348   3                       }
 349   2                       ucTemp1 = ucTemp1|LCD_show_buf[index_x];
 350   2                       LCD_Data_W(ucTemp1);
 351   2                       Addr = Addr+0x32;
 352   2                       index_y++;
 353   2              }
 354   1      }
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 7   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


LCD_Initial. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
LCD_show_buf . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  32
_LCD_Line. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0002H  2
  e_x. . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0004H  2
  e_y. . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0006H  2
  mode . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  Offset_x . . . . . . . . . . . . . .  AUTO     DATA   INT      0008H  2
  Offset_y . . . . . . . . . . . . . .  AUTO     DATA   INT      000AH  2
  Offset_k . . . . . . . . . . . . . .  AUTO     DATA   INT      000CH  2
  Err_d. . . . . . . . . . . . . . . .  AUTO     DATA   INT      000EH  2
LCD_Clear. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  is_Clear . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  show_Data. . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  Addr_H . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
_LCD_Rect. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  e_x. . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0003H  2
  e_y. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  Mode . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  uix_1. . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0006H  2
  uix_2. . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
  uiTemp . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0008H  2
_LCD_COM_W . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
LCD_ONOFF. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  is_ON. . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  layer. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_LCD_Rectangle . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  left . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  top. . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0004H  2
  right. . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0004H  2
  bottom . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0006H  2
  Mode . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0008H  2
  uiTemp . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    000AH  2
_LCD_Back_dot. . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
LCD_Reset. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_LCD_Data_W. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_LCD_PutPixel. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0008H  -----
  Index_x. . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  Index_y. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  mode . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  Addr_Byte. . . . . . . . . . . . . .  AUTO     DATA   U_INT    0002H  2
LCD_show_Addr. . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0020H  1
_LCD_Setlayer. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  layer. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
LCD_Data_R . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_LCD_Bitmap. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
  bmp. . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0003H  3
  Addr . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0006H  2
  index_y. . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0008H  2
  index_x. . . . . . . . . . . . . . .  AUTO     DATA   U_INT    000AH  2
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


  ui_x . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   000CH  1
  s_x. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   000DH  1
  sl_x . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   000EH  1
  w_x. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   000FH  1
  w_y. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0010H  1
  ucTemp1. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0011H  1
  ucTemp2. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0012H  1
_LCD_Back_Rect . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1416    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      66
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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