| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 屏幕篇—如何最快速驱动LCD屏 -> 正文阅读 |
|
[嵌入式]屏幕篇—如何最快速驱动LCD屏 |
屏幕篇—如何最快速驱动LCD屏前言 首先,我们先了解一下LCD(Liquid Crystal Display),即液晶显示器,主要由玻璃基板、背光、驱动IC组成,具体如下图。 全彩LCD,是一种全彩显示屏,一个像素点可以是RGB565或者RGB888格式(R红色、G绿色、B蓝色就是常说的三基色),可以显示各种颜色。 不同接口的屏幕支持的分辨率都不一样。我们这里主要讲解的是MCU屏—正点原子2.8寸LCD屏,该屏自带SRAM,驱动简单,大部分单片机都能驱动。其实还有一类是SPI接口的支持更小分辨率的屏幕。 通过手册查阅,可以发现IM[3:0]引脚可以选择接口,这就需要结合2.8寸LCD屏原理图进行查看了。 通过上图,我们就很清楚看到,我们的LCD屏幕是支持使用8位或者16位MCU接口的,不过默认的是16位。所以说,我们的2.8寸LCD屏使用的是16位MCU接口。使用16位MCU接口的显示速度比8位的要快一倍。到这里,我们对于LCD的用什么接口已经很清楚了。 简单来说,LCD屏(MCU接口)驱动的核心:驱动LCD驱动芯片。 只要我们把每一步都了解清楚,就相当于掌握了LCD屏幕的驱动了。 第一步:掌握8080时序 简单来说,这里就是我们用来驱动LCD屏幕用到的引脚。在了解引脚的功能后,就可以通过查看手册的时序图,写出读写函数了。 首先拉低CS线选中器件,然后根据写入的内容是数据(RS=1)还是命令(RS=1)进行拉低或拉高RS线,在WR的上升沿,把内容写入LCD驱动IC中,最后拉高CS线释放片选,而RD是读信号保持高电平即可。 8080读时序 首先拉低CS线选中器件,然后根据操作的内容是数据(RS=1)还是命令(RS=1)进行拉低或拉高RS线,在RD的上升沿,把内容读取到MCU,最后拉高CS线释放片选,而WR是写信号保持高电平即可。 从这里可以知道,我们8080时序操作可分为写数据、写命令、读数据、读命令(没用到)四种。基于写数据,写命令就可以完成初始化LCD操作,也就是发送初始化序列。 通常我们想验证一下我们的读写函数是否正确,看看能否读取到器件的ID。 发送完0xD3指令后,后面跟了4个参数,最后2个参数才是有用的,读出的是0x93和0x41,刚好是我们控制器ILI9341数字部分。这里特别注意:不同芯片读取ID的指令是不一样的,不要张冠李戴。 发送完0x36指令后,紧跟一个参数,参数里的MX/MY/MV共同控制GRAM的扫描方向以及BGR控制RGB/BGR顺序。默认LCD扫描方向为从左到右,从上到下。 当我们设置好LCD扫描方向后,显示内容时就有很大灵活性,只需要设置一次坐标,然后不停往LCD填充颜色数据即可,大大提高了显示速度。 0x2A指令带有4个参数,这里就是2个坐标值SC和EC,也就是列地址的起始值和结束值。其实在设置x坐标时,我们可以只带2个参数即设置SC即可,因为EC没有变化时,我们只设置一次即可,从而提高了速度,不用每次都多发两次数据。 0x2B指令也是带有4个参数,这里就是2个坐标值SP和EP,也就是页地址的起始值和结束值。其实在设置y坐标时,我们可以只带2个参数即设置SP即可,因为EP没有变化时,我们只设置一次即可,从而提高了速度,不用每次都多发两次数据。 当发送0x2C指令之后,数据线变为16位,可以开始写入GRAM数据,即把一个个像素点的颜色值写入。在默认扫描方向(从左到右,从上到下),设置好起始坐标后(0x2A设置SC,0x2B设置SP),每写入一个颜色值,GRAM地址将会自动自增1(SC++),如果碰到EC,则回到SC,同时SP++,一直到坐标(EC,EP)结束,期间不需要再次设置坐标,大大提高了写入速度。 当ILI9341收到0x2E指令后,第一次输出的是dummy数据,也就是无效数据,从第二次开始,读取的才是有效的GRAM数据(需要通过0x2A和0x2B设置位置),输出规律如上图:R1G1B1R2G2B2R3G3…。如果我们只需要读取一个点的颜色值,只需要接收到参数3即可;连续读取的话,就按上述规律去接收即可。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:53:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |