嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

news2024/11/26 12:38:46

主要介绍LCD显示的基本原理,涉及像素、分辨率、颜色模型、RGB888等格式、Framebuffer、8080接口、RGB接口。

参考资料:嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

1.LCD显示出图片的基本原理

LCD作为显示器,它的显示原理和图片是一样的。

图片可以看作由一个一个点(即像素pixel)组成。每行有xres个像素,有yres行,则这个图片的分辨率(resolution)是:xres * yres。

同理,LCD屏幕也是由一个个像素点组成,若要显示一张相同分辨率的图片即把LCD上和图片对应位置的像素修改成同样的颜色。

我们现在的目标变成了修改LCD上一个点的颜色。怎么表示颜色?肯定是发数据给LCD,所以问题变成数据和颜色之间是什么关系?

2.颜色基本知识

颜色有很多颜色模型,这方面我不是专业的,但是只需要知道,颜色模型相当于用不同的格式来描述一个颜色。常见的有RGB、YUV、HSV、HSI等。最常用的为RGB,我们从RGB入手。

RGB模型用红绿蓝三原色来描述一个颜色,所有颜色都是红绿蓝混合而成。

所以你可以认为一个像素点上包含了RGB三种数据。三个数据合一即一个像素点上的数据。这个数据是多少位的?这就出现了一个概念:bpp(bits per pixel),每个像素用多少位来表示。

可以用24位数据来表示红绿蓝,也可以用16位(还有其他),比如:

24bpp:RGB888实际上会用到32位,其中8位未使用,其余24位中分别用8位表示红(R)、绿(G)、蓝(B)

16bpp:有RGB565RGB555

    • RGB565:用5位表示红、6位表示绿、5位表示蓝

    • RGB555:16位数据中用5位表示红、5位表示绿、5位表示蓝,浪费一位

现在知道了数据和颜色之间的关系,数据如何到像素上?

3.Framebuffer和LCD控制器

前面已知,让LCD显示图片,就是修改LCD上的每一个像素。全部LCD像素数据合起来存储的地方(也不一定是全部,总之就是存储了数据)叫做Framebuffer,frame为帧,一幅图片可叫做一帧,buffer为缓存。

LCD控制器(LCD Controller)从Framebuffer中取出数据,修改LCD。

所以要驱动LCD有一个工作就是设置LCD控制器。先不讲怎么设置,假设我们会设置了。

4.两大类LCD

Framebuffer可以在LCD内,也可以在外部,这就使得LCD分成了两大类。

一类适用于性能弱的单片机如stm32f1、51,称为LCD模组(LCM)

它集成了Framebuffer,LCD控制器,LCD屏幕

一类适用于性能强的MPU\SOC如S3C2440、IMX6ULL,它只有LCD屏幕,LCD控制器在SOC内,Framebuffer可能是外接的内存。

显然,构造不一样,LCD和芯片之间接口肯定不一样,LCM和单片机通信的接口一般为8080接口。LCD屏幕和SOC通信的接口一般为RGB接口

5.LCD接口

介绍两种常用的接口

5.18080接口

对于LCM的接口8080非常简单,就和内存差不多。

需要读数据,所以有一个读信号RD

需要写数据,所以有一个写信号WR

需要分辨这个模组和其他东西,所以有一个片选信号CS

需要传输数据,需要数据线DB0-DB15

需要分辨传输的地址,所以需要地址线,但是地址线和数据线共用,通过RS信号来分辨DB0-DB15上传输的是地址还是数据。

5.2RGB接口

RGB接口即LCD控制器和LCD屏幕之间的接口。可以把原理认为是LCD控制器去一个一个修改像素。

修改了一个像素后需要知道什么时候切换下一个像素,所以有点时钟信号DCLK;

需要知道什么时候改完了一行像素(因为要到下一行去),所以有水平方向同步信号HSYNC(Horizontal Synchronization);

需要知道什么时候全部改完(因为改完要回到第一个位置),所以有垂直方向同步信号VSYNC(Vertical Synchronization);

需要有数据,所以有RGB三组线;

在切换的时候(切换到下一行,切换到首位置)时数据无效,所有需要数据使能信号DE。

看似比较复杂,其实也就是设置LCD控制器。

到这我们就明白了,无论是哪一类的LCD,我们需要做的工作是,设置LCD控制器,准备数据。根据不同LCD有不同的驱动方式和数据格式,得根据LCD的手册来确定,在今后的文章中将给出具体例子。

最后附上所有知识点思维导图

更多内容与 参考资料:嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)

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

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

相关文章

Golang每日一练(leetDay0083) 汇总区间、多数元素II

目录 228. 汇总区间 Summary Ranges 🌟 229. 多数元素 II Majority Element ii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专…

WPF绘制深圳地铁路线图

经常坐地铁,却不知道地铁多少条线路?哪个站下车?今天就带领大家熟悉并绘制深圳地铁路线图。 WPF在绘制矢量图方面有非常强大的优势,利用WPF可以绘制出各种矢量图形,如线,圆,多边形,…

SQL:批量获取次月留存和滚动留存

一、批量获取每月的次月留存率 问题描述: 现在有一份用户活跃数据,想要取每个月的用户在次月的留存,结果如下表 month活跃用户数次月留存用户数2023-011000050002023-021100060002023-03150007500... 思路: 先生成每个日期对…

Hadoop 原理介绍

1 文件系统和分布式文件系统 1.1 文件系统 文件系统:一种存储和组织数据的方法 实现了数据的存储、分级组织、访问、获取等操作使得用户对文件的访问和查找更容易使用树形目录的抽象概念代替了硬盘等物理设备中数据块的概念 ——>用户不必关系数据底层存在硬盘…

Java与分布式架构:微服务和RPC框架的应用和设计思路

章节一:引言 在当今互联网时代,大规模、高并发的应用成为了主流。为了应对这些挑战,软件架构趋向于分布式架构的设计。本文将重点讨论Java语言在分布式架构中的应用,以及微服务和RPC框架在设计中的关键思路和技术案例。 章节二&…

chatgpt赋能python:Python倒序排列的全面指南

Python倒序排列的全面指南 在Python中,几乎所有的数据结构都支持倒序排列。倒序排列是许多编程问题的解决方案,如查找最后一个元素,寻找最大值或最小值等等。在这篇文章中,我们将深入探讨Python中倒序排列的使用方法和技巧&#…

Flutter 笔记 | Flutter 核心原理(五)Box 布局模型和 Sliver 布局模型

根据前文我们已经从宏观上得知:Layout流程的本质是父节点向子节点传递自己的布局约束Constraints,子节点计算自身的大小(Size),父节点再根据大小信息计算偏移(Offset)。在二维空间中&#xff0c…

Android逆向猿人学2022年app比赛第五题双向验证SSLpinning(步步验证)

SSLpinnig 前言一、起步二、抓包三、分析四、验证第一种方法:第二种方法: 借鉴 前言 这题在抓包方面会有点小问题,但是最后结果是正确出来了,如果有了解后面这个问题的读者,请多指教,十分感谢。 一、起步…

C Primer Plus第十五章编程练习答案

学完C语言之后,我就去阅读《C Primer Plus》这本经典的C语言书籍,对每一章的编程练习题都做了相关的解答,仅仅代表着我个人的解答思路,如有错误,请各位大佬帮忙点出! 由于使用的是命令行参数常用于linux系…

串口通信简介

1. 数据通信的基础概念 1.1 数据通信方式 按数据通信方式分类,可分为串行通信和并行通信两种。串行和并行的对比如下图所示: 串行通信的基本特征是数据逐位顺序依次传输,优点是传输线少、 布线成本低 、 灵活度高等优点,一般用…

docker架构速看(2)-镜像

docker架构细看(2)-镜像 ​ 上一章讲了Docker服务端的启动,这一章我们来看Docker中的镜像,需要对容器镜像分层存储,容器存储驱动有一定了解,参考 容器技术原理(一):从根本上认识容器镜像 ​ Docker篇之镜像存储-OverlayFS和联合…

JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO

JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO 这是一篇总结文章。 文章目录 JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO1、学习技术的梳理1.1、jdbc的引入1.2、ResultSet[结果集]1.3API小结 2、数据库连接池3、Apache公司的DBUtils工具-BasicDAO…

在页面上画一个三角形然后点击内部触发事件

在HTML页面上创建一个canvas元素。使用JavaScript绘制三角形并将其填充。您可以使用canvas的API来绘制形状,例如beginPath()和lineTo()等。将一个事件监听器绑定到canvas元素上,以便在单击三角形时触发事件…

Rust每日一练(Leetday0017) 字母异位词分组、幂函数、N皇后

目录 49. 字母异位词分组 Group Anagrams 🌟🌟 50. 幂函数 Pow(x, n) 🌟🌟 51. N 皇后 N-Queens 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日…

chatgpt赋能python:Python代码输出666——让你快速入门Python编程

Python代码输出666——让你快速入门Python编程 引言 Python是一种面向对象、解释型计算机程序设计语言。Python广泛应用于Web开发、科学计算、数据分析及人工智能等领域,具有优雅、明确、简单的特点,而且学习起来十分容易。如果你是一名初学者&#xf…

chatgpt赋能python:Python修改信息的方法和应用

Python修改信息的方法和应用 Python是一种简单易学、高效、功能强大的编程语言,被广泛应用于各种领域。其中,修改信息是Python最常用的功能之一。无论是在数据分析、网络爬虫还是Web开发中,我们都需要通过Python对数据进行修改、更新和删除等…

Jetson nano之ROS入门 - - 机器人建模与仿真

文章目录 前言一、URDF建模1. URDF语法详解a. robotb. linkc. joint 2. URDF机器人建模实操 二、Xacro宏优化1、 Xacro宏语法详解2、 Xacro建模实操 三、Rviz与Gazebo仿真1、Gazebo集成URDF建模语法基础2、Gazebo集成URDF实操 总结 前言 在ROS中,机器人建模和仿真是…

Spring(四)基于xml的自动装配

自动装配:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值。 首先我们来熟悉三层架构的创建过程: 三层架构为controller层,service层,dao层。 在service层里面创建ser…

ShareX_一款好用的截图工具安装- Window

择心】向大家介绍and安装ShareX ShareX 免费、开源、轻量多区域截图无缝处理截图屏幕录制、文件共享各种实用工具(如拾色器,屏幕拾色器,尺子,图像编辑器,图像合并,图像分割器,生成图像缩略图&am…

mysql学+练

从开始到放弃! 开始 mysql -uroot -p123456退出命令 exit 或者 quit注释 # show databases; 单行注释 -- show databases; 单行注释 /* 多行注释 show databases; */DDL操作数据库 创建 /* 方式1 直接指定数据库名进行创建 */ CREATE DATABASE db1; /* 方式2 …