LCD简介

news2024/11/20 2:26:27

lcd简介

  • LCD简介
    • 1、分辨率
    • 2、像素格式
    • 3、LCD时间参数
    • 4、RGB LCD屏幕时序
    • 6、像素时钟
  • 此文章摘抄于正点原子的嵌入式linux驱动开发指南,仅作为笔记,以放便忘记时查阅

LCD简介

  LCD全称是Liquid Crystal Display,也就是液晶显示器,其显示的基本原理如下:
  LCD的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。

1、分辨率

  对于LCD显示器,我们经常听到720P、1080P、2K或4K这样的字眼,这个就是LCD显示器分辨率。LCD显示器都是由一个个像素点组成,像素点就类似一个灯(在OLED显示器中,像素点就是一个小灯),这个小灯是RGB灯,也就是由R(红色)、G(绿色)和B(蓝色)这三种颜色组成的,而RGB就是光的三原色。1080P的意思就是一个LCD屏幕上的像素数量是19201080个,也就是这个屏幕一列1080个像素点,一共1920列,如下图所示:
在这里插入图片描述
图1
  上图就是1080P显示器的像素示意图,X轴就是LCD显示器的横轴,Y轴就是显示器的竖轴。图中的小方块就是像素点,一共有1920
1080=2073600个像素点。左上角的A点是第一个像素点,右下角的C点就是最后一个像素点。2K就是25601440个像素点,4K是38402160个像素点。很明显,在LCD尺寸不变的情况下,分辨率越高越清晰。同样的,分辨率不变的情况下,LCD尺寸越小越清晰。

2、像素格式

  一个像素点就相当于一个RGB小灯,通过控制R、G、B这三种颜色的亮度就可以显示出各种各样的色彩。那该如何控制R、G、B这三种颜色的显示亮度呢?一般一个R、G、B这三部分分别使用8bit的数据,那么一个像素点就是8bit*3=24bit,也就是说一个像素点3个字节,这种像素格式称为RGB888。如果再加入8bit的Alpha(透明度)通道的话一个像素点就是32bit,也就是4个字节,这种像素格式称为ARGB888。
  透明度的理解应该是如下两个图:
透明:在这里插入图片描述
图2
不透明:
在这里插入图片描述
图3
  对于ARGB8888这种像素格式,一个像素占用4个字节的内存,这四个字节每个位的分配如下图所示:
在这里插入图片描述
图4
  在该图中,一个像素点是4个字节,其中bit31 ~ bit24是Alpha通道,bit23~bit16是RED通道,bit15 ~ bit8是GREEN通道,bit7 ~ bit 0是BLUE通道。所以红色对应的值就是0x00FF0000,绿色对应的值就是0x0000FF00,蓝色对应的值就是0x000000FF。通过调节R、G、B的比例可以产生其他的颜色,,比如0X00FFFF00就是黄色,0X00000000就是黑色,0X00FFFFFF就是白色。

3、LCD时间参数

  如果将LCD显示一帧图像的过程想象成绘画,那么在显示的过程中就是用一根“笔”在不同的像素点画上不同的颜色。这根笔按照从左至右,从上到下的顺序扫描每个像素点,并且在像素点上画上对应的颜色,当画到最后一个像素点的时候一幅图像就绘制好了。假如一个LCD的分辨率为1024*600,那么其扫描如下图所示:
在这里插入图片描述
图5
  结合图5来看LCD是怎么扫描显示一帧图像的。一帧图像也是由一行一行组成的。HSYNC是水平同步信号,也叫做行同步信号,当产生此信号的话就表示开始显示新的一行了,所以此信号都是在图5的最左边。VSYNC信号是垂直同步信号,也叫做帧同步信号,当产生此信号的话就表示开始显示新的一帧图像,所以此信号在图5的左上角。
  在图5可以看到有一圈“黑边”,真正有效的显示区域是中间的白色部分。那这一圈“黑边”是什么东西呢?这就要从显示器的“祖先”CRT显示器开始说起了,CRT显示器就是以前很常见的那种大屁股显示器,在2019年应该很少见了,如果在农村应该还是可以见到的。CRT显示器屁股后面是一个电子枪,这个电子枪就是我们上面说的“画笔”,电子枪打出的电子撞击到屏幕上的荧光物质使其发光。只要控制电子枪从左到右扫完一行(也就是扫描一行),然后从上到下扫描完所有行,这样一帧图像就显示出来了。也就是说,显示一帧图像电子枪是按照“Z”型在运动,当扫描速度很快的时候看起来就是一幅完整的画面了。
  当显示完一行以后会发出HSYNC信号,此时电子枪就会关闭,然后迅速的移动到屏幕的左边,当HSYNC信号结束以后就可以显示新的一行数据了,电子枪就会重新打开。在HSYNC信号结束到电子枪重新打开之间会插入一段延时,这段延时就是图5种的HBP。当显示完一行以后就会关闭电子枪等待HSYNC信号产生,关闭电子枪到HSYNC信号产生之间会插入一段延时,这段延时就是图5中的HFP信号。同理,当显示完一帧图像以后电子枪也会关闭,然后等到VSYNC信号产生,期间也会加入一段延时,这段延时就是图5中的VFP。VSYNC信号产生,电子枪移动到左上角,当VSYNC信号结束以后电子枪重新打开,中间也会加入一段延时,这段延时就是图5中的VBP。
  HBP、HFP、VBP和VFP就是导致图5中黑边的原因,但是这是CRT显示器存在黑边的原因,现在是LCD显示器,不需要电子枪了,那么为何还会有黑边呢?这是因为RGBLCD屏幕内部是有一个IC的,发送一行或者一帧数据给IC,IC是需要反应时间的。通过这段反应时间可以让IC识别到一行数据扫描完成了,要换行了,或者一帧图像扫描完了,要开始下一帧图像显示了。因此,在LCD屏幕中继续存在HBP、HFP、VPB和VFP这四个参数的主要目的是为了锁定有效的像素数据。这四个时间是LCD重要的时间参数。后面编写LCD驱动的时候是要用到的,至于这四个时间参数具体值是多少,那需要去查看所使用的LCD数据手册了。

4、RGB LCD屏幕时序

  上面讲了行显示和帧显示,我们来看一下行显示对应的时序图,如下图所示:
在这里插入图片描述
图6 行显示时序
  HSYNC:行同步信号,当此信号有效的话就表示开始显示新的一行数据,查阅所使用的LCD数据手册可以知道此信号是低电平有效还是高电平有效,假设此时是低电平有效。
  HSPW:有些地方也叫做thp,是HSYNC信号宽度,也就是HSYNC信号持续时间。HSYNC信号不是一个脉冲,而是需要持续一段时间才是有效的,单位为CLK。
  HBP:有些地方叫做thb,前面已经讲过了,术语叫做行同步信号后肩,单位是CLK。
  HOZVAL:有些地方叫做thd,显示一行数据所需的时间,假如屏幕的分辨率为1024*600,那么HOZVAL就是1024,单位为CLK。
  HFP:有些地方叫做thf,前面已经讲过了,术语叫做行同步信号前肩,单位是CLK。
  当HSYNC信号发出以后,需要等待HSPW+HBP个CLK时间才会接受到真正有效的像素数据。当显示完一行数据以后需要等待HFP个CLK时间才能发出下一个HSYNC信号,所以显示一行所需要的时间就是:HSPW+HBP+HOZVAL+HFP。
  一帧图像就是由很多个行组成的,RGB LCD 的帧显示时序如下图所示:
在这里插入图片描述

图7 帧显示时序图
  VSYNC:帧同步信号,当此信号有效的话,就表示开始显示新的一帧数据,查阅所使用的LCD数据手册可以知道此信号是低电平有效还是高电平有效,假设此时是低电平有效。
  VSPW:有些地方也叫做tvp,是VSYNC信号宽度,也就是VSYNC信号持续时间,单位为1行的时间。
  VBP:有些地方叫做tvb,显示一帧有效数据所需的时间,假如屏幕分辨率为1024*600,那么LINE就是600行的时间。
  VFP:有些地方叫做tvf,前面已经讲过了,术语叫做帧同步信号前肩,单位为1行的时间。
  显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP个行时间,最终的计算公式为:
T=(VSPW+VBP+LINE+VFP) * (HSPW+HBP+HOZVAL+HFP)
  因此我们在配置一款RGB LCD 的时候需要知道几个参数:HOZVAL(屏幕有效宽度)、LINE(屏幕有效高度)、HBP、HSPW、HFB、VSPW、VBP和VFP

对于ATK4342:
在这里插入图片描述

6、像素时钟

  像素时钟就是RGB LCD的时钟信号,以ATK4342这款屏幕为例,显示一帧图像所需要的时钟数就是:
(VSPW+VBP+LINE+VFP) * (HSPW+HBP+HOZVAL+HFP)
=(1+8+272+8)(1+40+480+5)
=289
526
=152014
  显示一帧图像需要152014个时钟数,那么显示60帧就是152014*60=9120840≈9Mhz

此文章摘抄于正点原子的嵌入式linux驱动开发指南,仅作为笔记,以放便忘记时查阅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人的组成

机器人是一个机电一体化的设备,从控制的角度来看,机器人系统可以分成四大部分,即执行机构、驱动系统、传感系统和控制系统. 各部分之间的控制关系如下图所示。 执行机构 执行机构是直接面向工作对象的机械装置,相当于人体的手和脚…

3年测试经验,测试用例应该达到这个水平才合格

状态迁移法主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来…

力扣-2512.奖励最顶尖的k名学生

Idea 记录caibi学习的第n天,这道题折磨了我两个多小时,终于用自己的思路ac了 大佬建议参考官方题解思路 用一个map记录学生id及其得分情况 用两个set存放 正面词汇集和负面词汇集 遍历report,然后获取每一个单词,跟两个set进行查找…

二叉树链式结构的遍历访问——前中后序

最开始接触树的时候,因为并不是二叉树,所以我们并不知道一个节点最多有几个度,所以我们要用链表来实现树的话就需要用孩子兄弟法 然后我们认识了完全二叉树,因为它是从左到右都满的二叉树,所以我们可以用顺序表&#…

【数据结构】二叉树的顺序结构及实现

目录 1. 二叉树的顺序结构 2. 堆的概念及结构 3. 堆的实现 3.1 堆向下调整算法 3.2 堆的创建 3.3 建堆时间复杂度 3.4 堆的插入 3.5 堆的删除 3.6 堆的代码实现 4. 堆的应用 4.1 堆排序 4.2 TOP-K问题 1. 二叉树的顺序结构 普通的二叉树是不适合用数组来存储的&…

【算法-动态规划】贝尔曼福特算法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

面试经典 150 题 2 —(双指针)— 392. 判断子序列

392. 判断子序列 方法一 class Solution { public:bool isSubsequence(string s, string t) {int top 0, bottom 0;int tlength t.length(), slength s.length();if(slength 0){return true;}while(top < tlength){if(s[bottom] t[top]){bottom;}if(bottom slength)…

C++DAY43

#include <iostream>using namespace std;//封装 沙发 类 class Sofa { private:string living; public:Sofa(){cout << "沙发的无参构造函数" << endl;}Sofa(string l):living(l){cout << "沙发的有参构造函数" << endl;}v…

创建一个基本的win32窗口

1.建立一个窗口的基本步骤 &#xff08;1&#xff09;向系统注册一个窗体类 &#xff08;2&#xff09;根据窗体类创建窗口 &#xff08;3&#xff09;进入消息循环 2.程序结构 (1)主函数的输入参数 int WINAPI WinMain( HISTANCE hInstance,//当前窗口的句柄 HINSTANCE hPr…

10.9~10.10

触发器方程 触发器之间的转化 触发器需要输入和输出 对于D触发器&#xff0c;只需要D信号的输入 对于jk触发器&#xff0c;至少需要原状态的与非信号&#xff0c;并且需要j,k信号 假如确定y2,则D触发器需要什么D信号&#xff0c;是需要卡诺图确定 j-k触发器需要什么jk信号…

NewStarCTF 2023 公开赛道 WEEK2|Crypto

目录 T1.滴啤 T2.不止一个pi T3.halfcandecode T4.Rotate Xor T5.broadcast T6.partial decrypt T1.滴啤 下载题目附件&#xff0c;我们获得到以下代码。 from Crypto.Util.number import * import gmpy2 from flag import flag def gen_prime(number):p getPrime(numb…

【java基础学习】之环境变量的配置

java环境变量的配置 第一步&#xff1a;打开电脑->属性->高级系统设置 第二步&#xff1a;点开环境变量 第三步&#xff1a;找到path&#xff08;windows系统执行命令时要搜寻的路径&#xff09; 将按照的bin路径放到新增到path下面&#xff1a; 运行cmd&#xff0c;然…

切换至root用户时,命令提示符颜色为白色,如何修改?

当我切换至root用户时&#xff0c;发现命令提示符里的内容全部为白色&#xff0c;如图所示&#xff1a; 这让人看着不愉快&#xff0c;上网先搜索下解决方案&#xff1a;【切换到 root 账户字体全是白的&#xff0c;怎么改颜色啊】- 百度贴吧&#xff0c;但是这个解决方案只是…

Spring 环境安装配置

Spring 环境安装配置 目录 Spring 环境安装配置 第1步 - 安装Java开发工具包&#xff08;JDK&#xff09;&#xff1a; 步骤2 - 安装Apache通用日志API&#xff1a; 第3步 - 安装Eclipse集成开发环境 第4步 - 安装Spring框架库 本教程将指导您如何准备开发环境并使用 Spring …

【算法-动态规划】不同路径

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

python sqlalchemy(ORM)- 01 简单使用

[doc] 简介 sqlalchemy 是python操作sql数据库的工具&#xff0c;是一个对象关系映射的框架&#xff1b;在python中提供高效、高性能的数据库访问&#xff0c;企业级的数据持久化模式&#xff1b;pypi 地址sqlalchemy官网 sqlalchemy架构 sql操作是独立于ORM操作的&#xf…

选择智慧公厕解决方案,开创智慧城市公共厕所新时代

在城市建设和发展中&#xff0c;公厕作为一个不可或缺的城市基础设施&#xff0c;直接关系到城市形象的提升和居民生活品质的改善。然而&#xff0c;传统的公厕存在着管理不便、卫生状况差、设施陈旧等问题。为了解决这些困扰着城市发展的难题&#xff0c;智慧公厕源头厂家广州…

ABB机器人的MoveL和MoveJ运动指令基本功能介绍

ABB机器人的MoveL和MoveJ运动指令基本功能介绍 MoveL指令 该指令是一种线性的运动指令&#xff0c;通过该指令可以使机器人工具末端TCP点以恒定的速度直线移动到目标点位置。 运动的特点&#xff1a;  路径确定且唯一&#xff1b;  始终是直线 应用场景&#xff1a;弧焊…

chatglm.cpp使用手记

chatglm.cpp AI搭建 1.环境准备2 githup下载项目3 安装加载和量化拥抱面模型所需的软件包4 准备编译环境5 开始编译项目6 模型转换7 CLI 验证8 web 验证9 api验证10 遗留问题 1.环境准备 cat /etc/os-release NAME"Ubuntu" VERSION"20.04 LTS (Focal Fossa)&qu…

新手教程!制作电子期刊的必备网站

随着数字时代的到来&#xff0c;电子期刊已经成为一种重要的阅读方式。无论是为了学习、工作还是娱乐&#xff0c;电子期刊都以其方便、快捷、多样化的特点&#xff0c;越来越受到人们的欢迎。 对于想要制作电子期刊的新手来说&#xff0c;首先需要找到一些专业的工具来制作电子…