|
发表于 2010-8-21 16:05:57
|
显示全部楼层
我使用了两种驱动器HX8347和ILI9325 用103VET6 A16脚接RS信号,为了提高速度,能用宏就用宏,
我觉得驱动器都差不多,只要底层驱动对了就行,驱动如下:
lcddev.h
#ifndef __LCDDEV_H__
#define __LCDDEV_H__
#define HX8347 1
#define LCD_REG ((vu16*)0x60000000)
#define LCD_RAM ((vu16*)0x60020000) //A16接到RS输出
/* LCD Control pins */
#define CtrlPin_NCS GPIO_Pin_2 /* PB.02 */
#define CtrlPin_RS GPIO_Pin_7 /* PD.07 */
#define CtrlPin_NWR GPIO_Pin_15 /* PD.15 */
#define Lcd_LightPin GPIO_Pin_0 /* PB.00 */
#define nRstPin GPIO_Pin_1 /* PB.01 */
#define RsPin GPIO_Pin_11 /* PD.11 */
/* LCD color */
#define White 0xFFFF
#define Black 0x0000
#define Grey 0xF7DE
#define Blue 0x001F
#define Blue2 0x051F
#define Red 0xF800
#define Magenta 0xF81F
#define Green 0x07E0
#define Cyan 0x7FFF
#define Yellow 0xFFE0
/* Exported macro ------------------------------------------------------------*/
#define Lcd_Light_ON (*((volatile unsigned long *) 0x40010C14) = Lcd_LightPin) //输出低时背光LED亮
#define Lcd_Light_OFF (*((volatile unsigned long *) 0x40010C10) = Lcd_LightPin)
#define LCD_RST_1 (*((volatile unsigned long *) 0x40010C10) |= nRstPin) //Set_Rst
#define LCD_RST_0 (*((volatile unsigned long *) 0x40010C14) |= nRstPin) //Clr_Rst
#define LCD_WriteCMD(idat) *LCD_REG = idat
#define LCD_WriteRAM(idat) *LCD_RAM = idat
//#define LCD_ReadRAM() {*LCD_REG = 0x0022; return (*LCD_RAM);}
#define LCD_WriteRAM_Prepare() *LCD_REG = 0x0022
#define LCD_WriteReg(iadd,idata) {*LCD_REG = iadd;*LCD_RAM = idata;}
//#define LCD_ReadReg(iadd) {*LCD_REG = iadd; return (vu16)(*LCD_RAM);}
#ifndef HX8347
#define LCD_SetCursor(Xpos,Ypos) {LCD_WriteReg(0x0020, Xpos);LCD_WriteReg(0x0021, Ypos);}
#endif
#define lcd_write_point(x,y,irgb) {LCD_SetCursor(x,y);LCD_WriteCMD(0x0022);LCD_WriteRAM(irgb);}
void LCD_CtrlLinesConfig(void);
void LCD_FSMCConfig(void);
u16 LCD_ReadReg(u8 iadd);
u16 LCD_ReadRAM(void);
u16 lcd_read_point(u16 x, u16 y);
void lcd_init(void);
void LCD_SetCursor(unsigned int x1,unsigned int y1);
/*
void LCD_WriteCMD(u8 idat);
void LCD_WriteReg(u8 iadd, u16 idat);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 idat);
void LCD_SetCursor(u16 Xpos, u16 Ypos);
void lcd_write_point(u16 x, u16 y, u16 irgb);
*/
#endif
lcddev.c
#include "stm32f10x_lib.h"
#include "lcddev.h"
#include "LCDConf.h"
/*******************************************************************************
* Function Name : LCD_CtrlLinesConfig
* Description : Configures LCD Control lines (FSMC Pins) in alternate function
Push-Pull mode.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LCD_CtrlLinesConfig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE |
RCC_APB2Periph_AFIO, ENABLE);
/* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
PD.10(D15), PD.14(D0), PD.15(D1) as alternate (增加PD.07 作为NE1 PD.11 作为 RS)
function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_11 | //
GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
PE.14(D11), PE.15(D12) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
/* Set PB.00(EN_LED) EN_LED =0 LIGHT BACKLED,PB.01(LCD_RES) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name : LCD_FSMCConfig
* Description : Configures the Parallel interface (FSMC) for LCD(Parallel mode)
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LCD_FSMCConfig(void)
{
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef p;
/*-- FSMC Configuration ------------------------------------------------------*/
/* FSMC_Bank1_NORSRAM1 timing configuration */
p.FSMC_AddressSetupTime = 1;
p.FSMC_AddressHoldTime = 0;
p.FSMC_DataSetupTime = 5; //(5为参考值) (试过3一样稳定) 此处只会减少一些送数据的时间,但可能会有数据出错的可能,至今未发现
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 0;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_B; //FSMC_AccessMode_B
/* FSMC_Bank1_NORSRAM1 configured as follows:
- Data/Address MUX = Disable
- Memory Type = SRAM
- Data Width = 16bit
- Write Operation = Enable
- Extended Mode = Disable
- Asynchronous Wait = Disable */
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
/* Enable FSMC_Bank1_NORSRAM1 */
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
}
u16 LCD_ReadReg(u8 iadd)
{
*LCD_REG = iadd;
return (*LCD_RAM);
}
u16 LCD_ReadRAM(void)
{
*LCD_REG = 0x0022;
return (*LCD_RAM);
}
u16 lcd_read_point(u16 x, u16 y)
{
LCD_SetCursor(x,y);
return (LCD_ReadReg(0x0022));
}
void lcd_fill(u16 x, u16 y, u16 x_wide, u16 y_height, u16 srgb)
{
u32 index = 0;
LCD_SetCursor(0x00, 0x00); //y_heightx_wide
LCD_WriteRAM_Prepare();
for(index = 0; index < x_wide*y_height/2; index++) //分开写供测试写点的方式
{
*LCD_RAM = srgb;
}
for(index = 0; index < x_wide*y_height/2; index++)
{
*LCD_RAM = srgb;
}
}
#ifndef HX8347
void lcd_init()
{
u16 temp=0,i;
/* Configure the LCD Control pins --------------------------------------------*/
LCD_CtrlLinesConfig();
/* Configure the FSMC Parallel interface -------------------------------------*/
LCD_FSMCConfig();
Lcd_Light_OFF;
LCD_RST_1;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_RST_0;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(50); /* delay 500 ms */
LCD_RST_1;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(5); /* delay 50 ms */
//while(1){
/* Start Initial Sequence ----------------------------------------------------*/
LCD_WriteReg(0x00E5, 0x78f0); /* Set the internal vcore voltage */
temp = LCD_ReadReg(0xE5);
LCD_WriteReg(0x0000, 0x0001); /* Start internal OSC. */
temp = LCD_ReadReg(0);
LCD_WriteReg(0x0001, 0x0100); /* set SS and SM bit */
LCD_WriteReg(0x0002, 0x0700); /* set 1 line inversion */
LCD_WriteReg(0x0003, 0x1030); /* set GRAM write direction and BGR=1. */
temp = LCD_ReadReg(3);
LCD_WriteReg(0x0004, 0x0000); /* Resize register */
LCD_WriteReg(0x0008, 0x0207); /* set the back porch and front porch */
LCD_WriteReg(0x0009, 0x0000); /* set non-display area refresh cycle ISC[3:0] */
LCD_WriteReg(0x000A, 0x0000); /* FMARK function */
LCD_WriteReg(0x000C, 0x0000); /* RGB interface setting */
LCD_WriteReg(0x000D, 0x0000); /* Frame marker Position */
LCD_WriteReg(0x000F, 0x0000); /* RGB interface polarity */
for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delayus(1);
//}
/* Power On sequence ---------------------------------------------------------*/
LCD_WriteReg(0x0010, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */
LCD_WriteReg(0x0011, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */
LCD_WriteReg(0x0012, 0x0000); /* VREG1OUT voltage */
LCD_WriteReg(0x0013, 0x0000); /* VDV[4:0] for VCOM amplitude */
LCD_WriteReg(0x0007, 0x0001); //*********
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(20); /* Dis-charge capacitor power voltage (200ms) */
LCD_WriteReg(0x0010, 0x1090); /* SAP, BT[3:0], AP, DSTB, SLP, STB */
LCD_WriteReg(0x0011, 0x0227); /* DC1[2:0], DC0[2:0], VC[2:0] */
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(5); /* Delay 50 ms */
LCD_WriteReg(0x0012, 0x001f); /* VREG1OUT voltage */
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(5); /* Delay 50 ms */
LCD_WriteReg(0x0013, 0x1500); /* VDV[4:0] for VCOM amplitude */
LCD_WriteReg(0x0029, 0x0027); /* VCM[4:0] for VCOMH */
LCD_WriteReg(0x002B, 0x000d);
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(5); /* Delay 50 ms */
LCD_WriteReg(0x0020, 0x0000); /* GRAM horizontal Address */
LCD_WriteReg(0x0021, 0x0000); /* GRAM Vertical Address */
/* Adjust the Gamma Curve ----------------------------------------------------*/
LCD_WriteReg(0x0030, 0x0000);
LCD_WriteReg(0x0031, 0x0707);
LCD_WriteReg(0x0032, 0x0307);
LCD_WriteReg(0x0035, 0x0200);
LCD_WriteReg(0x0036, 0x0008);
LCD_WriteReg(0x0037, 0x0004);
LCD_WriteReg(0x0038, 0x0000);
LCD_WriteReg(0x0039, 0x0707);
LCD_WriteReg(0x003C, 0x0002);
LCD_WriteReg(0x003D, 0x1d04);
/* Set GRAM area -------------------------------------------------------------*/
LCD_WriteReg(0x0050, 0x0000); /* Horizontal GRAM Start Address */
LCD_WriteReg(0x0051, 0x00EF); /* Horizontal GRAM End Address */
LCD_WriteReg(0x0052, 0x0000); /* Vertical GRAM Start Address */
LCD_WriteReg(0x0053, 0x013f); /* Vertical GRAM End Address */
LCD_WriteReg(0x0060, 0xa700); /* Gate Scan Line */
LCD_WriteReg(0x0061, 0x0001); /* NDL,VLE, REV 此处设置默认为0 此时背景BLACK 这背景为白色 */
LCD_WriteReg(0x006A, 0x0000); /* set scrolling line */
/* Partial Display Control ---------------------------------------------------*/
LCD_WriteReg(0x0080, 0x0000);
LCD_WriteReg(0x0081, 0x0000);
LCD_WriteReg(0x0082, 0x0000);
LCD_WriteReg(0x0083, 0x0000);
LCD_WriteReg(0x0084, 0x0000);
LCD_WriteReg(0x0085, 0x0000);
/* Panel Control -------------------------------------------------------------*/
LCD_WriteReg(0x0090, 0x0010);
LCD_WriteReg(0x0092, 0x0600);
LCD_WriteReg(0x0093, 0x0003);
LCD_WriteReg(0x0095, 0x0110);
LCD_WriteReg(0x0097, 0x0000);
LCD_WriteReg(0x0098, 0x0000);
/* Set GRAM write direction and BGR = 1 */
/* I/D=01 (Horizontal : increment, Vertical : decrement) */
/* AM=1 (address is updated in vertical writing direction) */
LCD_WriteReg(0x0003, 0x1030); //0x1018
LCD_WriteReg(0x0007, 0x0133); /* 262K color and display ON */
temp++;
Lcd_Light_ON;
//clear
lcd_fill(0, 0, LCD_XSIZE, LCD_YSIZE, Green);
}
#else
void LCD_SetCursor(unsigned int x1,unsigned int y1)
{
//LCD_WriteReg(0x0002,x1>>8); // Column address start2
LCD_WriteReg(0x0003,x1); // Column address start1
//LCD_WriteReg(0x0004,0); // Column address end2
//LCD_WriteReg(0x0005,0XEF); // Column address end1
LCD_WriteReg(0x0006,y1>>8); // Row address start2
LCD_WriteReg(0x0007,y1); // Row address start1
//LCD_WriteReg(0x0008,1); // Row address end2
//LCD_WriteReg(0x0009,0X3F); // Row address end1
//LCD_WriteCMD(0x0022);
}
void lcd_init()
{
u16 temp=0,i;
/* Configure the LCD Control pins --------------------------------------------*/
LCD_CtrlLinesConfig();
/* Configure the FSMC Parallel interface -------------------------------------*/
LCD_FSMCConfig();
Lcd_Light_OFF;
LCD_RST_1;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_RST_0;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(50); /* delay 500 ms */
LCD_RST_1;
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
//Delay(5); /* delay 50 ms */
//while(1){
// VENDOR
LCD_WriteReg(0x0046,0x00A4);
LCD_WriteReg(0x0047,0x0053);
LCD_WriteReg(0x0048,0x0000);
LCD_WriteReg(0x0049,0x0044);
LCD_WriteReg(0x004a,0x0004);
LCD_WriteReg(0x004b,0x0067);
LCD_WriteReg(0x004c,0x0033);
LCD_WriteReg(0x004d,0x0077);
LCD_WriteReg(0x004e,0x0012);
LCD_WriteReg(0x004f,0x004C);
LCD_WriteReg(0x0050,0x0046);
LCD_WriteReg(0x0051,0x0044);
//240x320 window setting
LCD_WriteReg(0x0002,0x0000); // Column address start2
LCD_WriteReg(0x0003,0x0000); // Column address start1
LCD_WriteReg(0x0004,0x0000); // Column address end2
LCD_WriteReg(0x0005,0x00ef); // Column address end1
LCD_WriteReg(0x0006,0x0000); // Row address start2
LCD_WriteReg(0x0007,0x0000); // Row address start1
LCD_WriteReg(0x0008,0x0001); // Row address end2
LCD_WriteReg(0x0009,0x003f); // Row address end1
// Display Setting
LCD_WriteReg(0x0001,0x0006); // IDMON=0, INVON=1, NORON=1, PTLON=0
LCD_WriteReg(0x0016,0x00C8); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0 0048
LCD_WriteReg(0x0023,0x0095); // N_DC=1001 0101
LCD_WriteReg(0x0024,0x0095); // PI_DC=1001 0101
LCD_WriteReg(0x0025,0x00FF); // I_DC=1111 1111
LCD_WriteReg(0x0027,0x0002); // N_BP=0000 0010
LCD_WriteReg(0x0028,0x0002); // N_FP=0000 0010
LCD_WriteReg(0x0029,0x0002); // PI_BP=0000 0010
LCD_WriteReg(0x002a,0x0002); // PI_FP=0000 0010
LCD_WriteReg(0x002C,0x0002); // I_BP=0000 0010
LCD_WriteReg(0x002d,0x0002); // I_FP=0000 0010
LCD_WriteReg(0x003a,0x0001); // N_RTN=0000, N_NW=001 0001
LCD_WriteReg(0x003b,0x0000); // P_RTN=0000, P_NW=001
LCD_WriteReg(0x003c,0x00f0); // I_RTN=1111, I_NW=000
LCD_WriteReg(0x003d,0x0000); // DIV=00
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x0035,0x0038); // EQS=38h
LCD_WriteReg(0x0036,0x0078); // EQP=78h
LCD_WriteReg(0x003E,0x0038); // SON=38h
LCD_WriteReg(0x0040,0x000F); // GDON=0Fh
LCD_WriteReg(0x0041,0x00F0); // GDOFF
// Power Supply Setting
LCD_WriteReg(0x0019,0x0049); // CADJ=0100, CUADJ=100, OSD_EN=1 ,60Hz
LCD_WriteReg(0x0093,0x000F); // RADJ=1111, 100%
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x0020,0x0040); // BT=0100
LCD_WriteReg(0x001D,0x0007); // VC1=111 0007
LCD_WriteReg(0x001E,0x0000); // VC3=000
LCD_WriteReg(0x001F,0x0004); // VRH=0011
//VCOM SETTING
LCD_WriteReg(0x0044,0x004D); // VCM=101 0000 4D
LCD_WriteReg(0x0045,0x000E); // VDV=1 0001 0011
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x001C,0x0004); // AP=100
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x001B,0x0018); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=0, STB=0
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x001B,0x0010); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=0, STB=0
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x0043,0x0080); //set VCOMG=1
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
// Display ON Setting
LCD_WriteReg(0x0090,0x007F); // SAP=0111 1111
LCD_WriteReg(0x0026,0x0004); //GON=0, DTE=0, D=01
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x0026,0x0024); //GON=1, DTE=0, D=01
LCD_WriteReg(0x0026,0x002C); //GON=1, DTE=0, D=11
for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);for(i=50000;i>0;i--);
LCD_WriteReg(0x0026,0x003C); //GON=1, DTE=1, D=11
// INTERNAL REGISTER SETTING
LCD_WriteReg(0x0057,0x0002); // TEST_Mode=1: into TEST mode
LCD_WriteReg(0x0095,0x0001); // SET DISPLAY CLOCK AND PUMPING CLOCK TO SYNCHRONIZE
LCD_WriteReg(0x0057,0x0000); // TEST_Mode=0: exit TEST mode
//LCD_WriteReg(0x0021,0x0000);
//main_Write_COM(0x0022);
LCD_WriteCMD(0x0022);
/* Set GRAM write direction and BGR = 1 */
/* I/D=01 (Horizontal : increment, Vertical : decrement) */
/* AM=1 (address is updated in vertical writing direction) */
//LCD_WriteReg(0x0003, 0x1030); //0x1018
//LCD_WriteReg(0x0007, 0x0133); /* 262K color and display ON */
temp++;
Lcd_Light_ON;
//clear
lcd_fill(0, 0, LCD_XSIZE, LCD_YSIZE, Blue);
}
#endif |
|