LCD基础知识

http://liu1227787871.blog.163.com/blog/static/2053631972012510608298/

一、显示屏上数据的组织格式


一幅图像称为一帧,每帧由多行组成,每行由多个像素组成,每个像素的颜色使用若干位的数据来表示。

显示器从屏幕的左上方开始,一行一行地取得每个像素的数据并显示出来啊,当显示到一行的最右边时,跳到下一行的最左边开始显示下一行;当显示完所有行之后,跳到左上方开始下一帧。这些跳转由信号来控制,HSYNC表示是跳到最左边的时候了,VSYNC表示是跳到最上边的时候了。

在工作中的显示器上,可以在四周看见黑色的边框。上方的黑框是因为发出VSYNC信号时,需要经过若干行后才出现第一行有效数据;下方的黑框是因为显示器还没扫描到最下边(VSYNC信号还没有发出),这时信号已经无效;左边的黑框是因为当发出HSYNC信号时,需要经过若干个像素之后才出现第一列有效数据;右边的黑框是因为,显示完一行数据时,显示器还没有发出扫描到最右边(HSYNC信号还没有发出),这时数据已经无效。显示器只会依据VSYNC、HSYNC信号来取得、显示数据,并不会理会这些数据是否有效,合适发出有效数据由显卡决定。

二、LCD控制器的特性与结构

s3c2440 LCD控制器提供了驱动STN LCD、TFT LCD所需的所有信号,其内部结构如下图所示:

LCD基础知识 - 小白 - 小白的博客
REGBANK是LCD控制器的寄存器组,含17个寄存器及一块256*16的调色板内存,用来设置各项参数。而LCDCDMA则是LCD控制器专用的DMA通道,可以自动地从系统总线上取得图像数据,这使得显示图像时不需要CPU的干涉。VIDPRCS将LCDCDMA中的数据组合成特定的格式(比如4位单扫、4位双扫、8位单扫等),然后从VD[23:0]发送给LCD屏幕,同时TIMEGEN和LPC3600负责产生LCD屏所需要的控制时序,例如VSYNC、HSYNC、VCLK、VDEN,然后从VIDEO MUX送给LCD屏。其中LPC3600专用于SEC TFT LCD。

LCDCDMA中有两个FIFO:FIFOH容量为16个字(1个字是4个字节),FIFOL容量为12个字。当使用双扫方式时,FIFOH、FIFOL分别用于传输上半屏数据、下半屏数据;当使用单扫模式时,只用到FIFOH。当FIFO为空或者其中的数据已经减少到设定的阀值时,LCDCDMA自动地发起DMA传输从内存中获得图像数据。

三、TFT LCD的操作

先了解TFT LCD的时序,这使得我们在设置各个寄存器时有个形象的概念,每个VSYNC信号表示一帧数据的开始,每个HSYNC信号表示一行数据的开始,无论这些数据是否有效,每个VCLK信号表示正在传输一个像素的数据,无论它是否有效。数据是否有效只是对CPU的LCD控制器来说的,LCD根据VSYNC、HSYNC、VCLK不停地读取、显示总线数据。

1、时序分析
LCD基础知识 - 小白 - 小白的博客

(1)VSYNC信号有效时,表示一帧数据的开始
(2)VSPW表示VSYNC信号的脉冲宽度为(VSPW+1)个HSYNC信号周期,即(VSPW+1)行,这(VSPW+1)行的数据无效。
(3)VSYNC信号脉冲之后,还要经过(VBPD+1)个HSYNC信号周期,有效的行数据才出现。所以,在VSYNC信号有效后要经过(VSPW+1+VBPD+1)个无效的行,第一个有效行才出现,对应上边框。
(4)随后即连续发出(LINEVAL+1)行的有效数据。
(5)最后是(VFPD+1)个无效的行,它对应下边框,完整的一帧结束,紧接着就是下一帧数据了。

下面我们深入到一行中像素数据的传输过程,它与上面行数据的传输相似:
(1)HSYNC信号有效时,表示一行数据的开始
(2)HSPW表示HSYNC信号的脉冲宽度为(HSPW+1)个VCLK信号周期,即(HSPW+1)个像素,这(HSPW+1)个像素的数据无效。
(3)HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现。所以,在HSYNC有效之后,总共要经过(HSPW+1+HBPD+1)个无效的像素,它对应左边框,第一个有效的像素才出现。
(4)随后即连续发出(HOZVAL+1)个像素的有效数据。
(5)最后是(HFPD+1)个无效的像素,它对应右边框,完整的一行结束,紧接着就是下一行的数据了。

2、图像数据在内存中的存储

LCD控制器可以支持单色(1BPP)、4级灰度(2BPP)、16级灰度(4BPP)、256色(8BPP)的调色板显示模式,支持16K(16BPP)和16M(24BPP非调色板显示模式。下面只介绍256色(8BPP)、64K(16BPP)和16M(M()24BPP)色显示模式下,图像数据存储格式。
(1)16M(24BPP)色
16M(24BPP)色显示模式就是使用24位的数据来表示一个像素的颜色,每种颜色使用8位。LCD控制器从内存中获得某个像素的24位颜色值后,直接通过VD[23:0]数据线发送给LCD。为了方便DMA传输,在内存中使用4个字节(32位)来表示一个数据,其中的3个字节从高到低分别表示红绿蓝,剩余的1个字节数据无效。是低字节还是高字节无效,是可以选择的,如下图:

LCD基础知识 - 小白 - 小白的博客

(2)64K(16BPP)色
64K(16BPP)色的显示模式就是16位的数据来表示一个像素的颜色。这16位数据的格式又分为2种:5:6:5、5:5:5:1,前者使用高5位来表示红色,中间的6位来表示绿色,低5位来表示蓝色;后者的高15位从高到低分成3个5位来表示红色、绿色、蓝色,最低位表示透明度。5:5:5:1的格式也被称为RGBA格式(A表示透明度)。
一个4字节可以可以表示两个16BPP的像素,使用高2字节还是低2字节来表示第一个像素也是可选的。

  LCD基础知识 - 小白 - 小白的博客

注意在5:5:5:1模式下,18、10、2位上的值是一样的,表示透明度。

(3)256色(8BPP)
256色(8BPP)的显示模式就是使用8位的数据来表示一个像素的颜色,但是对三种原色平均下来,每个原色只能使用不到3位的数据来表示,即每个原色最多不过8个级别,这不足以表示更丰富的颜色。
为了解决8BPP模式显示能力太弱的问题,需要使用调色板(Palette)。每个像素对应的8位数据不再用来表示RGB三种原色,而是表示他们在调色板中的索引值:要显示这个像素时,使用这个索引值从调色板中取得其RGB颜色值。所谓调色板就是一块内存,可以对每个索引值设置其颜色,可以使用24BPP或16BPP。在s3c2440中,调色板就是一块256*16的内存,使用16BPP的格式来表示256色(8BPP)显示模式下各个索引值的颜色。这样即使使用256色(8BPP)的显示模式,最终出现在LCD数据总线上的仍是16BPP的数据。
一个4字节可以表示4个8BPP的像素,字节与像素的对应顺序是可以选择的,如下图所示:
LCD基础知识 - 小白 - 小白的博客
调色板中数据存放的格式与上面所描述的16BPP显示模式相似,也分为两种格式:5:6:5、5:5:5:1。调色板中数据的格式及与LCD数据线VD[23:0]的对应关系,如下所示:
LCD基础知识 - 小白 - 小白的博客

各个模式下用来传输红、绿、蓝三种原色的颜色值的VD数据线如下表示所示:
LCD基础知识 - 小白 - 小白的博客
 没有用到的数据线其电平为0,从这个观点来看,无论是24BPP模式还是16BPP、8BPP模式,24根数据线VD[23:0]都被用到了。事实上,一个TFT LCD能处理的像素位宽是固定的,即它数据线的数目是固定的,红、绿、蓝3类信号线总是连接到各字节中的高位;软件设置24BPP、16BPP、8BPP以及调色板等,只会影响到色值的精度。

四、使用TFT LCD时LCD控制器的寄存器简介

 LCDCON1~LCDCON5 用于选择LCD类型、设置各种控制信号的时间  特  性
 LCDSADDR1~LCDSADDR3 用来设置帧内存地址
 TPAL 临时调色板寄存器,可以快速地输出一帧单色的  图像
 LCDINTPND、LCDSRCPND、LCDINTMSK 用于LCD的中断,在一般应用中无需中断
 REDLUT、GREENLUT、BLUELUT、DITHMODE专用于STNLCK
 TCONSEL   专用于SEC TFT LCD

对于TFT LCD,一般情况下只需要设置前两种寄存器;在8BPP模式下,如果想快速地输出一帧的单色的图像,可以借助于TPAL寄存器

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值