第十七课(1)LCD硬件原理

本文深入解析LCD显示原理,包括电子枪如何根据时钟、颜色信号及同步信号移动和发射颜色,形成图像。介绍了LCD控制器如何从内存的显存中读取数据,并通过RGB线传递给显示屏。同时,阐述了程序设计思路,包括设置LCD控制器寄存器、配置FrameBuffer及其与LCD控制器的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、LCD的接线

LCD上每一个点是一个像素。
电子枪一边移动,一边发出颜色。
电子枪如何移动?
clk时钟线与LCD相连,每来1个clk,移动1个像素

如何发出颜色?
R、G、B三组信号线连接LCD确定颜色

电子枪移动一行后,怎么知道要换行了?
LCD接有HSYNC (水平同步信号 ),当接收到HSYN脉冲就跳行。

电子枪移动到最后一行的最后一个点后,怎么知道要移动到原点?
LCD接有VSYNC(垂直同步信号 ),当接收到VSYN脉冲就移动到原点。

前面的信号由谁发给LCD?
由S3C2440里面的LCD控制器来控制发出信号。

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

在这里插入图片描述
从原理图上验证下上面的知识:
在这里插入图片描述
从LCD芯片手册看LCD引脚功能图更直观:2.1. TFT LCD Panel Driving Section
VCLK是时钟信号,每来一个CLK,电子枪就移动一个像素;
R0-R7、G0-G7、B0-B7是用来传输颜色数据;
VFRAME是垂直方向同步信号,FRAME(帧);
VLINE是水平方向同步信号,LINE(行)。

每个像素再FrameBuffer中,占据多少位BPP(Bits Per Pixels)?
从LCD引脚功能图里,R0-R7、G0-G7、B0-B7,每个像素是占据3*8=24位的,即硬件上LCD的BPP是确定的。
虽然LCD上的引脚是固定的,但我们使用的时候,可以根据实际情况进行取舍,比如我们的JZ2440使用的是16BPP,因此LCD只需要R1-R5、G0-G5、B1-B5与SOC相连,5+6+6=16BPP,其他引脚接地。每个像素就只占据16位数据。

2、LCD的时序

那么LCD怎么配合这些信号呢,参考JZ2440_4.3寸LCD手册_AT043TN24的时序如下:
从最小的像素开始分析,电子枪每次在CLK下降沿(本开发板是下降沿)从数据线Dn0-Dn7上得到数据,发射到显示屏上,然后移动到下一个位置。Dn0-Dn7上的数据来源就是前面介绍的FrameBuffer。就这样从一行的最左边,一直移动到一行的最右边,完成了一行的显示,假设为x。

当打完一行的最后一个数据后,就会收到Hsync行同步信号,根据时序图,一个Hsync周期可以大致分为五部分组成:thp、thb、1/tc、thd、thf。thp称为脉冲宽度,这个时间不能太短,太短电子枪可能识别不到。电子枪正确识别到thp后,会从最右端移动最左端,这个移动的时间就是thb,称之为移动时间。thf表示显示完最右像素,再过多久Hsync才来。

同理,当电子枪一行一行的从上面移动到最下面时,Vsync垂直同步信号就让电子枪移动回最上边。Vsync中的tvp是脉冲宽度,tvb是移动时间,tvf表示显示完最下一行像素,再过多久Vsync才来。
假设一共有y行,则LCD的分辨率就是x*y。

关于显示原理,可以参考这篇博 http://www.cnblogs.com/shangdawei/p/4760933.html
里面有一个LCD显示配置示意图如下:
在这里插入图片描述
当发出一个HSYNC信号后,电子枪就会从最右边花费HBP时长移动到最左边,等到了最右边后,等待HFP时长HSYNC信号才回来。因此,HBP和HFP分别决定了左边和右边的黑框。

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

3、我们写程序的思路如下:

查看LCD芯片手册,查看相关的时间参数、分辨率、引脚极性;
根据以上信息设置LCD控制器寄存器,让其发出正确信号;
在内存里面分配一个FrameBuffer,在里面用若干位表示一个像素,再把首地址告诉LCD控制器;

之后LCD控制器就能周而复始取出FrameBuffer里面的像素数据,配合其它控制信号,发送给电子枪,电子枪再让在LCD上显示出来。以后我们想显示图像,只需要编写程序向FrameBuffer填入相应数据即可,硬件会自动的完成显示操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值