TFT LCD 的初始化 Himax Mobile TFT driver initial code Note(重要)

  • 格式:doc
  • 大小:29.00 KB
  • 文档页数:3

TFT LCD 的初始化

TFT LCD 的初始化是对TFT LCD Driver进行初始化。Driver初始化包括硬件RESET和软件初始化。硬件RESET的时间要求大于1MS,我们一般使用10MS。

软件初始化一般包括以下4个部分:

POWER-SET,CHIP-SET,GAMMA-SET和DISPLAY-ON。

示例:

void LCD_Initial_HX8303A(void)

{

HX8303A_Power_Set1();

DelayX1ms(40); // Op Amp Stable 250ms

HX8303A_Chip_Set1();

HX8303A_Power_Set2();

DelayX1ms(40);

HX8303A_Chip_Set2();

DelayX1ms(50);

HX8303A_Gamma_Set();

HX8303A_Display_On();

Set_LCD_INDEX(0x0022);

PIC_DISPLAY();

}

1. POWER-SET:是对DRIVER的VGH,VGL,VcomH等电压及驱动电流和DRIVER内部的一些工作频率进行设置。POWER-SET中,有些REGISTER在设置之后要有一段延时,然后才可对其他的REGISTER进行设置。这段延时必须是足够长的,其目的是保证所设置的项目稳定之后,才对其他的项目进行设置。如果延时不够,则初始化将可能不成功。POWER-SET时,有两个问题是值得注意的:

A. VGH/VGL的设置。

VGH/VGL=Vci*(VC2~0)*(BT2~0),要根据这个公式来设置VGH/VGL,VGH设在15V比较好,如果低于12V,则对显示可能会有一些影响,如果太高,则有烧坏IC的可能。

B. VcomH的设置。这个值要设置得比较合适,否则,显示时将会有横向的条纹(扫描线)出现。IC提供商提供的数据是比较好的,如果觉得不满意,则可在这个值的上下附近稍做调整,也许会得到更满意的数据。

示例:

void HX8303A_Power_Set1(void)

{

DelayX1ms(1);

Set_LCD_REG(0x0007,0x0104); DelayX1ms(40);

Set_LCD_REG(0x000d,0x0202);

DelayX1ms(40);

Set_LCD_REG(0x000e,0x0e19);

DelayX1ms(40);

}

void HX8303A_Power_Set2(void)

{

Set_LCD_REG(0x000c,0x0000);

DelayX1ms(40);

Set_LCD_REG(0x0003,0x0008);

DelayX1ms(40);

Set_LCD_REG(0x0004,0x0000);

DelayX1ms(40);

Set_LCD_REG(0x000e,0x2e19);

DelayX1ms(40);

Set_LCD_REG(0x000d,0x0212);

DelayX1ms(40);

}

2. CHIP-SET:是对显示的一些要求进行设置。如显示数据填入GRAM时的方向,在GRAM中设定显示的窗口(与PANEL的点阵相对应),设置显示数据填入GRAM时的首地址,显示时的扫描行数等项目。

示例:

void HX8303A_Chip_Set1(void)

{

Set_LCD_REG(0x0001,0x0313);

Set_LCD_REG(0x0002,0x0700);

Set_LCD_REG(0x0005,0x1010);

Set_LCD_REG(0x0006,0x0000);

Set_LCD_REG(0x000b,0x4008);

}

void HX8303A_Chip_Set2(void)

{

Set_LCD_REG(0x0021,0x9f02);

Set_LCD_REG(0x0011,0x0000);

Set_LCD_REG(0x0014,0x9f00);

Set_LCD_REG(0x0015,0x9f5d);

Set_LCD_REG(0x0016,0x8102);

Set_LCD_REG(0x0017,0x9f00);

}

3. GAMMA-SET:是设置V0,V1,…,V63这64级灰度电压的实际大小。它们一般是通过R30H,R31H,…,R3BH等以“3”开头的REGISTER来进行设置。这些数据比较难设置,我们一般是采用IC厂商提供的数据。

示例:

void HX8303A_Gamma_Set(void)

{

Set_LCD_REG(0x0030,0x0000);

Set_LCD_REG(0x0031,0x0605);

Set_LCD_REG(0x0032,0x0407);

Set_LCD_REG(0x0033,0x0200);

Set_LCD_REG(0x0034,0x0203);

Set_LCD_REG(0x0035,0x0707);

Set_LCD_REG(0x0036,0x0707);

Set_LCD_REG(0x0037,0x0300);

Set_LCD_REG(0x003A,0x0000);

Set_LCD_REG(0x003B,0x0000);

}

4. DISPLAY-ON:即开显示。DISPLAY-ON是有顺序的,它一般是对开显示这个REGISTER进行多次的设置。在DRIVER HX8303A中,开显示的REGISTER 是R07H。DISPLAY-ON时,某些步骤之间会有一段延时,这段延时也必须是足够长的。

示例:

void HX8303A_Display_On(void)

{

Set_LCD_REG(0x0007,0x0105);

DelayX1ms(40);

Set_LCD_REG(0x0007,0x0125);

Set_LCD_REG(0x0007,0x0127);

DelayX1ms(40);

Set_LCD_REG(0x0007,0x0137);

}