LCD显示器概述

 

——》液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像。

 

——》与传统的阴极射线管(CRT)相比,LCD占用空间小、低功耗、低辐射、无闪烁、降低视觉疲劳,具有很大的发展潜力。


液晶

——》物质有三态:固态、液态和气态。实际上,所谓的三态只是大致的划分,某些物质的固态可以再被细分出不同性质的状态。同理,液体同样也可以具有不同的“态”。其中,人们将分子排列具有方向性的液体称为“液态晶体”,简称“液晶”。

 

——》一般的固态晶体具有方向性,所以它们的许多物理特性也具有方向性。而液态晶体在具有固态晶体方向性的同时又具有液体的流动性。通常,如果要改变固态晶体的方向,必须旋转整个晶体。而液态晶体具有流动性,它的方向可以用电场或磁场来控制。


LCD显示屏的背光

——》LCD显示属于被动显示方式,液晶本身不能发光,它只能通过对光线的穿透和反射来实现显示功能,所以,所有的液晶显示都会有背光来照亮液晶。


LCD显示原理

——》TN型显示器使用的是液晶显示中最基本的显示技术,而其它各类的液晶显示器大多也是基于 TN型显示技术改良而得。TN型显示器的工作原理与其它显示技术相比比较简单。

——》由上图可以看出,液晶显示器由两个偏振片(垂直方向与水平方向各一个),有细纹沟槽的配向膜,液晶材料以及导电的玻璃基板组成。

——》在不加电场的情况下,入射光经过偏振片后形成偏振光,偏振方向为垂直方向。当偏振光穿过液晶层后,偏振光的偏振方向被分子扭转排列的液晶层旋转90度,变成了水平方向。此方向与下偏光片的偏振方向相同,因而它可以完全穿透下偏光片达到反射板,被反射板反射后可以沿原路返回,表现出透明状态。

——》当在液晶的上下电极加入电场时,每个液晶分子的光轴转向与电场方向一致(垂直排列),从而失去了旋光性。那么,从上偏光片入射进来的偏振光在经过液晶时将不再被旋转。当此偏振光到达下偏振片时,由于其偏振方向与下偏片的偏光方向成正交垂直关系,被下偏振片完全吸引,无法通过形成反射光,因而,电极面呈现出黑色。

——》可见,通过电场的有无可以控制液晶的分子排列,从而得到光暗对比的现象,称做扭转式向列场效应,简称 TNFE(Twisted Nematic Field Effect)。电子领域中所用的液晶显示器,几乎都是用扭转式向列场效应原理制成的。

——》注意:TN型的液晶显示器显示屏幕做的越大,其屏幕对比度就会显得较差,不过 STN的改良技术可以在一定程序上弥补对比度不足的情况。


STN型彩色显示器工作原理

——》单纯的 TN液晶显示器本身只有明暗两种状态(或称黑白),无法实现色彩的变化。而 STN液晶显示器由于液晶材料的关系以及光线的干涉现象,显示的色调都以淡绿色与橘色为主,同样无法满足色彩显示的要求。

——》但是,如果为传统单色 STN液晶显示器加上一个彩色滤光片(color filter),将单色显示矩阵中的每一个像素(pixel)分成3个子像素(sub-pixel),然后分别通过彩色滤光片显示红、黄、蓝三原色,再根据三原色比例调和,就可以显示出彩色画面。

——》从液晶显示原理分析,STN是通过电场改变原为 180度以上扭曲的液晶分子的排列,达到改变旋光状态的目的。外加电场则通过逐行扫描的方式改变电场,因此在电场反复改变电压的过程中,每一点的恢复过程都较慢,这样就会产生余辉现象。用户能感觉到拖尾,(余辉)现象也就是一般俗称的“伪彩”。

——》由于 DSTN显示屏上的像素信息是由屏幕左右两侧的一整行晶体管控制下的像素来显示,而且每个像素点不能发光,是无源像点。所以反应速度不快,屏幕刷新后更可能留下幻影,其对比度和亮度也比较低,看到的图像要比 CRT显示器里的暗得多。


TFT显示器

——》TFT(Thin Film Transistor)-LCD为有源矩阵液晶显示器件,彩色液晶显示器件分单色和多色(全彩色)两种,在全彩色的实现方式中技术成熟的是“微彩色膜”方式。原理如下图

——》如图所示,TFT将点阵像素分割成红、绿、蓝3个子像素,并在其对应位置的器件内表面设置 R、G、B 3个微型滤色膜,此时液晶显示器件仅仅作为一个光阀,控制每个子像素光阀,就可以控制滤色膜透过光的通断;控制光阀的灰度等级,就可能控制相应滤色摸透过光的多少;利用 R、G、B这3个子像素透过的不同光量,便可以混合加色实现极为丰富的彩色。

——》TFT-LCD的每个像素点都是由集成在自身上的 TFT来控制的,它们是有源像素点。因此,不但反应时间可以极大地加快,对比度和亮度也大大提高;同时,分辨率也得到了空前的提升。因为它具有更高的对比度和更丰富的色彩,荧屏更新频率也更快,通常称为“真彩”。


LCD驱动方式

——》LCD的驱动方式由电极引线的选择方向确定,所以,当液晶显示器被选定之后,相应的驱动方式也就确定下来了。

——》从驱动方式上看,LCD型显示器的分类比较多,但总体上可以分为静态驱动和动态驱动两种。静态驱动方式与 LED型显示器驱动相似,所需要的驱动信号相对较少。动态驱动方式比较复杂,需要的电极驱动信号比较多,设计起来也相对复杂。

——》注意:如果使用直流电压驱动 LCD,时间久了将会导致液晶发生电解以及电极老化,从而大大降低 LCD的使用寿命。因此,人们大都选用交流电压驱动方式。


静态驱动方式

——》先来个静态驱动的时序波形

——》其中 LCD表示某个液晶显示字段,当此字段上两个电极的电压相同时,两电极之间无电位差,入射光线不吸收,该字段不显示当此字段上的两个电极电压相位相反时,两电极之间的电位差不为0,为两倍幅值的波信号,该字段显示呈现出黑色。

——》虽然静态驱动方式与 LED型显示驱动有些相似,但它与数码管驱动也存在着很大的不同,对数码管而言,通过在 LED两端加载恒定电压使其导通或截至便可控制它的亮或暗。而 LCD两端不能加载恒定的直流电压,从而增加了驱动复杂性。

 

——》通常,在 LCD的公共极加交变方波信号,如下图

——》通过控制前极电压的变化,使 LCD两极间产生两倍幅值的方波信号,从而达到对 LCD亮/暗的控制。


动态驱动方式

——》动态驱动实质上是矩阵扫描,可用于多维的点阵显示。点阵显示是把液晶置于垂直的条状电极之间,各条状电极交点的组合来显示,可组成图形和各种字符。这种显示方法如果只在与现实点的行列上加载电压,则非显示点也会因有电压产生“交叉效应”,从而降低对比度。通常在非选中点,加载低于阈值的电压来清除“交叉效应”的影响。


灰度 STN的时序

——》STN显示屏是靠控制信号的占空比来显示灰度和颜色的尝试,当扫描时,每根数据线均对应屏幕上的一个点,这个点的颜色尝试就是靠相对应数据线中的传送信号的占空比动态扫描出来的。

——》因此,灰度液晶屏和黑白液晶屏在结构和控制时序上没有什么分别,仅仅是扫描方式有所不同,用户可以通过设置液晶扫描控制器来实现灰度或黑白液晶的不同模式。

——》典型的 8位 STN显示屏扫描时序如下图,可见,灰度 STN显示屏主要有 5种类型的扫描信号通过设置相关的寄存器,可以使 LCD控制器按照同步信号逐帧逐行传送显示数据。


彩色 STN时序

——》先来一个 320*240分辨率的显示屏,点阵排列方式

——》从图中可以看出,一个320*240的彩色 STN显示屏,水平方向有 960个像素点,垂直方向有240个点,那么,对于有 8位数据线的液晶屏,数据线和显示屏中点对应关系如下所示

——》从上图可以看出,彩色 STN屏的输出信号是 8根数据线周期地轮流输出红、绿、蓝3种原色的数据。通过对这 3种颜色的深度进行控制可以实现彩色的显示,其控制原理与灰度液晶的现实原理类似(也是通过占空比来控制)。


TFT的时序

——》TFT显示屏的扫描时序与 STN显示屏有所不同,其扫描信号如下

——》在颜色控制上,TFT显示屏与 STN显示屏也不相同,TFT显示屏并不是通过控制信号占空比来控制颜色深度的,其颜色深度完全由二进制数据来表示,即每次时钟(VCLK)输入的数据只对应一个点的颜色。

 

——》例如,一个 16位的 TFT显示屏,其扫描数据线和屏幕点的对应关系如图所示。

——》16位TFT屏中扫描数据线和屏幕对应点的关系

——》16位 TFT屏 5:6:5数据分配分式


LCD的字符显示缓存

——》LCD的字符显示就是将字库(汉字或英文)中的字模用点阵图形的方式显示在 LCD上,它的显示原理和图形显示方法相同,我们只需要将所要显示的字体当作一幅图像,显示在 LCD屏幕上即可。

——》常用的汉字点阵字库文件有 16*16 点阵 HZK16文件,按汉字区位码从小到大依次存储国标区位码表中的所有汉字,每个汉字 32字节,每个区 94个汉字。

 

——》在计算机中,汉字是以机内码的形式存储,每个汉字两个字节。其中,第一个字节表示区码,第二个字节表示位码。为了和 ASCII码进行区别,区码和位码均从 A1H开始(ASCII码小于 80H)。

 

——》这样一来,将机内码减去 A0A0就可以得到汉字的区位码,具体的计算公式为:

位置=(94*(qh-1)+wh-1)*一个汉字字节数

——》由于字模的显示方法和点阵显示图像的想法相同,所以一个汉字字模占用的字节数将会因汉字的大小不同而不同。


基于 Framebuffer的 LCD驱动

——》前面介绍了液晶显示的基本原理及驱动基础,都是基于裸机的,但是在嵌入式linux系统下操作时,我们只需要将显示的数据按照特定的格式写入显示缓存,对应的屏幕上就会有期望有显示图像出现。

——》在软件设计层面上,人们的主要工作就是准确得到这个显示缓存的地址,对它进行相应的操作即可。实际上,Linux为显示设备专门提供了一类驱动程序,叫做帧缓冲(Framebuffer)设备驱动程序。

——》Framebuffer是出现在 Linux 2.2.xx 内核版本以后的一种驱动程序接口,这种接口显示设备抽象成为帧缓冲区(一个面向显示缓冲区的统一接口)。应用程序不需要知道底层硬件的任何信息,它仅和 Framebuffer抽象出来的接口打交道,这样就大大降低了拥有 GUI界面程序的移植工作。

——》对用户来说,帧缓冲区可以被看作是显示内存的一个映像,将其映射的进程地址空间后,就可以进行直接的读写操作,其操作结果也可以立即反映显示在屏幕上。

——》在嵌入式Linux中,几乎所有的 GUI都是以 Framebuffer(帧缓冲)为基础的。Framebuffer驱动并不提供任何有关图形的 API给用户,它仅完成将显示缓冲的数据显示在 LCD上。

本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1228553

【电子基础】液晶显示器原理·LCD驱动基础的更多相关文章

  1. BLDC无刷直流电机的原理及驱动基础

    无刷直流电机(BLDC,也称为马达驱动)是电机和控制技术相结合的产品,电调控制电机的运行,从电流驱动角度来看,无刷直流电机可分为正弦波驱动和方波驱动.通常,以方波驱动的电机称为无刷直流电机(BLDC) ...

  2. python编程基础--计算机原理之硬件基础

    一.寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果. 1.寄存器的特性: 1)寄存器位于CPU内部,数量很少,仅十四个: 2)寄存器所能存储的数据不一定 ...

  3. linux驱动基础系列--Linux I2c驱动分析

    前言 主要是想对Linux I2c驱动框架有一个整体的把控,因此会忽略协议上的某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型.sysfs等也不进行详细说明原理,涉及到i2c协议部分也只 ...

  4. Unit01: JDBC原理 、 JDBC基础编程

    Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...

  5. linux驱动基础系列--Linux mmc sd sdio驱动分析

    前言 主要是想对Linux mmc子系统(包含mmc sd sdio)驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.块设备驱动.设备模型等也不进行详细说明原 ...

  6. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  7. linux驱动基础系列--Linux下Spi接口Wifi驱动分析

    前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...

  8. linux驱动基础系列--linux spi驱动框架分析

    前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...

  9. Java基础-hashMap原理剖析

    Java基础-hashMap原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.什么是哈希(Hash) 答:Hash就是散列,即把对象打散.举个例子,有100000条数 ...

随机推荐

  1. winform视频教程-任务定时循环执行小工具

    有时候,我们可能遇到这样的一种需求,就是需要有一个小工具,在服务器中不断的执行一些任务,那么这样的需求,我们可以做一个windows服务程序,或者做一个winform wpf等小程序,然后小程序里面开 ...

  2. java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载

    实现时主要使用Commons-Configuration.jar包,还需要commons-lang,disgestor,beanutils,collections等, package propFile ...

  3. Swift下的基于UIView的位置属性扩展

    一个比较简单能满足大部分需求的extensin,如下: swift 的基于UIView的位置属性 包含: 上下左右:left.right.top.botom 高宽:height.width 中心点:c ...

  4. mysql8.0 Authentication plugin 'caching_sha2_password' cannot be loaded

    安装mysql8.0后使用navicat创建连接, 然后报如题所示警告.可参考如下解决方案: https://stackoverflow.com/questions/49194719/authenti ...

  5. JavaScript Boolean Object 逻辑

    Create a Boolean Object The Boolean object represents two values: "true" or "false&qu ...

  6. 自动化运维之Cobbler自动化部署安装操作系统

    Cobbler概述: Cobbler可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会. 在生产环境中,经常批 ...

  7. 获取COM组件类型库信息

    类型库type library的作用是什么? 用来描述这个COM组建的接口信息,比如有多少个接口,每个接口有什么函数,函数的描述之类的.MSDN查一下ITypeLib,ITypeInfo,TypeAt ...

  8. git学习笔记(二)—— 创建版本库&&版本管理

    一.创建版本库 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: mkdir gitHub_CXWcd gitHub_CXW git init Initialized empty G ...

  9. 【Linux】字符转换命令expand

    这命令就是在将 [tab] 按键转成空格键: [root@www ~]# expand [-t] file 选项与参数: -t :后面可以接数字.一般来说,一个 tab 按键可以用 个空格键取代. 我 ...

  10. golang学习笔记 ---数组与切片

    数组: golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length). golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式 ...