zoukankan      html  css  js  c++  java
  • s3c2440裸机-LCD编程(一、LCD硬件原理)

    1.LCD示意图

    下图是LCD示意图,里面的每个点就是一个像素点。

    它里面有一个电子枪,一边移动,一边发出各种颜色的光。用动态图表示如下:

    1. 电子枪是如何移动的?

       有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),电子枪就移动一个像素。
      
    2. 颜色如何确定?

       由连接LCD的三组线RGB三原色混合而成:R(Red)、G(Green)、B(Blue)确定。
      
    3. 电子枪如何得知应跳到下一行?

       有一条HSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到下一行,该信号叫做行同步信号。
      
    4. 电子枪如何得知应跳到原点?

       有一条VSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到原点,该信号叫做帧同步信号。
      
    5. RGB线上的数据从何而来?

       内存里面划分一块显存(FrameBuffer),里面存放了要显示的数据,LCD控制器从里面将数据读出来,通过RGB三组线传给电子枪,电子枪再依次打到显示屏上。
      
    6. 前面的信号由谁发给LCD?

       有S3C2440里面的LCD控制器来控制发出信号。
      

    2.LCD硬件原理图

    ①是时钟信号,每来一个CLK,电子枪就移动一个像素;

    ②是用来传输颜色数据;

    ③是垂直方向同步信号,FRAME(帧);

    ④是水平方向同步信号,LINE(行);

    ⑤LED+、LED-背光灯电源。

    ⑥TSYP、TSXP、TSYM、TSXM是触摸屏信号。(下一节会详细讲)

    ⑦VM接DE是数据使能

    3.LCD时序分析

    ①从一行最开始的像素开始分析,如上图标号①,DE信号开始有效,电子枪每次在CLK下降沿时从数据线Dn0-Dn7上得到数据(Dn0-Dn7上的数据来源于FrameBuffer,后面会讲),然后发射到显示屏上,然后移动到下一个位置。从1 st pixellast pixel,就这样从一行的最左边,一直移动到一行的最右边,完成了一行的显示,假设一行有x个pixel。可以看到每发送一个pixel,需要1个时钟周期(1/tc)。

    ②当打完一行的最后一个数据后,会收到Hsync行同步信号,那么电子枪会跳到下一行,如上图标号②,根据时序图,一个Hsync周期,也就是一行数据刷新时间th, 可以大致分为五部分组成:thp、thb、1/tc、thd、thf。

    thp:称为脉冲宽度,这个时间不能太短,太短电子枪可能识别不到。
    thb:电子枪正确识别到thp后,会从最右端移动最左端,这个移动的时间就是thb,称之为移动时间。
    thd:表示显示一行数据的时间
    thf:表示显示完最右像素,再过多久Hsync才来。
    

    ③同理,当电子枪移动到最后一行时,就会发送一个Vsync垂直同步信号,让电子枪移动回最上边。如上图标号③,根据时序图,一个Vsync周期,也就是一帧数据刷新时间tv, 可以大致分为:tvp、tvb、tvd、tvf。

    tvp:Vsync信号的脉冲宽度
    tvb:电子枪从最后一行移动到第一行的移动时间
    tvf:表示显示完最后一行像素,再过多久Vsync才来。
    

    假设一共有y行,那么LCD的分辨率就是x*y。

    下面是LCD显示配置示意图:

    从左往右看,可以看到Total width = HSYNC width + HBP + Active width + HFP。当发出一个HSYNC信号后,电子枪就会从最右边花费HBP时长移动到最左边,等到了最右边后,等待HFP时长后下一轮HSYNC信号才会发出。因此,HBP和HFP分别决定了左边和右边的黑框。

    HSYNC是行同步信号的脉冲宽度(低电平有效)
    HBP表示屏幕左边黑框的宽度(电子枪要花多久才能从最右边移动到最左边)
    Active width表示有效数据宽度
    HFP表示屏幕右边黑框的宽度(再过多久HSYNC才会发出)
    

    同理从上往下看,Total height = Vsync width + VBP + Active width + VFP。当发出一个VSYNC信号后,电子枪就会从最下边花费VBP时长移动到最上边,等到了最下边后,等待VFP时长后下一轮VSYNC信号才会发出。因此,VBP和VFP分别决定了上边和下边的黑框。 中间灰色区域才是有效显示区域。

    VSYNC是帧同步信号的脉冲宽度(低电平有效)
    VBP表示屏幕上边黑框的宽度(电子枪要花多久才能从最后一行移动到最上面一行)
    Active height表示有效数据高度
    HFP表示屏幕下边黑框的宽度(再过多久VSYNC才会发出)
    

    4.FrameBuffer和BPP

    FrameBuffer是在内存中的一段区域,这段区域专门用来存放颜色数据的。如下图:

    BPP(Bits Per Pixels)表示每个像素占据多少位。 前面的LCD引脚功能图里,有R0-R7、G0-G7、B0-B7,那么每个像素是占据3*8=24位的,
    所以硬件上LCD的BPP是确定的.

    那么在FrameBuffer中,每个像素在FrameBuffer中,占据多少位BPP(Bits Per Pixels)?

    虽然LCD上的引脚是固定的,但我们使用的时候,可以根据实际情况进行取舍,查看我们的硬件原理图,发现我们的LCD硬件上只有R1-R5、G0-G5、B1-B5与SOC相连,5+6+5=16BPP,所以每个像素就只占据16位数据。等效连接图如下:

    5.LCD种类

    S3C2440芯片手册介绍了LCD控制器支持TFT和STN两种LCD,我们常用的都是TFT材质的,本开发板采用的就是一款TFT材质的LCD.

    6.LCD访问框架

    如下图,LCD控制器从SDRAM中的FrameBuffer区域取出颜色数据,发送给电子枪,电子枪按照特定的时钟周期将颜色数据显示在LCD上。

  • 相关阅读:
    SupoSE 概述 Redmine
    tmux guake
    How to Install and Use Krugle Basic
    use webdevelop tools to delete domain specific cookies for ecommerical cps union effect
    执行hudson daemon的脚本
    python技巧26[python的egg包的安装和制作]
    HOWTO Modular Xorg
    ARC专题:再续 Xcode 4.2 中的Automatic Reference Counting (ARC)
    ARC专题:在Xcode 4.2中加入不支持ARC的源码
    Windows下的.NET+ Memcached安装
  • 原文地址:https://www.cnblogs.com/fuzidage/p/13152010.html
Copyright © 2011-2022 走看看