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

📄 lcd.lst

📁 HOT51开发板TFT彩屏的程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: E:\ruanjian\Keil uVision4\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include "TM128128_LCD.H"
*** WARNING C312 IN LINE 122 OF TM128128_LCD.H: misplaced endif control
   3          #include "LCD_dis.H"
*** WARNING C312 IN LINE 20 OF LCD_dis.H: misplaced endif control
   4          #include "LCD.H"
*** WARNING C312 IN LINE 100 OF LCD_type.H: misplaced endif control
*** WARNING C312 IN LINE 34 OF LCD.H: misplaced endif control
   5          #include "LCD_type.H"
   6          
   7          #define LCDCOM 0
   8          #define LCDDAT 1
   9          
  10          sbit LED_RD = P2^5;
  11          sbit LED_CS = P2^7;
  12          sbit LED_WR = P2^4;
  13          sbit LED_A0 = P2^3;
  14          sbit REST = P2^6;
  15          
  16          void delay(INT16U a)
  17          {
  18   1              INT16U i, j;
  19   1              for(i = 0; i < a; i++)
  20   1                      for(j = 0; j < 114; j++);
  21   1      }
  22          /*======================================================
  23          彩屏读/写命令/数据
  24          =======================================================*/
  25          void LCDWR( INT8U cmd_dt, INT8U value )
  26          {
  27   1              LED_RD = 1;
  28   1              LED_CS = 1;
  29   1              LED_WR = 1;
  30   1              if(cmd_dt)
  31   1              {
  32   2                      LED_A0 = 1;
  33   2              }
  34   1              else
  35   1              {
  36   2                      LED_A0 = 0;     
  37   2              }
  38   1              P0 = value;
  39   1              LED_CS = 0;
  40   1              LED_WR = 0;
  41   1              LED_WR = 1;
  42   1              LED_CS = 1;
  43   1      }
  44          /*======================================================
  45          LCD初始化
  46          =======================================================*/
  47          void LCD_Init()
  48          {
  49   1      
  50   1      /*      LCDWR(LCDCOM, SOFT_RESET);  //恢复出厂设置
  51   1              delay(150);
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 2   

  52   1              LCDWR(LCDCOM, SLEEP_OUT);
  53   1              LCDWR(LCDCOM, DISPLAY_ON);
  54   1              LCDWR(LCDCOM, NORMAL_MODE_ON);//全屏显示
  55   1              LCDWR(LCDCOM, INVERSION_OFF);
  56   1              LCDWR(LCDCOM, PIXELS_OFF);
  57   1              LCDWR(LCDCOM, SET_CONTRAST);
  58   1              LCDWR(LCDDAT, 0x07);
  59   1              LCDWR(LCDCOM, MEM_CONTROL);      //寄存器应用控制
  60   1              LCDWR(LCDDAT, 0x00);
  61   1              LCDWR(LCDCOM, SET_X_ADDR);
  62   1              LCDWR(LCDDAT, 0x00);
  63   1              LCDWR(LCDDAT, 0x00);
  64   1              LCDWR(LCDDAT, 0x00);
  65   1              LCDWR(LCDDAT, 0x7f);
  66   1              LCDWR(LCDCOM, SET_Y_ADDR);
  67   1              LCDWR(LCDDAT, 0x00);
  68   1              LCDWR(LCDDAT, 0x00);
  69   1              LCDWR(LCDDAT, 0x00);
  70   1              LCDWR(LCDDAT, 0x9f);
  71   1              LCDWR(LCDCOM, PARTIAL_AREA);
  72   1              LCDWR(LCDDAT, 0x00);
  73   1              LCDWR(LCDDAT, 0x00);
  74   1              LCDWR(LCDDAT, 0xaa);
  75   1              LCDWR(LCDDAT, 0xaa);
  76   1              LCDWR(LCDCOM, COLOR_INTERFACE);
  77   1      //      LCDWR(LCDDAT, COLOR_16_BIT); */ 
  78   1      
  79   1      //      LCDWR(DATE, 0x9f);
  80   1      //      LCDWR(COM, 0xe0); //eeprom读写模式
  81   1      //      LCDWR(DATE, 0x00); //读otp模式读eeprom
  82   1      //      LCDWR(COM, 0x10); //写eeprom
  83   1      //      LCDWR(COM, 0xe1); //退出读写控制模式
  84   1      //      LCDWR(COM, 0xe2); //写eeprom
  85   1      //      LCDWR(COM, 0xe3); //读eeprom
  86   1      //      LCDWR(COM, DISPLAY_OFF); //关闭显示
  87   1                      LCDWR( LCDCOM, 0x01);//software reset
  88   1                      delay(150);       //delay 150ms
  89   1                      LCDWR( LCDCOM, 0x11);//software reset
  90   1      
  91   1                      LCDWR( LCDCOM,0x26); // Auto load set
  92   1                      LCDWR ( LCDDAT,0x04);//auto load disable//0x9f
  93   1                      LCDWR( LCDCOM,0xf2);  //EE read/write mode
  94   1                      LCDWR ( LCDDAT,0x00); //set read  mode
  95   1                      LCDWR( LCDCOM,0xb1);   
  96   1                      LCDWR ( LCDDAT,0x08);
  97   1                      LCDWR ( LCDDAT,0x14);           
  98   1                      LCDWR( LCDCOM,0xc0);   
  99   1                      LCDWR ( LCDDAT,0x0a); 
 100   1                      LCDWR ( LCDDAT,0x05); 
 101   1                      LCDWR( LCDCOM,0xc1); 
 102   1                      LCDWR ( LCDDAT,0x02);
 103   1                      LCDWR( LCDCOM,0xec); 
 104   1                      LCDWR ( LCDDAT,0x44);
 105   1                      LCDWR ( LCDDAT,0x52);
 106   1                      LCDWR( LCDCOM,0xc7); 
 107   1                      LCDWR ( LCDDAT,0xbf);
 108   1      
 109   1      //////////
 110   1      
 111   1      
 112   1                      LCDWR( LCDCOM,0x2a);  //display off
 113   1                      LCDWR ( LCDDAT,0x00);
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 3   

 114   1                      LCDWR ( LCDDAT,0x00);
 115   1                      LCDWR ( LCDDAT,0x00);
 116   1                      LCDWR ( LCDDAT,0x7f);
 117   1                      LCDWR( LCDCOM,0x2b);  //sleep out
 118   1                      LCDWR ( LCDDAT,0x00);
 119   1                      LCDWR ( LCDDAT,0x00);
 120   1                      LCDWR ( LCDDAT,0x00);
 121   1                      LCDWR ( LCDDAT,0x7f);
 122   1                      LCDWR( LCDCOM,0x36); 
 123   1                      LCDWR ( LCDDAT,0xc8);
 124   1                      LCDWR( LCDCOM,0x3a); 
 125   1                      LCDWR ( LCDDAT,0x55);
 126   1                      
 127   1                      //////////////////////////////////////////////////////
 128   1                      /////VOP set///////////
 129   1                      LCDWR( LCDCOM,0xf2);  //vo voltage set   
 130   1                      LCDWR ( LCDDAT,0x01);///////////f5/////  08//00
 131   1      
 132   1              LCDWR( LCDCOM,0xe0);   //write contrast for mobile
 133   1                      LCDWR ( LCDDAT,0x3f);
 134   1                      LCDWR ( LCDDAT,0x1b);
 135   1                      LCDWR ( LCDDAT,0x19);
 136   1                      LCDWR ( LCDDAT,0x27);
 137   1                      LCDWR ( LCDDAT,0x1f);
 138   1      
 139   1                      LCDWR ( LCDDAT,0x0d);
 140   1                      LCDWR ( LCDDAT,0x45);
 141   1                      LCDWR ( LCDDAT,0xb8);
 142   1                      LCDWR ( LCDDAT,0x30);
 143   1      
 144   1                      LCDWR ( LCDDAT,0x17);
 145   1                      LCDWR ( LCDDAT,0x0f);
 146   1                      LCDWR ( LCDDAT,0x05);
 147   1                      LCDWR ( LCDDAT,0x13);
 148   1      
 149   1                      LCDWR ( LCDDAT,0x02);
 150   1                      LCDWR ( LCDDAT,0x00);
 151   1      
 152   1                      //-----------OTPB SET----------------------//
 153   1                      LCDWR( LCDCOM,0xe1);// bias set
 154   1                      LCDWR ( LCDDAT,0x00);    //1/12
 155   1                      LCDWR ( LCDDAT,0x24);
 156   1      
 157   1                      LCDWR ( LCDDAT,0x26);
 158   1                      LCDWR ( LCDDAT,0x08);
 159   1                      LCDWR ( LCDDAT,0x10);
 160   1                      LCDWR ( LCDDAT,0x12);
 161   1      
 162   1                      LCDWR ( LCDDAT,0x3a);
 163   1                      LCDWR ( LCDDAT,0x74);
 164   1                      LCDWR ( LCDDAT,0x4f);
 165   1                      LCDWR ( LCDDAT,0x08);
 166   1      
 167   1                      LCDWR ( LCDDAT,0x20);
 168   1                      LCDWR ( LCDDAT,0x2a);
 169   1                      LCDWR ( LCDDAT,0x3c);
 170   1                      LCDWR ( LCDDAT,0x3d);
 171   1                      LCDWR ( LCDDAT,0x3f);
 172   1                      delay(150);  
 173   1                      LCDWR( LCDCOM,0x29);   //booster set
 174   1                      delay(150);  
 175   1                      LCDWR( LCDCOM,0x2c);
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 4   

 176   1      }
 177          
 178          /*======================================================
 179          设置显示范围
 180          =======================================================*/
 181          void LCDSetArea( INT16U x1, INT16U y1, INT16U x2, INT16U y2 )
 182          {
 183   1              x1+=2;
 184   1              x2+=2;
 185   1              y1+=3;
 186   1              y2+=3;  
 187   1      
 188   1          LCDWR ( LCDCOM, 0x2A);
 189   1              LCDWR ( LCDDAT,  x1>>8);
 190   1              LCDWR ( LCDDAT, x1);
 191   1              LCDWR ( LCDDAT,  x2>>8);
 192   1              LCDWR ( LCDDAT, x2 + 0); 
 193   1      
 194   1              LCDWR ( LCDCOM, 0x2B);
 195   1              LCDWR ( LCDDAT,  y1>>8);
 196   1              LCDWR ( LCDDAT, y1); 
 197   1              LCDWR ( LCDDAT,  y2>>8);
 198   1              LCDWR ( LCDDAT, y2); 
 199   1              LCDWR ( LCDCOM, 0x2C);
 200   1      }
 201          /*======================================================
 202          画一个特殊的范围
 203          =======================================================*/
 204          void    LCDDrawDollop( DOLLOP* dollop )
 205          {
 206   1              INT8U x,y;
 207   1      
 208   1              LCDSetArea(dollop->xs, dollop->ys, dollop->xe, dollop->ye);     //Set a area at the screen
 209   1              for( x = 0; x < dollop->xe - dollop->xs + 1; x ++ )                                     //Display rows
 210   1              {
 211   2                      for( y = 0; y < dollop->ye - dollop->ys + 1; y ++ )                             //Display columns
 212   2                      {
 213   3                              LCDWR( LCDDAT, dollop->Color>>8 );
 214   3                              LCDWR( LCDDAT, dollop->Color );
 215   3                      }
 216   2              }
 217   1      }
 218          /*======================================================
 219          画点
 220          =======================================================*/
 221          void LCDDrawPoint( POINT* pPoint )        //画点
 222          {
 223   1          LCDSetArea( pPoint->x, pPoint->y, pPoint->x, pPoint->y );
 224   1              LCDWR ( LCDDAT,  ( pPoint->Color >> 8 ) & 0xff );
 225   1              LCDWR ( LCDDAT,  pPoint->Color & 0xff );
 226   1      }
 227          
 228          /*======================================================
 229          画直线
 230          =======================================================*/
 231          void LCDDrawHRLine( LINE* pLine )         //画直线
 232          {
 233   1              INT8U x0, x1, y0, y1;
 234   1              if( pLine->xs != pLine->xe && pLine->ys != pLine->ye )   return;
 235   1              if( pLine->ys > pLine->ye )
 236   1              {
 237   2                      y0 = pLine->ye;
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 5   

 238   2                      y1 = pLine->ys;
 239   2              }
 240   1              else
 241   1              {
 242   2                      y0 = pLine->ys;
 243   2                      y1 = pLine->ye;
 244   2              }
 245   1              if( pLine->xs > pLine->xe )
 246   1              {
 247   2                      x0 = pLine->xe;
 248   2                      x1 = pLine->xs;
 249   2              }
 250   1              else
 251   1              {
 252   2                      x0 = pLine->xs;
 253   2                      x1 = pLine->xe;
 254   2              }
 255   1              LCDSetArea( x0, y0, x1, y1 );
 256   1              x0 = x1 - x0;
 257   1              if( x0 == 0 ) x0 = y1 - y0;
 258   1              for( y0 = 0; y0 < x0; y0 ++ )
 259   1              {
 260   2                      LCDWR( LCDDAT, pLine->Color >> 8 );
 261   2                      LCDWR( LCDDAT, pLine->Color );
 262   2              }
 263   1      }
 264          
 265          /*======================================================
 266          画一个特殊的
 267          =======================================================*/
 268          void    PrintBitBlock( BitBlock *pBitBlock )
 269          {
 270   1          INT8U       Row, Column;
 271   1              INT32U  BytesAbs;
 272   1              INT8U   RowBytes;
 273   1      
 274   1              LCDSetArea( pBitBlock->xs, pBitBlock->ys,
 275   1                      pBitBlock->xs + pBitBlock->Width - 1, pBitBlock->ys + pBitBlock->Height - 1 );
 276   1      
 277   1              RowBytes = pBitBlock->Width >> 3;
 278   1              if( pBitBlock->Width & 0x07 )
 279   1              {
 280   2                      RowBytes ++;
 281   2              }
 282   1              for( Row = 0; Row <  pBitBlock->Height; Row ++ )
 283   1              {
 284   2                      for( Column = 0; Column < pBitBlock->Width; Column ++ )
 285   2                      {
 286   3                              BytesAbs = Row * RowBytes + ( Column >> 3 )     ;
 287   3                              if( *( pBitBlock->pData + BytesAbs )    & ( 1<<( Column & 0x07 )) )
 288   3                              {
 289   4                                      LCDWR( LCDDAT, pBitBlock->Color >> 8 );
 290   4                                      LCDWR( LCDDAT, pBitBlock->Color );
 291   4                              }
 292   3                              else
 293   3                              {
 294   4                                      LCDWR( LCDDAT, pBitBlock->BackColor >> 8 );
 295   4                                      LCDWR( LCDDAT, pBitBlock->BackColor );
 296   4                              }
 297   3                      }
 298   2              }
 299   1      }
C51 COMPILER V9.00   LCD                                                                   08/26/2012 13:41:40 PAGE 6   

 300          /*
 301          
 302          /*======================================================
 303          显示图像

⌨️ 快捷键说明

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