s3c2440裸机-LCD编程-1-LCD硬件原理

发布者:闪耀的星空最新更新时间:2024-07-04 来源: elecfans关键字:LCD编程  LCD硬件 手机看文章 扫描二维码
随时随地手机看文章

1.LCD示意图

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



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

动图封面

电子枪是如何移动的?

有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),电子枪就移动一个像素。


颜色如何确定?

由连接LCD的三组线RGB三原色混合而成:R(Red)、G(Green)、B(Blue)确定。


电子枪如何得知应跳到下一行?

有一条HSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到下一行,该信号叫做行同步信号。


电子枪如何得知应跳到原点?

有一条VSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到原点,该信号叫做帧同步信号。


RGB线上的数据从何而来?

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


前面的信号由谁发给LCD?

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

2.LCD硬件原理图



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

②是用来传输颜色数据;

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

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

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

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

⑦VM接DE是数据使能 RGB LCD的模式: HV模式: HS与VS来控制刷新。比如对于分辨率为1024x600RGB的LCD,LCD控制器发出HS信号后,就会发出1024个DCLK,在每个DCLK上传输像素数据;当发出600个HS信号后,就会发出一个VS信号 DE模式:DE信号来控制刷新,比如对于分辨率为1024x600RGB的LCD,LCD控制器发出DE信号后,就要发出1024个DCLK,在每个DCLK上传输像素数据;当发出600个DE信号,刷新完一帧数据

3.LCD时序分析


image


①从一行最开始的像素开始分析,如上图标号①,DE信号开始有效,电子枪每次在CLK下降沿时从数据线Dn0-Dn7上得到数据(Dn0-Dn7上的数据来源于FrameBuffer,后面会讲),然后发射到显示屏上,然后移动到下一个位置。从1 st pixel到last 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表示有效数据高度
VFP表示屏幕下边黑框的宽度(再过多久VSYNC才会发出) 帧前肩

总结: 行时序:

HSPW:有些地方也叫做 thp,是 HSYNC 信号宽度,也就是 HSYNC 信号持续时间。HSYNC信号不是一个脉冲,而是需要持续一段时间才是有效的,单位为 CLK。

HOZVAL:有些地方叫做 thd,显示一行数据所需的时间,假如屏幕分辨率为 1024*600,那么 HOZVAL 就是 1024,单位为 CLK。

帧时序:

VSPW:有些地方也叫做 tvp,是 VSYNC 信号宽度,也就是 VSYNC 信号持续时间,单位为 1 行的时间

LINE:有些地方叫做 tvd,显示一帧有效数据所需的时间,假如屏幕分辨率为 1024*600,那么 LINE 就是 600 行的时间。

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上。


关键字:LCD编程  LCD硬件 引用地址:s3c2440裸机-LCD编程-1-LCD硬件原理

上一篇:s3c2440裸机-LCD编程-3-框架准备和LCD初始化
下一篇:s3c2440裸机-I2c编程-4-i2c中断服务程序

推荐阅读最新更新时间:2024-11-09 09:27

s3c2440裸机-LCD编程(二、LCD控制器)
1.LCD控制器框图 从上图看出,S3C2440 LCD控制器用于传输视频数据并且生成必要的控制信号,如VFRAME,VLINE,VCLK,VM等。除了控制信号,S3C2440还有视频数据端口,即VD 。通过设置REGBANK(寄存器组),LCDCDMA会自动(无需CPU参与)把内存上FrameBuffer里的数据,通过VIDPRCS发送到引脚VD 数据总线上,再配合VIDEOMUX引脚的控制信号,正确的显示出来。 REGBANK:具有17个可编程寄存器组和256x16调色板存储器,用于配置LCD控制器。 TIMEGEN:产生控制信号,例如 VSYNC、HSYNC、VCLK等信号 LCDCDMA:可以自动从FrameBuff中
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-<font color='red'>LCD</font><font color='red'>编程</font>(二、<font color='red'>LCD</font>控制器)
s3c2440裸机-电阻触摸屏-7-触摸屏校准测试及优化
1,防止点击一个点,显示出5个点 Isr_Adc中同理也许要上报数据。 这里在touchscreen.c中还补充了上报压力值,当isr_adc上报data时,同时上报了压力值, 这样在ts_read_raw时能够读到压力值讯息。 分析下面这个函数: 当用户点击校准点A时,进入isr_Tc(), 检测到按下,启动adc,adc转换结束产生adc中断,进入isr_adc。然后adc上报坐标和压力值数据。 补充了rs_read_raw时,只有当松开时,也就是read raw读出来的压力值=0的时候才会返回数据。最上面的do while (pressure == 0)是为了过滤掉上一次松开后,下一次还没来得及点击就
[单片机]
s3c2440裸机-LCD编程-2-LCD控制器
1.LCD控制器框图 从上图看出,S3C2440 LCD控制器用于传输视频数据并且生成必要的控制信号,如VFRAME,VLINE,VCLK,VM等。除了控制信号,S3C2440还有视频数据端口,即VD 。通过设置REGBANK(寄存器组),LCDCDMA会自动(无需CPU参与)把内存上FrameBuffer里的数据,通过VIDPRCS发送到引脚VD 数据总线上,再配合VIDEOMUX引脚的控制信号,正确的显示出来。 REGBANK:具有17个可编程寄存器组和256x16调色板存储器,用于配置LCD控制器。 TIMEGEN:产生控制信号,例如 VSYNC、HSYNC、VCLK等信号 LCDCDMA:可以自动从FrameBu
[单片机]
s3c2440裸机-电阻触摸屏编程(3.触摸屏TSC的初始化和中断服务程序框架)
1. ADC中断产生流程 中断源: 这里是ADC和TSC共用一个中断源。 SRCPND表示哪个中断源产生了中断请求。 INTMODE:配置中断模式 配置中断屏蔽寄存器 中断挂起寄存器(用来显示当前优先级最高的、正在发生的中断, 需要清除对应位) 从SRCPND寄存器可以读到ADC和TSC复用的同一个中断源,那么如何区分呢? 可以从SUBSRCPND寄存器配置,如下: 当bit 9被置1时,表示TSC中断。那么我们需要打开subsrcmask寄存器 所以TSC中断的产生流程如下: 2. TSC编程实现   ①初始化TSC,ADCTSC寄存器   ②设定TSC处于“等待中断模式”
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-电阻触摸屏<font color='red'>编程</font>(3.触摸屏TSC的初始化和中断服务程序框架)
s3c2440裸机-Norflash2-适配访问时序
前面我们了解了norFlash的特性和原理,那么cpu是如何和nor进行通信的呢?下面开始详细介绍。 1.内存控制器适配norflash 如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部norflash的性能进行配置,这里先列出时间参数的含义: Tacs: Address set-up time before nGCSn(表示地址信号A发出多久后才能发出nGCS片选) Tcos: Chip selection set-up time before nOE(表示片选信号nGCS发出多久后才能发出读使能信号) Tacc:access cycle(数据访问周期) Tacp:page模式下的访问
[单片机]
s3c2440裸机之中断向量的写法(二)
先说明一下LDR伪指令。 LDR伪指令将一个32位的常数或者一个地址值读取到寄存器中。 语法格式 LDR{cond} register,={expr|label-expr} 其中的符号及参数说明如下: ●cond为可选的指令执行条件。 ●register为目标寄存器。 ●expr为32位的常量,编译器将根据expr的取值情况,处理LDR伪指令如下。 ●当expr表示的地址值没有超过MOV或MVN指令中地址的取值范围时,编译器使用合适的MOV或者MVN指令替代该LDR伪指令。 ●当expr表示的地址超过了MOV或MVN指令中地址的取值范围时,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。 ●label-e
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved