发布时间:2025-12-09 21:12:18 浏览次数:3
(1) LCD(Liquid Crystal Display) 俗称液晶。
(2) 液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下,液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶面板后面用白光照(称为背光),可以通过不同的电信号,让液晶分子进行选择性的透光,此时在液晶面板前面看到的就是各种各样不同的颜色,这就是 LCD 显示。
(3) 被动发光和主动发光。有些显示器(譬如 LED 显示器、CRT 显示器)自己本身会发光,称为主动发光;有些(LCD)本身不会发光,只会透光,需要背光的协助才能看起来是发光的,称为被动发光。
(4) 液晶应用领域:电视机、电脑显示屏、手机显示屏、工业显示屏等····
(1) CRT:阴极摄像管显示器。
(2) 等离子显示:未成为主流。
(3) OLED:目前未成为主流,但是很有市场潜力。
(4) LED:主要用在户外大屏幕。
(5) LCD:目前是主流显示器。
(1) 白光其实是由各种不同颜色的光组成的,所以白光被选择性透光之后,可以产生各种不同颜色的光。
(1) TN 最早。坏处是响应性不够好,有拖尾现象。
(2) STN 是 TN 的升级版。有效解决拖尾现象,显示更清晰。
(3) TFT 的最大特点就是超薄。
(4) TFT 技术之上发展出来很多更新的技术。
(参考资料一:http://blog.163.com/tao198352__4232/blog/static/85020645201062285210682/)
(参考资料二:http://display.ofweek.com/2013-12/ART-8321301-8300-28763136.html)
(1) 什么是 TTL 接口。+5V 表示逻辑 1,0V 表示逻辑 0。这种就叫 TTL 电平,和 CMOS 电平相对比。
(2) SoC 的 LCD 控制器硬件接口是 TTL 电平的,LCD 这边硬件接口也是 TTL 电平的。所以它们俩本来是可以直接对接的,手机、平板、开发板都是这样直接对接的(一般用软排线连接)。
(3) TTL 电平的缺陷就是不能传递太远。如果 LCD 屏幕和主板控制器太远(1 米甚至更远)就不能直接 TTL 连接了,要进行转换。转换方式:主机 SoC(TTL) -> VGA -> LCD屏幕(TTL)。
各种接口(TTL、LVDS、EDP、MIPI、)在传输速率、距离、适配性方面不同(参考资料:http://blog.csdn.net/wocao1226/article/details/23870149)
(2) HSYNC(水平同步信号) 。
(3) VSYNC(垂直同步信号):时序信号线,为了让 LCD 能够正常显示而给的控制信号。
(4) VCLK(Video 时钟):LCD 工作时,需要主板控制器给 LCD 模组一个工作时钟信号,就是 VCLK。
(5) VDEN(数据有效标志):时序信号,和 HSYNC、VSYNC 结合使用。
(6) LEND(行结束标志,不是必须的):时序信号,非必须,譬如 X210 接口就没有。
(1) 像素就是组成图像的最基本元素,或者说显示中可以被控制的最小单位,整个图像就是由很多个像素组成的。
(2) 像素可以被单独控制,或控制其亮或不亮(单色屏)、或控制其亮度强弱(譬如亮50%,35%,这样叫灰度屏,以前的黑白电视机)、或控制其显示一定的颜色(这就是我们现在最常用的彩色显示屏)。
总结:像素很重要,整个显示图像是由一个个的像素组成的。我们要在显示器上显示一个图像,就是把这个图像离散化成一个一个的点,然后把各个点的颜色对应在显示器的像素上。
(1) 扫描是一个动作, 而不是一个名字,扫描就是依次将颜色数值放入屏幕中所有的像素的这个过程。
(2) 扫描这个词是由最早的 CRT 显示器遗留下来的,到 LCD 显示器的年代,本来已经失去意义了,但是我们还是延续着这么叫。
(3) 显示器的扫描显示原理依赖于人眼的视觉暂留。只要显示器扫描频率大于人眼的发现频率,人眼看到的图像就是恒定的。如果扫描频率偏小,人眼就会看到闪动。(扫描频率的概念就叫做刷新率)
(1) LCD 驱动器一般和 LCD 显示面板集成在一起(本来是分开的,做面板的是只做面板的,譬如说三星、LG、台湾的友达、奇美都是做面板的;驱动器也由专门的 IC 厂商生产;集成厂商买来面板和驱动器后,集成在一起做成 LCD 屏幕)。
面板只负责里面的液晶分子旋转透光,面板需要一定的模拟电信号来控制液晶分子;LCD 驱动器芯片负责给面板提供控制液晶分子的模拟电信号,驱动器的控制信号(数字信号)来自于自己的数字接口,这个接口就是 LCD 屏幕的外部接口(第二节中讲到的接口)
(2) LCD 控制器一般集成在 SoC 内部, 它负责通过数字接口向远端的 LCD 驱动器提供控制像素显示的数字信号。LCD 控制器的关键在于时序,它必须按照一定的时序,和 LCD 驱动器通信;LCD 控制器受 SoC 控制,SoC 会从内存中拿像素数据给 LCD 控制器,并最终传给 LCD 驱动器。
(1) SoC 在内存中挑选一段内存(一般来说,是程序员随便挑选的,但是挑选的时候必须符合一定规矩),然后通过配置,将 LCD 控制器和这一段内存(以后称为显存)连接起来,构成一个映射关系。一旦这个关系建立之后,LCD 控制器就会自动从显存中读取像素数据,传输给 LCD 驱动器。这个显示的过程不需要 CPU 的参与。
(2) 显示体系建立起来后,CPU 就不用再管 LCD 控制器、驱动器、面板这些东西了;以后 CPU 就只关心显存了,因为我只要把要显示的图像的像素数据丢到显存中,硬件就会自动响应(屏幕上就能自动看到显示的图像了)。
总结:LCD 显示是分为 2 个阶段的:第一个阶段就是建立显示体系的过程,目的就是 CPU 初始化 LCD 控制器,使其和显存联系起来构成映射;第二个阶段就是映射建立之后,此阶段主要任务是,将要显示的图像丢到显存中去。
(1) 显示器上一整个画面的内容称为一个帧(frame),整个显示器工作时,是一帧一帧的在显示。
(2) 电影实际就是以每秒种 24 帧的速度在播放图片。
(3) 帧内数据:一帧分为多行,一行分为多像素,因此一帧图像其实就是多个像素组成的矩阵。
(4) 帧外数据:整个视频由很多个帧构成,最终播放视频时逐个播放各个图像帧即可。
(1) 首先把帧分为行,然后再把行分为像素,然后逐个像素去显示。(显示像素:其实就是 LCD 驱动器按照接收到的 LCD 控制器给的显示数据,驱动一个像素的液晶分子旋转,让这个像素显示出相应的颜色值的过程)
(2) 关键点:LCD 控制器和驱动器之间,一次只能传一个像素点的显示数据。所以一帧图像在屏幕上其实是串行的依次被显示上去的,不是同一时间显示出来的。
(5) 要注意,这几个时序参数本身是 LCD 屏幕本身的参数,与 LCD 控制器无关。所以同一个主板如果接的屏幕不一样,则时序参数设置也会不同。 这些参数的来源一般是:第一,厂家会直接给出,一般以实例代码的形式给出;第二,来自于 LCD 的数据手册。
第一种方式,查看九鼎的 210 裸机教程(x210v3裸机开发教程\src\template-framebuffer-font\source\hardware\s5pv210-fb.c的第 774 行)
第二种方式,查看 LCD 数据手册(X210光盘资料\A盘\DataSheet\AT070TN92.pdf)
32 位:总共用 32 位二进制来表示颜色,其中 24 位表示红绿蓝三元色(还是 RGB888 分布),剩下 8 位表示透明度。这种显色方式就叫 ARGB(A 是阿尔法,表示透明度),现在 PC 机中一般都用 ARGB 表示颜色。
补充:颜色的组成,三元色(三基色)是 RGB,也就是说所有的颜色都可以由红绿蓝三种颜色组成。
(1) 210 的 LCD 控制器叫 FIMD,FIMD 是 210 内部和图像处理相关的一些部件,在摄像头等和图像处理有关的部分都可以有关联。
(2) FIMD 在内部与 AHB 总线等相连接,在外部提供 RGB 接口、I80 接口、YUV 接口与外部相连接,我们实际使用的是 RGB 接口。
(1) 虚拟屏幕的意思是,我们平时看到的屏幕上显示出来的场景,实际是很多个屏幕显示叠加在一起的效果(譬如新闻图像、电视台台标、下方飘动的字幕新闻)。
(2) 像 S5PV210 的 LCD 控制器中,有 5 个虚拟屏幕 Window0 到 Window4,虚拟屏幕不存在于真实,而存在于内存中。(之前讲过,LCD 显示时,实际是显示的是对应的内存中的显存区域的数值)虚拟屏幕其实就是一个内存中的显存区域,有几个显存区域就有几个虚拟屏幕,但是这些虚拟屏幕都被映射到一个真实的显示屏上面,所以将来真实的显示效果,实际是这几个虚拟屏幕的显示内容的叠加。(叠加时要注意上面一层会覆盖下面一层,所以要注意谁在前谁在后,设置寄存器时有这个选项)。
(3) 使用虚拟屏幕,而不是整个 LCD 使用一个显存是有一定好处的:第一,可以保证不污染源图像,方便程序处理;第二,可以减少屏幕刷新(只刷新特定的虚拟屏幕的内容即可),提高显示效率,减少 CPU 工作量。
(1) 如何实现在小分辨率的屏幕上(真实)显示大分辨率的图像。
(2) 细节上,我们需要屏幕上看到不同图像时,需要对显存区域进行刷新。即使我们只需要屏幕显示移动一点点,整个屏幕对应的显存空间也需要整个重新刷新,工作量和完全重新显示一幅图像是一样的。这个显然不好,这样 CPU 刷新屏幕的工作量太大了,效率很低。
(3) 如何能够在显示一个大图片的不同区域时,让 CPU 刷新屏幕工作量减少?有,方法就是虚拟显示。具体做法就是,在内存中建立显示缓存(显存)的时候,实际建立一个很大的区域,然后让 LCD 去对应其中的一部分区域作为有效的显示区域。将来要显示大图像时,直接将大图像全部一次性加载入显示缓存区,然后通过移动有效显示区域就可以显示大图像的不同区域了。
源自朱友鹏老师.