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

📄 lcd.lst

📁 hx8347 初始化,刷屏,图片显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   LCD                                                                   04/14/2009 23:28:41 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\lcd.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\SourceFile\lcd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd.lst) OBJECT(.\lcd
                    -.obj)

line level    source

   1          
   2          /***************************************************************************************
   3          ****************************************************************************************
   4          * FILE          : lcd.c
   5          * Description   : 
   6          *                         
   7          * Copyright (c) 2003~2008 by 创易电子. All Rights Reserved.
   8          * 
   9          * History:
  10          * Version               Name                    Date                    Description
  11             1.0          Wang Shaowei    2008/12/16      Initial Version (For DesignEasy LCM MCU board)
  12             1.1          Liu Ying                        2008/12/21      Comments
  13             1.2                                          2009/03/03    240x320 LCM
  14             
  15          ****************************************************************************************
  16          ****************************************************************************************/
  17          
  18          
  19          #include "lcd.h"
  20          
  21          /*LCD初始化完后显示创易电子logo,用户程序显示全屏白色*/
  22          #ifdef LOGO
  23          #include "logo.h"
  24          #endif
  25          
  26          
  27          #define LCD_WIDTH                       240
  28          #define LCD_HEIGHT                      320
  29          
  30          #define LCD_FULL_SCREEN_X_START         0
  31          #define LCD_FULL_SCREEN_Y_START         0
  32          #define LCD_FULL_SCREEN_X_END           (LCD_WIDTH-1)
  33          #define LCD_FULL_SCREEN_Y_END           (LCD_HEIGHT-1)
  34          
  35          
  36          /*==================================================================
  37          * Function      : Truly_HX8347_init
  38          * Description   : init HX8347,
  39                                  初始化LCD,初始化命令由LCD原厂提供,
  40                                  有兴趣可以对照lcd driver ic看看每条命令的含义,
  41                                  调节lcd显示效果也通过这些命令。
  42                                  注: 这部分代码,本店不予技术支持
  43          * Input Para    : void
  44          * Output Para   : void
  45          * Return Value: void
  46          ==================================================================*/
  47          static void Truly_HX8347_init(void)
  48          {
  49   1              WMLCDCOM(0x00, 0x46);WMLCDDATA(0x00, 0x91);
  50   1              WMLCDCOM(0x00, 0x47);WMLCDDATA(0x00, 0x11);
  51   1              WMLCDCOM(0x00, 0x48);WMLCDDATA(0x00, 0x00);
  52   1              WMLCDCOM(0x00, 0x49);WMLCDDATA(0x00, 0x66);
  53   1              WMLCDCOM(0x00, 0x4A);WMLCDDATA(0x00, 0x37);
  54   1              WMLCDCOM(0x00, 0x4B);WMLCDDATA(0x00, 0x04);
C51 COMPILER V7.10   LCD                                                                   04/14/2009 23:28:41 PAGE 2   

  55   1              WMLCDCOM(0x00, 0x4C);WMLCDDATA(0x00, 0x11);
  56   1              WMLCDCOM(0x00, 0x4D);WMLCDDATA(0x00, 0x77);
  57   1              WMLCDCOM(0x00, 0x4E);WMLCDDATA(0x00, 0x00);
  58   1              WMLCDCOM(0x00, 0x4F);WMLCDDATA(0x00, 0x1F);
  59   1              WMLCDCOM(0x00, 0x50);WMLCDDATA(0x00, 0x0F);
  60   1              WMLCDCOM(0x00, 0x51);WMLCDDATA(0x00, 0x00);
  61   1              //240x320 window setting
  62   1              WMLCDCOM(0x00, 0x02);WMLCDDATA(0x00, 0x00); // Column address start2
  63   1              WMLCDCOM(0x00, 0x03);WMLCDDATA(0x00, 0x00); // Column address start1
  64   1              WMLCDCOM(0x00, 0x04);WMLCDDATA(0x00, 0x00); // Column address end2
  65   1              WMLCDCOM(0x00, 0x05);WMLCDDATA(0x00, 0xEF); // Column address end1
  66   1              WMLCDCOM(0x00, 0x06);WMLCDDATA(0x00, 0x00); // Row address start2
  67   1              WMLCDCOM(0x00, 0x07);WMLCDDATA(0x00, 0x00); // Row address start1
  68   1              WMLCDCOM(0x00, 0x08);WMLCDDATA(0x00, 0x01); // Row address end2
  69   1              WMLCDCOM(0x00, 0x09);WMLCDDATA(0x00, 0x3F); // Row address end1
  70   1              // Display Setting
  71   1              WMLCDCOM(0x00, 0x01);WMLCDDATA(0x00, 0x06); // IDMON=0, INVON=1, NORON=1, PTLON=0
  72   1              WMLCDCOM(0x00, 0x16);WMLCDDATA(0x00, 0xc8); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0
  73   1              WMLCDCOM(0x00, 0x23);WMLCDDATA(0x00, 0x95); // N_DC=1001 0101
  74   1              WMLCDCOM(0x00, 0x24);WMLCDDATA(0x00, 0x95); // PI_DC=1001 0101
  75   1              WMLCDCOM(0x00, 0x25);WMLCDDATA(0x00, 0xFF); // I_DC=1111 1111
  76   1              WMLCDCOM(0x00, 0x27);WMLCDDATA(0x00, 0x02); // N_BP=0000 0010
  77   1              WMLCDCOM(0x00, 0x28);WMLCDDATA(0x00, 0x02); // N_FP=0000 0010
  78   1              WMLCDCOM(0x00, 0x29);WMLCDDATA(0x00, 0x02); // PI_BP=0000 0010
  79   1              WMLCDCOM(0x00, 0x2A);WMLCDDATA(0x00, 0x02); // PI_FP=0000 0010
  80   1              WMLCDCOM(0x00, 0x2C);WMLCDDATA(0x00, 0x02); // I_BP=0000 0010
  81   1              WMLCDCOM(0x00, 0x2D);WMLCDDATA(0x00, 0x02); // I_FP=0000 0010
  82   1              WMLCDCOM(0x00, 0x3A);WMLCDDATA(0x00, 0x01); // N_RTN=0000, N_NW=001
  83   1              WMLCDCOM(0x00, 0x3B);WMLCDDATA(0x00, 0x01); // PI_RTN=0000, PI_NW=001
  84   1              WMLCDCOM(0x00, 0x3C);WMLCDDATA(0x00, 0xF0); // I_RTN=1111, I_NW=000
  85   1              WMLCDCOM(0x00, 0x3D);WMLCDDATA(0x00, 0x00); // DIV=00
  86   1              uty_delay(2000);
  87   1              WMLCDCOM(0x00, 0x35);WMLCDDATA(0x00, 0x38); // EQS=38h
  88   1              WMLCDCOM(0x00, 0x36);WMLCDDATA(0x00, 0x78); // EQP=78h
  89   1              WMLCDCOM(0x00, 0x3E);WMLCDDATA(0x00, 0x38); // SON=38h
  90   1              WMLCDCOM(0x00, 0x40);WMLCDDATA(0x00, 0x0F); // GDON=0Fh
  91   1              WMLCDCOM(0x00, 0x41);WMLCDDATA(0x00, 0xF0); // GDOFF
  92   1              // Power Supply Setting
  93   1              WMLCDCOM(0x00, 0x19);WMLCDDATA(0x00, 0x47); // CADJ=0100, CUADJ=100, OSD_EN=1 ,60Hz
  94   1              WMLCDCOM(0x00, 0x93);WMLCDDATA(0x00, 0x0F); // RADJ=1111, 100%
  95   1              uty_delay(1000);
  96   1              WMLCDCOM(0x00, 0x20);WMLCDDATA(0x00, 0x40); // BT=0100
  97   1              WMLCDCOM(0x00, 0x1D);WMLCDDATA(0x00, 0x07); // VC1=111
  98   1              WMLCDCOM(0x00, 0x1E);WMLCDDATA(0x00, 0x00); // VC3=000
  99   1              WMLCDCOM(0x00, 0x1F);WMLCDDATA(0x00, 0x03); // VRH=0011
 100   1              WMLCDCOM(0x00, 0x44);WMLCDDATA(0x00, 0x50); // VCM=101 0000
 101   1              WMLCDCOM(0x00, 0x45);WMLCDDATA(0x00, 0x13); // VDV=1 0001
 102   1              uty_delay(1000);
 103   1              WMLCDCOM(0x00, 0x1C);WMLCDDATA(0x00, 0x04); // AP=100
 104   1              uty_delay(2000);
 105   1              WMLCDCOM(0x00, 0x43);WMLCDDATA(0x00, 0x80); //set VCOMG=1
 106   1              uty_delay(500);
 107   1              WMLCDCOM(0x00, 0x1B);WMLCDDATA(0x00, 0x08); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=0, STB=0
 108   1              uty_delay(4000);
 109   1              WMLCDCOM(0x00, 0x1B);WMLCDDATA(0x00, 0x10); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=0, STB=0
 110   1              uty_delay(4000);
 111   1              // Display ON Setting
 112   1              WMLCDCOM(0x00, 0x90);WMLCDDATA(0x00, 0x7F); // SAP=0111 1111
 113   1              WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x04); //GON=0, DTE=0, D=01
 114   1              uty_delay(5000);
 115   1              WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x24); //GON=1, DTE=0, D=01
 116   1              uty_delay(5000);
C51 COMPILER V7.10   LCD                                                                   04/14/2009 23:28:41 PAGE 3   

 117   1              WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x2C); //GON=1, DTE=0, D=11
 118   1              uty_delay(5000);
 119   1              WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x3C); //GON=1, DTE=1, D=11
 120   1              uty_delay(5000);
 121   1              WMLCDCOM(0x00, 0x22);                  //WRITE DATA TO GRAM
 122   1      }
 123          
 124          
 125          /*==================================================================
 126          * Function      : Display_Logo
 127          * Description   : 显示全屏红色(0xF800),
 128                                  若定义了LOGO,则在屏中间显示创易电子logo
 129          * Input Para    : void
 130          * Output Para   : void
 131          * Return Value: void
 132          ==================================================================*/
 133          static void Display_Logo(void)
 134          {
 135   1              U8 code * data pPoint;
 136   1              U8 t1, t2;
 137   1              U16 X,Y;
 138   1              
 139   1              lcd_set_write_area(LCD_FULL_SCREEN_X_START, LCD_FULL_SCREEN_Y_START, LCD_FULL_SCREEN_X_END, LCD_FULL_SCRE
             -EN_Y_END);
 140   1      
 141   1              for(X = 0; X < LCD_WIDTH; X++)
 142   1              {
 143   2                      for(Y = 0; Y < LCD_HEIGHT; Y++)
 144   2                      {
 145   3                              WMLCDDATA(0xF8, 0x00);
 146   3      
 147   3                      }
 148   2              }
 149   1      
 150   1      #ifdef LOGO
 151   1              lcd_set_write_area(32, 105, 207, 214);
 152   1              pPoint = gImage_Logo;
 153   1              for(Y = 105; Y < 215; Y++)
 154   1              {
 155   2                      for(X = 32; X < 208; X++)
 156   2                      {
 157   3                              t1 = *pPoint ++;
 158   3                              t2 = *pPoint ++;
 159   3                              WMLCDDATA(t1, t2);
 160   3                      }
 161   2              }
 162   1      #endif
 163   1      }
 164          
 165          
 166          
 167          
 168          /*==================================================================
 169          * Function      : lcd_init
 170          * Description   : 初始化lcd,在使用lcd之前必须调用
 171          * Input Para    : void
 172          * Output Para   : void
 173          * Return Value: void
 174          ==================================================================*/
 175          void lcd_init(void)
 176          {
 177   1              /*************************************************************************/
C51 COMPILER V7.10   LCD                                                                   04/14/2009 23:28:41 PAGE 4   

 178   1              // 以下部分需根据自己的单片机或者ARM系统相应配置
 179   1              
 180   1              /*配置GPIO定义*/
 181   1              P1M0 = 0x03;
 182   1              P1M1 = 0x00;
 183   1              
 184   1              /*配置总线速度*/
 185   1              BUS_SPEED = 0x01;
 186   1      
 187   1              /*外部RAM使能,一般单片机都需要把外部ram总线打开,否则外部总线无效*/
 188   1              SETBIT(AUXR, 1);
 189   1      
 190   1      
 191   1              /*************************************************************************/
 192   1              //以下部分为LCD硬件复位,非常重要
 193   1              //注意LCD_nRST的定义需要根据各自的系统配置
 194   1      
 195   1              /*复位*/
 196   1              LCD_nRST = 1;
 197   1              LCD_nRST = 0;
 198   1              uty_delay(0xF000);      
 199   1              LCD_nRST = 1;
 200   1              
 201   1              /*延时,这个是这个芯片的特性,必须要*/
 202   1              uty_delay(0x1000);
 203   1      
 204   1      
 205   1              /*************************************************************************/
 206   1              //开背光,否则无法显示
 207   1              //注意BL_EN的定义需要根据各自的系统配置
 208   1              BL_EN =1;
 209   1      
 210   1      
 211   1              /*************************************************************************/
 212   1              //初始化LCD
 213   1              //注意其中的WMLCDCOM、WMLCDDATA需要根据各自系统配置
 214   1              //uty_delay为各个系统的delay函数
 215   1              Truly_HX8347_init();
 216   1      
 217   1      
 218   1              /*************************************************************************/
 219   1              //初始化完成之后就可以刷屏了
 220   1              Display_Logo();
 221   1      }
 222          
 223          
 224          /*==================================================================
 225          * Function      : lcd_set_write_area
 226          * Description   : 设置lcd memory write的区域
 227          * Input Para    : U16 StartX, U16 StartY,U16 EndX, U16 EndY
 228          * Output Para   : void
 229          * Return Value: void
 230          ==================================================================*/
 231          void lcd_set_write_area(U16 StartX, U16 StartY,U16 EndX, U16 EndY)
 232          {
 233   1              WMLCDCOM(0x00, 0x02);
 234   1              WMLCDDATA(0x00, H_U16(StartX));
 235   1              WMLCDCOM(0x00,0x03);
 236   1              WMLCDDATA(0x00, L_U16(StartX));
 237   1              WMLCDCOM(0x00, 0x04);
 238   1              WMLCDDATA(0x00, H_U16(EndX));
 239   1              WMLCDCOM(0x00, 0x05);
C51 COMPILER V7.10   LCD                                                                   04/14/2009 23:28:41 PAGE 5   

 240   1              WMLCDDATA(0x00, L_U16(EndX));
 241   1              WMLCDCOM(0x00, 0x06);
 242   1              WMLCDDATA(0x00, H_U16(StartY));
 243   1              WMLCDCOM(0x00, 0x07);

⌨️ 快捷键说明

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