2、LCD显示原理:液晶显示基础、像素与分辨率、色彩深度、帧率与刷新率

2.1 液晶显示基础——LCD到底是怎么亮起来的?

说实话,我刚入行那会儿,一直以为LCD是自己发光的。后来拆了一块报废的屏幕才明白——液晶本身不发光,它就是个“光阀门”。

液晶分子有个特性:给它加电压,它就扭转;不加电压,它就保持原样。这个扭转动作,决定了背光能不能穿过它。你想想看,这就像一扇百叶窗,电一拉,叶片转个角度,光就透过去了。

LCD的结构其实不复杂,从上到下大概是:

  • 偏光片——把自然光变成单一方向的光
  • 玻璃基板——上面刻着ITO透明电极
  • 液晶层——核心部件,负责“开关”光线
  • 彩色滤光片——红绿蓝三色排列,混出各种颜色
  • 背光模组——提供光源,通常是LED灯条

我在项目里遇到过一个问题:屏幕显示偏暗,查了半天发现是偏光片贴反了。嗯,这个方向搞错,光就全被挡死了。所以做驱动移植时,偏光片角度这个参数一定要跟屏厂确认清楚。

核心要点:液晶本身不发光,它只是控制背光能不能透过去。驱动LCD,本质上就是控制每个像素点的电压,让液晶扭转到位。

2.2 像素与分辨率——屏幕上的“小格子”

像素是什么?说白了就是屏幕上最小的发光单元。一个像素由红、绿、蓝三个子像素组成。我习惯叫它们R、G、B子像素。

分辨率就是像素的个数。比如1024×600,意思是有1024列、600行像素。这个数字越大,画面越细腻。

常见的分辨率有:

名称 分辨率 常见应用
QVGA 320×240 老式工控屏
VGA 640×480 早期显示器
WVGA 800×480 7寸平板
HD 1280×720 手机、车载
FHD 1920×1080 主流显示器

做驱动移植时,分辨率直接决定了帧缓冲(framebuffer)的大小。我算过一笔账:一个1024×600、24位色的屏幕,一帧数据是1024×600×3 = 1.8MB。如果你的MCU只有2MB内存,那基本就满了。所以选型时一定要算清楚。

我的经验:驱动移植第一步,先确认屏的物理分辨率。很多国产屏标称分辨率跟实际驱动IC支持的不一样,我吃过这个亏。最好直接读屏的ID寄存器确认。

2.3 色彩深度——一个像素能显示多少种颜色?

色彩深度,也叫色深,指的是每个像素用多少位来表示颜色。常见的色深有:

  • 1位——黑白屏,每个像素要么黑要么白
  • 8位——256色,老式手机屏常用
  • 16位——RGB565,红5位、绿6位、蓝5位,共65536色
  • 18位——RGB666,共262144色
  • 24位——RGB888,共1677万色,真彩色

为什么16位色里绿色多1位?因为人眼对绿色最敏感。这个设计挺巧妙的,用更少的位数达到更好的视觉效果。

我在项目中遇到过一个问题:显示照片时颜色偏紫。查了半天,发现是驱动IC配置成了RGB565,但上层应用送的是RGB888数据。颜色映射错了,当然偏色。所以驱动层和上层的数据格式必须一致

避坑指南:我曾经在移植一款ILI9341驱动时,发现颜色顺序是BGR而不是RGB。很多国产屏厂商会改颜色顺序,一定要看数据手册确认。

2.4 帧率与刷新率——别搞混了这两个概念

这两个词经常被混用,但其实是两码事。

帧率(FPS):指的是应用层每秒更新画面的次数。比如游戏60帧,就是每秒画60次新画面。

刷新率(Hz):指的是屏幕硬件每秒刷新显示的次数。比如60Hz,就是屏幕每秒重绘60次。

为什么要有刷新率?因为液晶分子会慢慢恢复原状。如果不定期刷新,画面会变淡。CRT时代刷新率很重要,因为会闪烁。LCD时代,60Hz基本够用。

我做过一个项目,帧率只有15帧,但刷新率是60Hz。结果就是:屏幕一直在刷新,但显示的内容15秒才变一次。用户觉得卡顿,其实不是刷新率的问题,是帧率太低。

注意:帧率不能超过刷新率。比如屏幕只有60Hz,你硬要跑120帧,那多余的帧就浪费了,还会造成撕裂(tearing)。解决办法是开启垂直同步(VSync)。

2.5 知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你看一遍,基本就明白LCD显示的全貌了。

LCD显示原理知识体系 液晶显示基础 像素与分辨率 色彩深度 帧率与刷新率 分辨率决定 · 像素总数 = 宽 × 高 · 帧缓冲大小 = 像素数 × 色深 · 影响选型和内存规划 色彩深度决定 · 位数越多,颜色越丰富 · 常见:16位、18位、24位 · 注意RGB/BGR顺序 帧率 vs 刷新率 · 帧率:应用更新速度 · 刷新率:硬件重绘速度 · 帧率 ≤ 刷新率才流畅 驱动移植核心参数

这张图把本章的知识点串起来了。你看,液晶显示基础是底层原理,像素分辨率、色彩深度、帧率刷新率是三个核心参数。做驱动移植时,这三个参数必须全部确认无误,屏幕才能正常工作。

我的习惯:拿到一块新屏,先读数据手册,把分辨率、色深、刷新率三个参数记下来。然后写一个简单的测试程序,画个彩条看看颜色对不对。这一步能发现80%的问题。


公众号:蓝海资料掘金营,微信deep3321