TFT_LCD(3.5")

作者:zhaojuncq

转自:http://blog.csdn.net/zhaojuncq/article/details/5516457


最近一段时间工作上一直在使用TFT LCD,主要是3.5寸LCD,以SAMSUNG的LTV350QV及其一些台湾的兼容产品为主。工作的内容就是把这些屏在我们的产品上应用起来,经过这一段时间后,发觉对TFT LCD的内部结构还是不怎么清楚,所以最近几天花了一些时间了解TFT LCD的结构以及工作原理,并整理下来加深自己的理解以及提供大家参考,这只是我自己的一些理解,错误的地方请大家多指正。
     首先,我们了解一些TFT LCD的结构,如下图所示,主要由偏振片、虑色器基板、液晶、TFT基板、片振片、背光源组成。在虑色器基板和TFT基板封入扭曲向列型液晶(TN),构成液晶盒,虑色器基板上制作有透明的公共电极,TFT基板上制作了矩阵式薄模晶体管,用来开光象素电极的电压信号,为了使液晶层保持一定的厚度,在两块玻璃基板中间放有透明隔垫(聚酯模片或玻璃小球)。

    TFT LCD电信号部件组成:主要由背光电路和显示电路组成。
    背光电路: 3.5寸TFT LCD背光,大都采用白光LED作为背光源,一般由6个串连的白光LED组成(如下图),驱动电压大概20V左右,20mA电流左右,是一个耗电量很大的部件。对于电池供电系统,大都采用升压型DC/DC进行驱动,很多厂家都有推出专门针对串连白光LED的驱动器。
    显示电路:显示电路一般由Timing Controller、Source Driver、Gate Driver组成。有的IC把Timing Controller和Source Driver集成在一起了,也有的IC把三个部分都集成了。这三部分电路一般都集成在TFT LCD模组里面了,也有的TFT LCD把Timing Controller IC放到外面了(如SHARP的一些LCD)。
    SAMSUNG LTV350QV LCD框图分析(如下图):LTV350QV的DRIVER IC是S6F2002,
S6F2002集成了Timing Controller、Source Driver、Gate Driver部分和电源管理部分,164RGB X 240驱动能力,所以对于320 X 240 QVGA的分辨率,需要两片S6F2002。两片S6F2002,一片作为主控制器,一片作为从控制器,正是由于LVT350QV是有两片DRIVER IC驱动的缘故,如果上电时序配合不好,很容易出现显示异常(一半显示不正常,一半显示正常)。
    一个台湾TFT LCD框图分析(如下图):它的驱动IC主要有两片,一片集成了Timing Controller和Source Driver,另外一片是Gate Driver。


    TFT LCD常用信号解释:
    LED_Cathode/LED_Anode:LCD背光电源供电
    M/POL:液晶驱动极性转换型号,用于产生VCOM信号
    RESET:全局复位信号
    CS/SCL/SDI:LCD TCON IC的配置端口
    DATA[0:23]:LCD RGB24BIT数据信号,一般我们使用16BIT,因为在人的肉眼观察下16BIT的色彩和24BIT的色彩没有太大区别,而16BIT所需处理的数据量比24BIT小很多,一般情况我们把剩余的地位数据线连接到高位。
    HSYNC:水平同步时钟信号
    VSYNC:垂直同步时钟信号
    DOTCLK:象素时钟信号
    VDD:数字电源,一般是3.3V
    AVDD:模拟电源,一般是5V
    VGL:GATE OFF控制电压
    VGH:GATE ON控制电压
    VCOM:LCD公共驱动电极
    ENABLE:data enable信号

    TFT电路驱动原理:由CPU通过LCD接口送来的视频信号及时钟经过TCON的时序转换,RGB数据经过D/A转换送到SOURCE端,同时TCON产生移位时钟信号驱动GATE端,选通一行,打开这一行的所有晶体管, SOURCE向液晶电容充电,液晶产生灰度并保持,通过GATE的移位,继续向下面行写入液晶图像,当整个行写完,又重新从第一行开始。

    如果一直显示静止的图像,液晶电极上的电压就会一直不变,当撤销电压时,液晶很难回复原状,容易造成液晶损坏。解决这问题的方法就是改变液晶的控制电压的极性,也就是说即使是静止的图像,液晶电极上的电压也一直在翻转。一般的LCD都采用行翻转的形式,通过改变公共端的电压极性VCOM而达到翻转的目的。TCON IC一般会送出一个M或者POL的信号,我们用这个信号产生VCOM,一般的转换电路使用非们或者运方电路。通过调节VCOM的DC端,我们可以改变LCD的色彩,调节AC端,可以改变LCD的对比度。也许是由于行翻转的缘故,有的LCD会产生水平的条纹(Flicker现象),LTV350QV不怎么明显,一般的台湾LCD比较明显。

    点屏心得:
    常用点屏步骤:
1、    确保数据、时钟、电源等连接正常。
2、    确保LCD的几组工作电源VDD/AVDD/VGL/VGH正常。
3、    LCD配置:有的LCD的TCON IC需要使用SPI接口进行配置。
       a)    配置的内容主要是时钟信号的极性、扫描方向等,还有一些TCON IC支持CCIR601/656/OSD功能等,主要根据实际情况配置。
       b)    GAMMA校正:一般根据LCD厂家提供的参数进行校正,以前调LTV350QV就是因为厂家给的GAMMA参数不正确,造成色彩显示不正常。
       c)    SPI时序:一般不同的LCD屏的SPI时序和寄存器都会有一些差别,我一般是根据时序图进行操作寄存器(如下图),通过写寄存器,只要LCD有反应了,表明SPI通讯基本没有什么问题了。

4、    时钟设置:
       a)    一般的LCD SPEC中都会给出关于时序的参数以及时序图,我们按照图中进行设置就可以了。如下图:我们就可以知道时钟频率、脉冲宽度、前扫、回扫等。

       通过如下图的画面我们就可以知道HSYNC和VSYNC时钟极性为负。

       通过下图我们就可以知道是上升沿锁存数据,下降沿改变数据了

       通过以上步骤LCD上面应该会出现美丽动人的画面了,有可能图像位置还会有一些偏差,不过没关系,看着屏幕的图像调节前扫、回扫进行左右上下移动就OK了。
       图像异常处理:
       图像颜色不正常:有可能时钟型号极性反,还有可能VCOM调节不正常。
       出现水波纹:确保电源VDD/AVDD/VGL/VGH纹波足够小,确保VCOM波形正确,VCOM电路端的电源稳定。
       上电出现白屏:一般TFT LCD对上电要求都比较严格,需要按照LCD SPEC中时序上电,如下图。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include<AT89X52.h> #include <intrins.h> #define unchar unsigned char #define key_press 2 #define key_ok 1 #define key_nopress 0 unchar res_col; unchar res_row; unchar input; unchar keystate; unchar keynum; unchar scanrdy, clr,m, l; unchar datas[4]; sbit test=P2^7 ; // sbit tf=P3^3; // sbit sav_clk=P3^2; unchar led_cathode; void scan_keyboard(){ //10ms执行一次扫描 input= 0xff;//输入键值初始值为ff; P1=0x70;//p1.0-p1.6键盘线 ,设置行输出0, res_col=P1&0x70; //比较结果为0则为无按键按下 if(res_col!=0x70){ //如果有列线电平被拉低 P1=0x0f;//设置列输出0 res_row=P1&0x0f; if(res_row!=0x0f) //如果有行线电平被拉低 input= res_row|res_col; //有效输入为行列相或 } switch (keystate){ //进入状态机!!!!!!!!!!!! case key_press : if(input==0xff)keystate=key_nopress; else { switch (input){ //按键成功后的输出处理过程! case 0x6e: keynum=0x06;break; //(0,0)键值为1 case 0x5e: keynum=0x5b;break; //(0,1)键值为2 case 0x3e: keynum=0x4f;break; //(0,2)键值为3 case 0x6d: keynum=0x66;break; //(1,0)键值为4 case 0x5d: keynum=0x6d;break; //(1,1)键值为5 case 0x3d: keynum=0x7d;break; //(1,2)键值为6 case 0x6b: keynum=0x07;break; //(2,0)键值为7 case 0x5b: keynum=0x7f;break; //(2,1)键值为8 case 0x3b: keynum=0x6f;break;//(2,2)键值为9 case 0x67: keynum=0x3f;break; //(3,0)键值为0 case 0x57: clr=1; break; //(3,1)键为清0复位 /* switch(input){ case 0x6e: keynum=0x3f;break; //(0,0)键值为a case 0x12: keynum=0x4f;break; //(0,1)键值为b case 0x13: keynum=0x5f;break; case 0x14: keynum=3;break; case 0xe1: keynum=4;break; case 0xe2: keynum=5;break; case 0xe3: keynum=6;break; case 0xe4: keynum=7;break; case 0xe5: keynum=8;break; case 0xe6: keynum=9;break; case 0xe7: keynum=0;break; } //default :keynum=0x00; */ } if(l!=4){ datas[l]=keynum; l++; if(l-1==1){ m=datas[1]; datas[1]=datas[0]; datas[0]=m; } if(l-1==2){ m=datas[2]; datas[2]=datas[1]; datas[1]=m; m=datas[0]; datas[0]=datas[1]; datas[1]=m; } if(l-1==3){ m=datas[2]; datas[2]=datas[3]; datas[3]=m; m=datas[2]; datas[2]=datas[1]; datas[1]=m; m=datas[0]; datas[0]=datas[1]; datas[1]=m; } } keystate=key_ok; } break; case key_ok : if(input==0xff)keystate=key_nopress; break; case key_nopress : if(input!=0xff)keystate=key_press; break; } scanrdy=0; } void delay(){ unchar i=254; for(;i>0;i--); } void display(){ //显示子程序!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! unchar t,n; led_cathode=0xfe; if(clr==1) { //清0键处理 clr=0; l=0; for(n=0;n<4;n++){ datas[n]=0x00; } datas[0]=0x3f; } for(t=0;t<=l;t++){ SBUF=datas[t] ; while(TI==1); P0=led_cathode; led_cathode=led_cathode<<1|0x01; delay(); } } void init_function(){ EA=1; ET0 =1; TMOD=0x01; TH0=0xd8; TL0=0xf0;//赋予定时器初值th0,tl0,10ms延时 IT0 =1; //边沿触发模式 TR0 =1; SCON=0x00;//设置串行通信方式0;且发送完毕中断ti也置为0; ES=1; keystate=0; clr=0; l=0; datas[0]=0x3f; } main(){ init_function(); while(1){ while(scanrdy==0) ; scan_keyboard(); display(); } } void scan_begin(void) interrupt 1 { scanrdy=1; TH0=0xd8; TL0=0xf0; } void sendover(void) interrupt 4 { TI=0; sav_clk=0; _nop_(); sav_clk=1; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值