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

📄 lcd_drv.lst

📁 本人at89c51snd1c主控IC增加了128*32点阵驱动显示
💻 LST
字号:
C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCD_DRV
OBJECT MODULE PLACED IN .\Output\lcd_drv.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE modules\display\lcd_drv.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;
                    -.\;.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\Output\lcd_drv.lst) OBJECT(.\Output\lcd_drv.obj)

line level    source

   1          
   2          #include "config.h"                         /* system configuration */
   3          #include "lib_mcu\mp3\mp3_drv.h"                        /* mp3 driver definition */
   4          #include "modules\display\lcd_drv.h" 
   5          #define CMD_SET_LOWER_COLUMN_ADDRESS(x)     (x&0xf)
   6          #define CMD_SET_HIGHER_COLUMN_ADDRESS(x)    0x10|((x>>4)&0xf)
   7          #define CMD_SET_PAGE_ADDRESS(x)             0xb0|(x&0xf)
   8          
   9          void _MultiNop(int time)
  10             {
  11   1          int i;
  12   1                int delayLoopCount=400;
  13   1          for(;time>0;time--)
  14   1                for(i=0;i<delayLoopCount;i++);
  15   1         }
  16          
  17          
  18              void LCDDataOut(Uchar Data)
  19            {
  20   1          int i;
  21   1          for(i=0;i<8;i++)
  22   1          {
  23   2              if(Data&0x80)
  24   2                  LCD_SDA= TRUE;
  25   2              else
  26   2                  LCD_SDA = FALSE;
  27   2              Data = (Data<<1)&0xfe;
  28   2              LCD_CLK = FALSE;
  29   2              LCD_CLK = TRUE;
  30   2          }
  31   1       }
  32          
  33               void LCDSendCMD(Uchar Command)
  34              {
  35   1          LCD_DC= FALSE;
  36   1          LCD_CS1= FALSE;
  37   1          //_MultiNop(1);
  38   1          LCDDataOut(Command);
  39   1          LCD_CS1= TRUE;
  40   1           }
  41          
  42              void LCDSendData(Uchar Data)
  43              {
  44   1          LCD_DC= TRUE;
  45   1          LCD_CS1= FALSE;
  46   1         // _MultiNop(1);
  47   1          LCDDataOut(Data);
  48   1          LCD_CS1= TRUE;
  49   1           }
  50          
  51          
  52          
  53          void Draw2Digit( Uchar Pos, Uchar HexCode );
  54          void Draw8x6Icons( Uchar Page, Uchar Column, Uchar Index );
C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 2   

  55          
  56             void LCDDisplayInit()
  57             {
  58   1         int j;
  59   1          LCD_RESET = TRUE; 
  60   1          LCD_CS1= FALSE;
  61   1          LCD_SDA= TRUE;
  62   1          LCD_DC = TRUE;
  63   1          LCD_CLK = TRUE;
  64   1         LCD_RESET = FALSE; 
  65   1           for(j=0;j<0xFFFF;j++)
  66   1              {
  67   2           _MultiNop(5);
  68   2              }  
  69   1          LCD_RESET = TRUE; 
  70   1          for(j=0;j<0xFFFF;j++)
  71   1              {
  72   2           _MultiNop(5);
  73   2              }   
  74   1                BacklightTurnOff;
  75   1                LCDSendCMD(0xE2);//RESET
  76   1          LCDSendCMD(0xa0);//zgz [ADC Select]
  77   1          LCDSendCMD(0xC8);//zgz [SHL Select]
  78   1          LCDSendCMD(0xA3);//zgz [LCD Bias Select 1/9]
  79   1           for(j=0;j<0xFFFF;j++)         //Waiting for 50% rising of VOUT
  80   1           {
  81   2            _MultiNop(2);
  82   2           }
  83   1          LCDSendCMD(0x2C);//zgz [Power Control:VC=1,VR=0,VF=0]
  84   1          for(j=0;j<0xFFFF;j++)         //Waiting for 50% rising of VOUT
  85   1           {
  86   2            _MultiNop(2);
  87   2           }
  88   1         LCDSendCMD(0x2E);//zgz  [Power Control:VC=1,VR=1,VF=0]
  89   1         for(j=0;j<0xFFFF;j++)      //Waiting for>=1ms
  90   1           {
  91   2            _MultiNop(2);
  92   2           }
  93   1      
  94   1           LCDSendCMD(0x2F);//zgz  [Power Control:VC=1,VR=1,VF=1]
  95   1          for(j=0;j<0xFFFF;j++)
  96   1           {
  97   2             _MultiNop(2);
  98   2           }
  99   1          LCDSendCMD(0x21);//zgz  [Regulator Resistor Select (LCD 浓度)] play:21
 100   1          LCDSendCMD(0x81);//zgz  [Reference Voltage Register Set (Brightness)]
 101   1          LCDSendCMD(0x24);//zgz  [Electronic volume setting (Brightness setting)]  
 102   1              //LCDSendCMD(0x40);//START LINE
 103   1              //LCDSendCMD(0xe0);//
 104   1              LCDSendCMD(0xa4);
 105   1              LCDSendCMD(0x81);//contrast
 106   1              LCDSendCMD(0x20);//default contrast 40
 107   1          LCDSendCMD(0xaf);//display On
 108   1         // LCDSendCMD(0xa5);//FULL display]
 109   1      }
 110          
 111          
 112          
 113          /*=============================================================================
 114          Description:
 115          
 116          OK-02/10
C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 3   

 117          =============================================================================*/
 118          void SetLCDAddress( Uchar Page, Uchar Column )
 119          {   
 120   1          // Page 
 121   1          LCDSendCMD(CMD_SET_PAGE_ADDRESS(Page));
 122   1          // Column setting
 123   1          LCDSendCMD(CMD_SET_LOWER_COLUMN_ADDRESS(Column));
 124   1          LCDSendCMD(CMD_SET_HIGHER_COLUMN_ADDRESS(Column));
 125   1          
 126   1      }
 127          /*=============================================================================
 128          Description:
 129                  
 130                  !!! Data in XRAM !!!
 131          
 132          OK-02/11        
 133          =============================================================================*/
 134          /*
 135          void PutXdataToLCD( Uchar pBuffer, Uchar Loop )
 136          {
 137              do {
 138                  LCDSendData( *pBuffer );
 139                  pBuffer++;
 140              }while (--Loop);
 141              
 142          }
 143          */
 144          /*=============================================================================
 145          Description:
 146                  
 147              !!! Data in CODE !!!
 148          
 149          =============================================================================*/
 150          
 151          void PutCodeToLCD( Byte *pBuffer, Uchar Loop )
 152          {
 153   1          
 154   1          do {
 155   2              LCDSendData( *pBuffer );
 156   2              pBuffer++;
 157   2          }while (--Loop);
 158   1          
 159   1      }
 160          
 161          
 162          
 163          
 164          
 165          /*=============================================================================
 166          Description:
 167                  
 168              0 <= Value <= 7, total 8 step
 169          
 170          =============================================================================*/
 171          void LCDSetContrast( Uchar Value )
 172          {
 173   1          LCDSendCMD( 0x20 + Value );
 174   1      }
 175          
 176          
 177          /*=============================================================================
 178          Description:
C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 4   

 179          
 180              display special data or clear screen
 181          
 182          =============================================================================*/
 183          void LCDClearLine( Uchar page, Uchar column, Uint16 Length )
 184          {
 185   1          SetLCDAddress( page, column );
 186   1          
 187   1          do{
 188   2              LCDSendData( 0 );
 189   2          }while( --Length );
 190   1      }
 191          
 192          
 193          /*=============================================================================
 194          Description:
 195          
 196          =============================================================================*/
 197          void LCDPowerOff()
 198          {
 199   1      
 200   1          // turn off LCM
 201   1         // mNT7502DisplayOff;
 202   1          
 203   1          // clear all screen data
 204   1          LCDSendCMD(0XA0);
 205   1          
 206   1          // turn off power..
 207   1       //   mNT7502PowerOff;
 208   1      }
 209          
 210          
 211          
 212          /*=============================================================================
 213          Description:
 214          
 215              this function can directly access NT7502 module
 216              to execute a NT7502 command
 217          
 218          =============================================================================*/
 219          void LCDSendCommand( Uchar cmd )
 220          {
 221   1          LCDSendCMD( cmd );
 222   1      }
 223          
 224          
 225          /*=============================================================================
 226          Description:
 227          
 228              this function can directly access NT7502 module
 229              to write a data to NT7502
 230              
 231          =============================================================================*/
 232          
 233          
 234          void Draw8x6Icons( Uchar Page, Uchar Column, Uchar Index )
 235          {
 236   1          SetLCDAddress( Page , Column );
 237   1          PutCodeToLCD( &Icon8x6[Index][0], 6 );
 238   1      }
 239          
 240          
C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 5   

 241          void Draw2Digit( Uchar Pos, Uchar HexCode )
 242          {
 243   1          int i,j;
 244   1          i = HexCode / 10;
 245   1                j = HexCode %10;
 246   1          //CalVar2.be.h8 = HexCode / 10;
 247   1          //CalVar2.be.l8 = HexCode / 10;
 248   1      
 249   1          if ( i > 9 )
 250   1              i = 9;
 251   1      
 252   1          Draw8x6Icons( 2, Pos,      i );
 253   1          Draw8x6Icons( 2, Pos + 6,  j );
 254   1      
 255   1      }
 256          
 257          
 258          
 259          void prints(unsigned char * temp)
 260          {
 261   1       while((*temp)!='\0')
 262   1        {
 263   2         LCDSendData(*temp);
 264   2         temp++;
 265   2        }
 266   1      }
 267          void PutToChina(Uchar Page ,Uchar Column,Byte *prt )
 268          {
 269   1      //      Uchar i;
 270   1              //SetLCDAddress( Page, Column );
 271   1       /* for(i=0;i<32;i++);
 272   1          {
 273   1              if(i==16)
 274   1              {
 275   1                      SetLCDAddress( Page , Column+1);
 276   1              }
 277   1              LCDSendData(*prt);
 278   1              prt++;
 279   1          }
 280   1          */
 281   1           Uchar Loop=32;
 282   1       
 283   1          do {
 284   2                if(Loop==16)
 285   2              {
 286   3                      SetLCDAddress( Page+1 , Column);
 287   3              }
 288   2              LCDSendData( *prt );
 289   2              prt++;
 290   2          }while (--Loop);
 291   1        }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    585    ----
   CONSTANT SIZE    =    120    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.20   LCD_DRV                                                               03/24/2007 10:02:37 PAGE 6   


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

⌨️ 快捷键说明

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