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);
}