00. 目录

文章目录

  • 00. 目录
  • 01. TFTLCD简介
  • 02. TFTLCD原理图
  • 03. TFTLCD接口描述
  • 04. TFTLCD驱动芯片
  • 05. ILI9341命令
  • 06. TFTLCD使用流程
  • 07. 附录
  • 08. 声明

01. TFTLCD简介

TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。

该模块有如下特点:
1,2.4’/2.8’/3.5’/4.3’/7’ 5 种大小的屏幕可选。
2,320×240 的分辨率(3.5’分辨率为:320480,4.3’和 7’分辨率为:800480)。
3,16 位真彩显示。
4,自带触摸屏,可以用来作为控制输入。

02. TFTLCD原理图

我们以 2.8 寸的 ALIENTEK TFTLCD 模块为例介绍,该模块支持 65K 色显示,显示分辨率为 320×240,接口为16位的 80并口,自带触摸屏。

模块原理图

03. TFTLCD接口描述

TFTLCD 模块采用 2*17 的 2.54 公排针与外部连接,接口定义如图所示:

ALIENTEK TFTLCD 模块采用 16 位的并方式与外部连接,之所以不采用 8 位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用 8 位数据线,就会比 16 位方式慢一倍以上,我们当然希望速度越快越好,所以我们选择 16 位的接口。

该模块的 80 并口有如下一些信号线:

CS:TFTLCD 片选信号。

WR:向 TFTLCD 写入数据。

RD:从 TFTLCD 读取数据。

D[15:0]:16 位双向数据线。

RST:硬复位 TFTLCD。

RS:命令/数据标志(0,读写命令;1,读写数据)。

04. TFTLCD驱动芯片

ALIENTEK 提供 2.8/3.5/4.3/7 寸等不同尺寸的 TFTLCD 模块,其驱动芯片有很多种类型,比如有:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/SPFD5408/SSD1289/1505/B505/C505/NT35310/NT35510/SSD1963 等,这里我们仅以 ILI9341 控制器为例进行介绍,其他的控制基本都类似,我们就不详细阐述了。

ILI9341 液晶控制器自带显存,其显存总大小为 172800(24032018/8),即 18 位模式(26万色)下的显存量。在 16 位模式下,ILI9341 采用 RGB565 格式存储颜色数据,此时 ILI9341的 18 位数据线与 MCU 的 16 位数据线以及 LCD GRAM 的对应关系如图所示:

从图中可以看出,ILI9341 在 16 位模式下面,数据线有用的是:D17~D13 和 D11~D1,D0和 D12 没有用到,实际上在我们 LCD 模块里面,ILI9341 的 D0 和 D12 压根就没有引出来,这样,ILI9341 的 D17~D13 和 D11~D1 对应 MCU 的 D15~D0。

这样 MCU 的 16 位数据,最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。另外,特别注意 ILI9341 所有的指令都是 8 位的(高 8 位无效),且参数除了读写 GRAM 的时候是 16 位,其他操作参数,都是 8 位的,这个和 ILI9320 等驱动器不一样,必须加以注意。

05. ILI9341命令

ILI9341 几个重要命令,因为 ILI9341 的命令很多,我们这里就不全部介绍了,有兴趣的大家可以找到 ILI9341 的 datasheet 看看。里面对这些命令有详细的介绍。我们将介绍:0XD3,0X36,0X2A,0X2B,0X2C,0X2E 等 6 条指令。

读 ID4 指令

0XD3,这个是读 ID4 指令,用于读取 LCD 控制器的 ID,该指令如表所示:

0XD3 指令后面跟了 4 个参数,最后 2 个参数,读出来是 0X93 和 0X41,刚好是我们控制器 ILI9341 的数字部分,从而,通过该指令,即可判别所用的 LCD 驱动器是什么型号,这样,我们的代码,就可以根据控制器的型号去执行对应驱动 IC 的初始化代码,从而兼容不同驱动 IC 的屏,使得一个代码支持多款 LCD。

存储访问控制指令

0X36,这是存储访问控制指令,可以控制 ILI9341 存储器的读写方向,简单的说,就是在连续写 GRAM 的时候,可以控制 GRAM 指针的增长方向,从而控制显示方式(读 GRAM 也是一样)。该指令如表所示:

从上表可以看出,0X36 指令后面,紧跟一个参数,这里我们主要关注:MY、MX、MV这三个位,通过这三个位的设置,我们可以控制整个 ILI9341 的全部扫描方向,如表所示:

这样,我们在利用 ILI9341 显示内容的时候,就有很大灵活性了,比如显示 BMP 图片,BMP 解码数据,就是从图片的左下角开始,慢慢显示到右上角,如果设置 LCD 扫描方向为从左到右,从下到上,那么我们只需要设置一次坐标,然后就不停的往 LCD 填充颜色数据即可,这样可以大大提高显示速度。

列地址设置指令

0X2A,这是列地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置横坐标(x 坐标),该指令如表 所示:

在默认扫描方式时,该指令用于设置 x 坐标,该指令带有 4 个参数,实际上是 2 个坐标值:SC 和 EC,即列地址的起始值和结束值,SC 必须小于等于 EC,且 0≤SC/EC≤239。一般在设置 x 坐标的时候,我们只需要带 2 个参数即可,也就是设置 SC 即可,因为如果 EC 没有变化,我们只需要设置一次即可(在初始化 ILI9341 的时候设置),从而提高速度。

页地址设置指令

0X2B,是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y 坐标)。该指令如表 所示:

在默认扫描方式时,该指令用于设置 y 坐标,该指令带有 4 个参数,实际上是 2 个坐标值:SP 和 EP,即页地址的起始值和结束值,SP 必须小于等于 EP,且 0≤SP/EP≤319。一般在设置y 坐标的时候,我们只需要带 2 个参数即可,也就是设置 SP 即可,因为如果 EP 没有变化,我们只需要设置一次即可(在初始化 ILI9341 的时候设置),从而提高速度。

写 GRAM 指令

0X2C,该指令是写 GRAM 指令,在发送该指令之后,我们便可以往 LCD的 GRAM 里面写入颜色数据了,该指令支持连续写,指令描述如表所示:

在收到指令 0X2C 之后,数据有效位宽变为 16 位,我们可以连续写入 LCDGRAM 值,而 GRAM 的地址将根据 MY/MX/MV 设置的扫描方向进行自增。例如:假设设置的是从左到右,从上到下的扫描方式,那么设置好起始坐标(通过 SC,SP 设置)后,每写入一个颜色值,GRAM 地址将会自动自增 1(SC++),如果碰到 EC,则回到 SC,同时 SP++,一直到坐标:EC,EP 结束,其间无需再次设置的坐标,从而大大提高写入速度。

读 GRAM 指令

0X2E,该指令是读 GRAM 指令,用于读取 ILI9341 的显存(GRAM),该指令在 ILI9341 的数据手册上面的描述是有误的,真实的输出情况如表所示:

该指令用于读取 GRAM,如表所示,ILI9341 在收到该指令后,第一次输出的是dummy 数据,也就是无效的数据,第二次开始,读取到的才是有效的 GRAM 数据(从坐标:SC,SP 开始),输出规律为:每个颜色分量占 8 个位,一次输出 2 个颜色分量。比如:第一次输出是 R1G1,随后的规律为:B1R2→G2B2→R3G3→B3R4→G4B4→R5G5… 以此类推。如果我们只需要读取一个点的颜色值,那么只需要接收到参数 3 即可,如果要连续读取(利用 GRAM地址自增,方法同上),那么就按照上述规律去接收颜色数据。

06. TFTLCD使用流程

任何 LCD,使用流程都可以简单的用以上流程图表示。其中硬复位和初始化序列,只需要执行一次即可。而画点流程就是:设置坐标→写 GRAM 指令→写入颜色数据,然后在 LCD 上面,我们就可以看到对应的点显示我们写入的颜色了。读点流程为:设置坐标→读 GRAM 指令→读取颜色数据,这样就可以获取到对应点的颜色数据了。

07. 附录

7.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

08. 声明

该教程参考了正点原子的《STM32 F4 开发指南》

【STM32】TFTLCD驱动原理相关推荐

  1. stm32 TFTLCD驱动原理(一)

    (1)如图为TFTLCD的原理图,电路相对简单,单纯的LCD屏幕价格在30左右,外围器件也不是很多,如果制作价格便宜简单的操作,具有一定的成本优势. STM32提供FSMC总线可以作为驱动. (2)L ...

  2. STM32 PWM输出原理和直流电机PWM驱动原理详解及例程

    这次讲一讲STM32输出PWM的原理以及PWM可以作为信号传输数据的原理. PWM会有很多地方用到,有控制灯的亮度,控制电机,控制舵机或者其他一些外设,有时候你的单片机所输出的PWM是作为信号去控制, ...

  3. MG995舵机工作原理及基于STM32的驱动源代码

    MG995舵机工作原理及基于STM32的驱动源代码 一·MG995舵机工作原理 1.MG995舵机简介 产品型号 MG995 产品尺寸 40.7*19.7*42.9mm 产品重量 55g 工作扭矩 1 ...

  4. STM32单片机LED显示屏驱动原理与实现

    STM32单片机驱动LED显示屏的原理与实现方法与Arduino类似,但涉及到的具体硬件资源和库函数可能会有所不同.下面是一个详细的介绍: 原理: STM32单片机驱动LED显示屏的原理是通过控制GP ...

  5. STM32+DRV8711驱动步进电机

    步进电机的驱动原理 步进电机的知识涉及到比较多的东西,这里只是简单介绍一下,关于具体的知识之后再补充. 步进电机的驱动原理时期就是电磁感应现象,给步进电机供电流,然后会产生磁场,再合成磁场的方向,驱动 ...

  6. STM32+ULN2003驱动步进电机

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

  7. STM32 GPIO工作原理

    STM32 GPIO工作原理 STM32引脚说明 STM32F103ZET6: 共有7组IO口,每组IO口有16个IO--共16X7=112个IO 编号为:GPIOA,GPIOB--GPIOG,从A到 ...

  8. STM32 FSMC 驱动16脚12864lcd液晶显示屏

    写在前面 在学习了两天STM32 FSMC后,总算是拿这个东西做了第一个应用,关于FSMC是什么东西怎么用,CSDN中有很多介绍,但是,估计新手刚看都是一头雾水(我就是),不过,你仍必须反反复复地看, ...

  9. 基于HAL库STM32串口驱动不定长数据接收

    STM32串口驱动不定长数据接收带环形缓冲区 最新框架代码 使用方法 源码 串口接口文件 环形缓冲区接口文件 移植图示 使用涉及4个文件, UART_Port.c UART_Port.h Circul ...

  10. 【电机应用控制】——直流无刷电机驱动原理有感闭环控制无感闭环控制

    ​ 目录 前言 一.概述 二.驱动原理 ​编辑 三.(有感)速度闭环控制 四.无感控制(无位置传感器) 四.(无感)速度闭环控制 总结 前言 声明:学习笔记来自正点原子B站教程,仅供学习交流!! 一. ...

最新文章

  1. php imagemagick 漏洞,ImageMagick漏洞EXP简易生成脚本
  2. 年龄和收入对数的线性回归_Logistics回归——分析富士康的员工自杀
  3. mysql Error Code: 1005(errorno:121)解决
  4. centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误
  5. 编译原理(四)之解析语言翻译成三地址代码
  6. LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】
  7. iscsi 同步_群晖六盘位旗舰NAS,一文教你如何解决多设备同步,跨平台协调
  8. fedora 19 gnome 3.8 关闭笔记本盖子的动作
  9. android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...
  10. [20180124]测试SQLNET.EXPIRE_TIME参数3
  11. Python(十七):python的编程规范、PEP8
  12. 七个最佳 GitHub 代码库,让你成为更好的 JavaScript 程序员
  13. 【产品】建立墨菲定律思维模式
  14. 销售管理系统C语言课程设计
  15. byte buddy学习笔记
  16. 2020最新pycharm汉化安装(亲测有效)
  17. JavaScript - 核心语法学习
  18. 如何以创新驱动增长战略
  19. 关于用Java程序实现8421码权限管理 -第三部分
  20. linux系统安全排查方法

热门文章

  1. 谈谈面向对象分析和设计
  2. html写手机登录界面,使用HTML做手机端的登录界面
  3. IMX6ULL操作记录
  4. imx6ull设备树
  5. Windows7包含哪些版本
  6. 【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
  7. 吉林大学线性代数知识点及解题方法
  8. VBA系列(1)——VBA基础知识
  9. 线性和EWMA指数加权移动平均模型
  10. SmartSVN for Mac(SVN客户端)