一、LCD显示原理
利用液晶制成的显示器称为LCD,依据驱动方式可分为静态驱动、简单矩阵驱动以及主动矩阵驱动3种。其中,简单矩阵型又可再细分扭转向列型(TN)和超扭转式向列型(STN)两种,而主动矩阵型则以薄膜式晶体管型(TFT)为主流。
一块LCD 屏显示图像不但需要LCD驱动器,还需要有相应的LCD控制器。通常 LCD 驱动器会以 COF/COG的形式与LCD 玻璃基板制作在一起,而 LCD 控制器则由外部电路来实现。许多MCU 内部直接集成了LCD 控制器,通过LCD控制器可以方便地控制 STN 和 TFT 屏。
TFT屏是目前入式系统应用的主流,下图给出了TFT屏的典型时序。时序图中的VCLK、HSYNC 和 VSYNC 分别为像素时钟信号(用于锁存图像数据的像素时钟)、行同步信号和帧同步信号,VDEN 为数据有效标志信号,VD 为图像的数据信号。
作为帧同步信号的 VSYNC,每发出一个脉冲,都意味着新的一屏图像数据开始发送。而作为行同步信号的 HSYNC,每发出一个脉冲都表明新的一行图像资料开始发送。在帧同步以及行同步的头尾都必须留有回扫时间。
下图给出了 LCD 控制器中应该设置的 TFT屏的参数,其中的上边界和下边界即为帧切换的回扫时间,左边界和右边界即为行切换的回扫时间,水平同步和垂直同步分别是行和帧同步本身需要的时间。 xres 和 yres 则分别是屏幕的水平和垂直分辨率,常见的嵌入式设备的 LCD 分辨率主要为 320*240、640*480 等。
二、帧缓冲
1、基本概念
帧缓冲(framebuffer)是 Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。对于帧缓冲设备而言,只要在显示缓冲区中与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示。
帧缓冲设备为标准字符设备,主设备号为29,对应于/dev/fb%d 设备文件。帧缓冲驱动的应用非常广泛,在Linux的桌面系统中,X window服务器就是利用帧缓冲进行窗口的绘制。嵌入式系统中的Qt/Embedded