嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

主要介绍LCD显示的基本原理,涉及像素、分辨率、颜色模型、RGB888等格式、Framebuffer、8080接口、RGB接口。

参考资料:嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

1.LCD显示出图片的基本原理

LCD作为显示器,它的显示原理和图片是一样的。

图片可以看作由一个一个点(即像素pixel)组成。每行有xres个像素,有yres行,则这个图片的分辨率(resolution)是:xres * yres。

同理,LCD屏幕也是由一个个像素点组成,若要显示一张相同分辨率的图片即把LCD上和图片对应位置的像素修改成同样的颜色。

我们现在的目标变成了修改LCD上一个点的颜色。怎么表示颜色?肯定是发数据给LCD,所以问题变成数据和颜色之间是什么关系?

2.颜色基本知识

颜色有很多颜色模型,这方面我不是专业的,但是只需要知道,颜色模型相当于用不同的格式来描述一个颜色。常见的有RGB、YUV、HSV、HSI等。最常用的为RGB,我们从RGB入手。

RGB模型用红绿蓝三原色来描述一个颜色,所有颜色都是红绿蓝混合而成。

所以你可以认为一个像素点上包含了RGB三种数据。三个数据合一即一个像素点上的数据。这个数据是多少位的?这就出现了一个概念:bpp(bits per pixel),每个像素用多少位来表示。

可以用24位数据来表示红绿蓝,也可以用16位(还有其他),比如:

24bpp:RGB888实际上会用到32位,其中8位未使用,其余24位中分别用8位表示红(R)、绿(G)、蓝(B)

16bpp:有RGB565RGB555

    • RGB565:用5位表示红、6位表示绿、5位表示蓝

    • RGB555:16位数据中用5位表示红、5位表示绿、5位表示蓝,浪费一位

现在知道了数据和颜色之间的关系,数据如何到像素上?

3.Framebuffer和LCD控制器

前面已知,让LCD显示图片,就是修改LCD上的每一个像素。全部LCD像素数据合起来存储的地方(也不一定是全部,总之就是存储了数据)叫做Framebuffer,frame为帧,一幅图片可叫做一帧,buffer为缓存。

LCD控制器(LCD Controller)从Framebuffer中取出数据,修改LCD。

所以要驱动LCD有一个工作就是设置LCD控制器。先不讲怎么设置,假设我们会设置了。

4.两大类LCD

Framebuffer可以在LCD内,也可以在外部,这就使得LCD分成了两大类。

一类适用于性能弱的单片机如stm32f1、51,称为LCD模组(LCM)

它集成了Framebuffer,LCD控制器,LCD屏幕

一类适用于性能强的MPU\SOC如S3C2440、IMX6ULL,它只有LCD屏幕,LCD控制器在SOC内,Framebuffer可能是外接的内存。

显然,构造不一样,LCD和芯片之间接口肯定不一样,LCM和单片机通信的接口一般为8080接口。LCD屏幕和SOC通信的接口一般为RGB接口

5.LCD接口

介绍两种常用的接口

5.18080接口

对于LCM的接口8080非常简单,就和内存差不多。

需要读数据,所以有一个读信号RD

需要写数据,所以有一个写信号WR

需要分辨这个模组和其他东西,所以有一个片选信号CS

需要传输数据,需要数据线DB0-DB15

需要分辨传输的地址,所以需要地址线,但是地址线和数据线共用,通过RS信号来分辨DB0-DB15上传输的是地址还是数据。

5.2RGB接口

RGB接口即LCD控制器和LCD屏幕之间的接口。可以把原理认为是LCD控制器去一个一个修改像素。

修改了一个像素后需要知道什么时候切换下一个像素,所以有点时钟信号DCLK;

需要知道什么时候改完了一行像素(因为要到下一行去),所以有水平方向同步信号HSYNC(Horizontal Synchronization);

需要知道什么时候全部改完(因为改完要回到第一个位置),所以有垂直方向同步信号VSYNC(Vertical Synchronization);

需要有数据,所以有RGB三组线;

在切换的时候(切换到下一行,切换到首位置)时数据无效,所有需要数据使能信号DE。

看似比较复杂,其实也就是设置LCD控制器。

到这我们就明白了,无论是哪一类的LCD,我们需要做的工作是,设置LCD控制器,准备数据。根据不同LCD有不同的驱动方式和数据格式,得根据LCD的手册来确定,在今后的文章中将给出具体例子。

最后附上所有知识点思维导图

更多内容与 参考资料:嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值