ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

嵌入式工程师成长之路(十八)之ILI9341 液晶控制器

2021-06-21 16:33:20  阅读:386  来源: 互联网

标签:控制器 SP 嵌入式 LCD 指令 GRAM 设置 ILI9341


ILI9341 液晶控制器详解

1、ILI9341 液晶控制器简介:
ILI9341 液晶控制器自带显存,其显存总大小为 172800(24032018/8),即 18 位模式(26万色)下的显存量。在 16 位模式下,ILI9341 采用 RGB565 格式存储颜色数据,此时 ILI9341的 18 位数据线与 MCU 的 16 位数据线以及 LCD GRAM 的对应关系如图所示:
在这里插入图片描述
从图中可以看出,ILI9341 在 16 位模式下面,数据线有用的是:D17~D13 和 D11~D1,D0和 D12 没有用到,ILI9341 的 D17~D13 和 D11~D1 对应 MCU 的 D15~D0。
MCU 的 16 位数据,最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。另外,特别注意 ILI9341 所有的指令都是 8 位的(高 8 位无效),且参数除了读写 GRAM 的时候是 16 位,其他操作参数,都是 8 位的
2、 ILI9341 的几个重要命令
(1)0XD3,读 ID4 指令
用于读取 LCD 控制器的 ID
在这里插入图片描述
从上表可以看出,0XD3 指令后面跟了 4 个参数,最后 2 个参数,读出来是 0X93 和 0X41,是控制器 ILI9341 的数字部分,通过该指令,即可判别所用的 LCD 驱动器是什么型号,就可以根据控制器的型号去执行对应驱动 IC 的初始化代码
(2):0X36,存储访问控制指令
可以控制 ILI9341 存储器的读写方向,,简单的说,就是在连续写 GRAM 的时候,可以控制 GRAM 指针的增长方向,从而控制显示方式(读 GRAM 也是一样)
在这里插入图片描述
从上表可以看出,0X36 指令后面,紧跟一个参数,这里我们主要关注:MY、MX、MV这三个位,通过这三个位的设置,我们可以控制整个 ILI9341 的全部扫描方向
在这里插入图片描述
比如显示 BMP 图片,BMP 解码数据,就是从图片的左下角开始,慢慢显示到右上角,如果设置 LCD 扫描方向为从
左到右,从下到上,那么我们只需要设置一次坐标,然后就不停的往 LCD 填充颜色数据即可,这样可以大大提高显示速度。
(3)0X2A,列地址设置指令
在从左到右,从上到下的扫描方式(默认)时,该指令用于设置横坐标(x 坐标)
在这里插入图片描述
该指令带有 4 个参数,实际上是 2 个坐标值:SC 和 EC,即列地址的起始值和结束值,SC 必须小于等于 EC,且 0≤SC/EC≤239。一般在设置 x 坐标的时候,只需要带 2 个参数即可,也就是设置 SC 即可,因为如果 EC 没有变化,
在初始化 ILI9341 的时,只需设置一次即可,从而提高速度。
(4)0X2B,页地址设置指令
在从左到右,从上到下的扫描方式(默认)时,该指令用于设置纵坐标(y 坐标)。
在这里插入图片描述
该指令带有 4 个参数,实际上是 2 个坐标值:SP 和 EP,即页地址的起始值和结束值,SP 必须小于等于 EP,且 0≤SP/EP≤319。一般在设置y坐标的时候,只需要带 2 个参数即可,也就是设置 SP 即可,因为如果 EP 没有变化,只需在初始化 ILI9341 时设置一次即可,从而提高速度。
(5)0X2C,写 GRAM 指令
在发送该指令之后,我们便可以往 LCD的 GRAM 里面写入颜色数据了,该指令支持连续写
在这里插入图片描述
从上表可知,在收到指令 0X2C 之后,数据有效位宽变为 16 位,可以连续写入 LCD GRAM 值,而 GRAM 的地址将根据 MY/MX/MV 设置的扫描方向进行自增。例如:假设设置的是从左到右,从上到下的扫描方式,那么设置好起始坐标(通过 SC,SP 设置)后,每写入一个颜色值,GRAM 地址将会自动自增 1(SC++),如果碰到 EC,则回到 SC,同时 SP++,一
直到坐标:EC,EP 结束,其间无需再次设置的坐标,从而大大提高写入速度。
(6)0X2E,读 GRAM 指令
用于读取 ILI9341 的显存(GRAM)
在这里插入图片描述
ILI9341 在收到该指令后,第一次输出的是dummy 数据,也就是无效的数据,第二次开始,读取到的才是有效的 GRAM 数据(从坐标:SC,SP 开始),输出规律为:每个颜色分量占 8 个位,一次输出 2 个颜色分量。比如:第一次输出是 R1G1,随后的规律为:B1R2→G2B2→R3G3→B3R4→G4B4→R5G5… 以此类推。如果只需要读取一个点的颜色值,那么只需要接收到参数 3 即可,如果要连续读取(利用 GRAM地址自增,方法同上),那么就按照上述规律去接收颜色数据。

标签:控制器,SP,嵌入式,LCD,指令,GRAM,设置,ILI9341
来源: https://blog.csdn.net/lostlll/article/details/118083538

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有