未觉池塘春草梦,阶前梧叶已秋声    ——朱熹《劝学》

前面介绍了LED以及platform的驱动移植,然后做了对LCD的移植,感觉挺好玩的,于是就参考宋宝华老师的《Linux设备驱动开发详解》学习一下LCD的一些基本原理。本篇即是鄙人对LCD设备驱动的初步了解。

一、LCD的硬件原理

LCD(液晶显示器)根据驱动方式分为静态驱动、简单矩阵驱动以及主动矩阵驱动三种,简单矩阵型又分为扭转向列型(TN)和超扭转式向列型(STN),主动矩阵型以薄膜式晶体管型(TFT)为主流。LCD屏不但需要LCD驱动器,还要相应的LCD控制器。 LCD驱动器以COF/COG的形式与LCD玻璃基板制作在一起,LCD控制器由外部电路实现,MCU内部直接集成LCD控制器,通过LCD控制器方便地控制STN和TFT屏。

LCD的工作原理:LCD显示屏都是由不同部分组成的分层结构。位于最后面的一层是由荧光物质组成的可以发射光线的背光层。背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。液晶的显示效果由加在液晶上的有效电压决定,彩色(灰度)的实现有两种方式:PWM(脉宽调制)和FRC(帧率控制),LCD为数字方式,只有位置固定的电流通路,所以只能通过电路矩阵逐行扫描,不能逐点,即一行上的所有点同时工作,要显示图像,肯定有的点不亮有的点亮,即每个点上的电压是不同的。

彩色液晶显示器颜色的形成:彩色LCD面板中,每一个像素都由三个液晶单元格构成,其中每一个单元格前都有红绿蓝三种颜色的过滤片,光线经过过滤片的处理照射到每个像素中不同色彩的液晶单元格之上,利用三原色原理组合不同的色彩。不同比例的红绿蓝可得不同颜色。

位图数据显示在LCD上:LCD显示是用动态扫描的方式实现,每次显示一整行,在一帧里每行一次扫描一遍,LCD驱动器就是一种控制行和列上的输出电压电路,驱动器的输出与图像和LCD的工作方式相关,驱动器需要接受从图像转换来的控制信号,从而改变行列的输出电压,控制器就是将工作方式及图像位图转换成控制信号的电路。控制器从MCU(微控制单元,单片机)接受位图数据,然后把它转换成控制信号提供给驱动器。

LCD屏显示图像不但需要驱动器,还需要控制器,LCD驱动器以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则由外部电路实现,许多MCU内部直接集成了LCD控制器,通过LCD控制器可以方便地控制STN和TFT屏。下面是TFT屏的典型时序图:

VCLK:像素时钟信号,用于锁存图像数据的像素时钟

HSYNC:行同步信号,每发出一个脉冲都表明新的一行图像资料开始发送。

VSYNC:帧同步信号,每发出一个脉冲,都意味着新的一屏图像数据开始发送。

VDEN:数据有效标志信号

VD:图像的数据信号

在帧同步以及行同步的头尾都必须留有回扫时间,这样的时序安排起源于CRT显示器电子枪偏转所需要的时间,但后来成为实际上的工业标准,因此TFT屏也包含了回扫时间。

下面这个图是LCD控制器中需要设置的TFT屏的参数:

其中的上边界和下边界即为帧切换的回扫时间,左边界和右边界即为行切换的回扫时间,水平同步是行同步本身需要的时间,垂直同步是帧同步本身需要的时间,xres是屏幕的水平分辨率,yres是屏幕的垂直分辨率。

这些参数在我做LCD移植的时候修改过的,可以回顾一下,这些参数也是根据自己的开发板的datasheet自己设置的。

下一篇介绍frambutter,即帧缓冲。

关于LCD的分析都是基于  http://blog.csdn.net/lwj103862095/article/details/18191285。

LCD设备驱动(一)相关推荐

  1. LCD 设备驱动框架分析及核心结构

    Linux 下很多东西都是和结构体相关,举个例子,时钟大家都知道吧,Linux 下对应时钟的东西就有好几个结构体,所以你要是想明白Linux 下那些东西,对结构体要有所了解,LCD 是基础的驱动设备, ...

  2. python framebuffer_Linux中LCD设备驱动

    1.framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区 ...

  3. itop4412 LCD设备驱动详解(四)之PROBE再深入

    LCD的工作,在kernel中有device和driver两个描述,这也是必然 在第二节中我们详解介绍了 s3cfb_main.c ---probe函数的框架. 回顾一下probe函数的作用: 1. ...

  4. itop4412 LCD设备驱动详解(三)之PROBE

    lcd的工作,在kernel中有device和driver两个描述,这也是必然 在上一节中我们详解介绍了 s3cfb_main.c ---probe函数的框架. 回顾一下probe函数的作用: 1. ...

  5. Linux LCD设备驱动详解

    本文是基于mini2440开发板Linux版本号是linux-2.6.32.2的学习笔记 一. LCD device硬件信息 1.LCD控制器的寄存器地址从 0X4D000000开始 2.lcd de ...

  6. 《Linux设备驱动开发详解(第2版)》隆重出版

    Linux设备驱动开发详解(第2版)(前一版狂销3万册,畅销书最新升级) [新品] 点击看大图     基本信息 * 作者: 宋宝华       * 出版社:人民邮电出版社     * ISBN:97 ...

  7. linux 设备驱动(一)——字符设备驱动

    linux 设备驱动(一)--字符设备驱动 一.概述 1.1 设备驱动介绍 1.2. 设备结构 1.2.1 设备号 1.2.2 驱动层次 1.3 设备驱动对外接口 1.4 设备驱动特点 二.字符设备驱 ...

  8. linux设备驱动总结,《Linux设备驱动开发详解(第3版)》海量更新总结

    本博实时更新<Linux设备驱动开发详解(第3版)>的最新进展. 2015.2.26 几乎完成初稿. [F]是修正或升级:[N]是新增知识点:[D]是删除的内容 第1章 <Linux ...

  9. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)进展同步更新

    本博实时更新<Linux设备驱动开发详解(第3版)>的最新进展. 目前已经完成稿件. 2015年8月9日,china-pub开始上线预售: http://product.china-pub ...

最新文章

  1. iOS 动态更换icon
  2. 用户开始接纳虚拟化双厂商策略
  3. 【图文】Excel中vlookup函数的使用方法
  4. tf.arg_min
  5. 疾控中心计算机管理员权限,疾控中心健康证分权限管理系统使用说明
  6. Swift中switch比较元组类型
  7. 深入理解及配置ISA Server 2006访问规则
  8. 面试中遇到回答不上来的问题可以这样做
  9. BDKRHash详解
  10. 优先级队列——实现二维数组排序
  11. 堆积柱形图显示总数_在Excel堆积柱形图中显示合计值
  12. 除了加速上币,OKEx在DeFi热潮中还能做什么?
  13. 利用python实现杜利特尔分解法
  14. 用opencv和python读取医学图片:mha
  15. 阿里p7程序员哀叹:35岁,被通知合同不再续签
  16. Codeforces Round #781 CF1665 CDE
  17. 亚马逊AWS:云计算目前仍然是蓝海市场
  18. 珠海拱北口岸停车攻略,拱北口岸地下停车场收费
  19. 谷歌气球 simplekml 入门《四》
  20. 基于python+selenium+Chrome自动化爬取巨潮资讯网A股财务报表

热门文章

  1. QuestaSim 仿真常用命令
  2. 方法功能增强 - 继承、装饰者模式、动态代理
  3. QQ聊天机器人--基于酷Q写的插件
  4. ab压力测试结果-简要说明
  5. 【Eclipse】--Eclipse简介和安装
  6. The nested type test2 cannot hide an enclosing type
  7. 今天是一位朋友的生日,送给她最美丽的祝福.
  8. JAVA-基础(Stream流)
  9. 哪款软件可以测试刘海,什么脸型适合什么刘海 5款自测你适合哪种
  10. 事件抽取(event extraction)