TFT 屏驱动分析,时序分析,以LQ104V1DG51为例。

2020-01-25 15:23发布

总结了许多网友的发言:

1。TFT 屏不能用AVR单片机直接驱动,基本上是这样,但也有看到例外。只是不太适合

2。建议用CPLD  FPGA  或者DSP做驱动。但是用CPLD做最经济,网上有用EPM3128+RAM做的

3。参考了SHARP的LQ104V1DG51的屏分析TFT驱动时序



LQ104V1DG51资料

点击此处打开armok01154042.pdf



LQ104V1DG51引脚描述





CK       点时钟

Hsync    行同步信号

Vsync    帧同步信号

ENAB     不好翻译,反正是显示的使能信号,不能固定接高电平

R/L      以下的两个不考虑,作用是设置屏幕的方向,可以固定为一电平。

U/D      可以通过程序控制,使屏幕上下左右对调。





TFT驱动要不断有点时钟驱动,它的每一个点的信息是24bit(三种颜 {MOD}),每一种颜 {MOD}信息需要8bit容量,这样就有256*256*256的颜 {MOD}。TFT需要从第一行的第一点开始,不停的对每一点的进行刷新,刷新的顺序是,第一行的第一点,第一行的最后一点,然后是第2行。。。。。这样 一直到最后一行的最后一点。所以如果是320*240的屏幕,每一屏幕(每一帧)就需要刷新320*240个点。

刷新每一行需要有Hsync   来进行同步

刷新每一屏需要有Vsync   来进行同步

所以如果是320*240的屏幕,那么刷新每一屏幕(每一帧),就需要240个Hsync信号,但是只需要一个Vsync  ,每次Vsync 来,下一个刷新的点就是屏幕的第一个刷新的点。



一般TFT的刷新频率为60HZ.从datasheet上的数据可以计算,刚好的59.9***HZ



这个TFT驱动的时序图

实际上并不是每个点时钟就刷新一个点,很多的点时钟都是没有用的。

从datasheet上的数据显示,详细见下面的“时序特性图”



仔细看图,每次Hsyns来一个负脉冲,经过THe的时间,ENAB需要设置高电平,(LQ104V1DG51是640*480的屏幕)这以后的640个点时钟的下降沿锁存数据。数据则是颜 {MOD}信息。640个点完成之后的数据都无效,直到下一个Hsyns的来临。所以见“时序特性图”,TH的时间(每一行的点时钟数典型值是800CLK,并不是640).



在看Vsync,其实也并不是每一帧有480个Hsyns,实际上要多一些,见“时序特性图”,典型值是525个Hsyns,时序特性图中所要的典型时钟为25.18MHZ,那么刷新频率是25.18*10e6 /525/800=59.95HZ,



现在你明白了吗?(未经过实践证实)如有什么理解错误的地方请指正,谢谢。

verilog HDL学的不精,程序未写。请高手赐教。







这个是时序特性图









-----此内容被ilan2003于2007-05-13,23:02:07编辑过


-----此内容被ilan2003于2007-05-13,23:03:27编辑过
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
97条回答
apple888882000
1楼-- · 2020-01-28 15:50
好象用AVR这种低速度来驱动真彩大屏幕TFT没什么意义,用CPLD+RAM的成本也不算一下,有这钱,换块自带驱动的ARM不就可以了,用AVR干什么呢?

除非是特殊应用,而且就AVR这种速度,显示东西能快到哪里去了,还是找点小屏并口/串口的手机TFT/STN屏/OLED可能还有点用。
joylight
2楼-- · 2020-01-28 18:40
Embedtech
3楼-- · 2020-01-28 21:41
三星的这个LCD最麻烦的地方在电源部分,而且现在3.5寸TFT-LCD太麻烦,因为即使ARM带了LCD控制器,还需要在LCD和ARM之间增加一个驱动IC,成本增加,SHARP的LQ035Q7DH/DB系列也是这样的.
zsmbj
4楼-- · 2020-01-28 23:41
 精彩回答 2  元偷偷看……
ilan2003
5楼-- · 2020-01-29 04:34
恩 其实我发贴子的目的并不是 要用AVR来驱动,我只是和大家探讨下TFT驱动的原理和时序。800*600的屏用AVR带控制器来控制,清一屏需要好长时间
LuoPan1977
6楼-- · 2020-01-29 05:00
请问各位朋友有无做过S3C2410对NEC LCD NL2432HC22-22A.PDF这个屏的驱动的?

下面的参数需要怎样修改呢?除了这几个参数之外其它的参数需要修改吗?

// LCD register value...   
#define LCD_XSIZE_TFT_USER      (640)       
#define LCD_YSIZE_TFT_USER      (480)

#define HOZVAL_TFT          (LCD_XSIZE_TFT_USER-1)
#define LINEVAL_TFT         (LCD_YSIZE_TFT_USER-1)

#define MVAL                (13)
#define MVAL_USED           (0)

//TFT timing parameter for V16C6448AB(PRIME VIEW)
#define VBPD                ((33-1)&0xff)
#define VFPD                ((10-1)&0xff)
#define VSPW                ((2-1) &0x3f)

#define HBPD                ((48-1)&0x7f)
#define HFPD                ((16-1)&0xff)
#define HSPW                ((96-1)&0xff)

#endif // __S3C2410_LCD_H__.

当我修改成下面的参数时,显示的图像行的相位不对,整个图像朝右偏,左边是一条大约1.2厘米的竖黑线,怎样解决呢?
请哪位高手解决一下,先谢谢!

#define MVAL                (13)
#define MVAL_USED         (0)

//Timing parameter for LTS350Q1(SAMSUNG)
#define VBPD_240320                ((2-1)&0xff)
#define VFPD_240320                ((3)&0xff)
#define VSPW_240320                ((2) &0x3f)
#define HBPD_240320                ((12)&0x7f)
#define HFPD_240320                ((12)&0xff)
#define HSPW_240320                ((30)&0xff)

//TFT240320
#define HOZVAL_TFT_240320        (LCD_XSIZE_TFT_240320-1)
#define LINEVAL_TFT_240320        (LCD_YSIZE_TFT_240320-1)
//TFT 240320
#define LCD_XSIZE_TFT_240320         (240)       
#define LCD_YSIZE_TFT_240320         (320)

一周热门 更多>