第十八章TFTLCD显示实验战舰STM32开发板

上传人:lil****ar 文档编号:333428684 上传时间:2022-09-02 格式:PDF 页数:26 大小:2MB
返回 下载 相关 举报
第十八章TFTLCD显示实验战舰STM32开发板_第1页
第1页 / 共26页
第十八章TFTLCD显示实验战舰STM32开发板_第2页
第2页 / 共26页
第十八章TFTLCD显示实验战舰STM32开发板_第3页
第3页 / 共26页
第十八章TFTLCD显示实验战舰STM32开发板_第4页
第4页 / 共26页
第十八章TFTLCD显示实验战舰STM32开发板_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第十八章TFTLCD显示实验战舰STM32开发板》由会员分享,可在线阅读,更多相关《第十八章TFTLCD显示实验战舰STM32开发板(26页珍藏版)》请在金锄头文库上搜索。

1、 244 第十八章第十八章 TFTLCD 显示实验显示实验 上一章我们介绍了 OLED 模块及其显示,但是该模块只能显示单色/双色,不能显示彩色,而且尺寸也较小。本章我们将介绍 ALIENTEK 2.8 寸 TFT LCD 模块,该模块采用 TFTLCD 面板,可以显示 16 位色的真彩图片。在本章中,我们将利用战舰 STM32 开发板上的 LCD 接口,来点亮 TFTLCD,并实现 ASCII 字符和彩色的显示等功能,并在串口打印 LCD 控制器 ID,同时在 LCD 上面显示。本章分为如下几个部分: 18.1 TFTLCD 简介 18.2 硬件设计 18.3 软件设计 18.4 下载验证

2、ALIENTEK 战舰STM32开发板w w w .o p e n e d v .c o m 245 18.1 TFTLCD&FSMC 简介简介 本章我们将通过 STM32 的 FSMC 接口来控制 TFTLCD 的显示,所以本节分为两个部分,分别介绍 TFTLCD 和 FSMC。 18.1.1 TFTLCD 简介简介 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT) ,可

3、有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。 上一章介绍了 OLED 模块,本章,我们给大家介绍 ALIENTEK TFTLCD 模块,该模块有如下特点: 1,2.4/2.8/3.53 种大小的屏幕可选。 2,320240 的分辨率(3.5分辨率为:320*480) 。 3,16 位真彩显示。 4,自带触摸屏,可以用来作为控制输入。 本章,我们以 2.8 寸的 ALIENTEK TFTLCD 模块为例介绍,该模块支持 65K 色显示,显示分辨率为 320240,接口为 16 位的 80 并口,自带触摸屏。 该模

4、块的外观图如图 18.1.1.1 所示: 图 18.1.1.1 ALIENTEK 2.8 寸 TFTLCD 外观图 模块原理图如图 18.1.1.2 所示: ALIENTEK 战舰STM32开发板w w w .o p e n e d v .c o m 246 图 18.1.1.2 ALIENTEK 2.8 寸 TFTLCD 模块原理图 TFTLCD 模块采用 2*17 的 2.54 公排针与外部连接,接口定义如图 18.1.1.3 所示: 图 18.1.1.3 ALIENTEK 2.8 寸 TFTLCD 模块接口图 从图 18.1.1.3 可以看出, ALIENTEK TFTLCD 模块采用

5、16 位的并方式与外部连接, 之所以不采用 8 位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用 8 位数据线,就会比 16 位方式慢一倍以上, 我们当然希望速度越快越好, 所以我们选择 16 位的接口。 图 18.1.3还列出了触摸屏芯片的接口,关于触摸屏本章我们不多介绍,后面的章节会有详细的介绍。该模块的 80 并口有如下一些信号线: CS:TFTLCD 片选信号。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D15:0:16 位双向数据线。 ALIENTEK 战舰STM32开发板w w w .o p e n e d v .c o m 247 R

6、ST:硬复位 TFTLCD。 RS:命令/数据标志(0,读写命令;1,读写数据) 。 80 并口在上一节我们已经有详细的介绍了, 这里我们就不再介绍, 需要说明的是, TFTLCD模块的 RST 信号线是直接接到 STM32 的复位脚上,并不由软件控制,这样可以省下来一个 IO口。另外我们还需要一个背光控制线来控制 TFTLCD 的背光。所以,我们总共需要的 IO 口数目为 21 个。这里还需要注意,我们标注的 DB1DB8,DB10DB17,是相对于 LCD 控制 IC 标注的,实际上大家可以把他们就等同于 D0D15,这样理解起来就比较简单一点。 ALIENTEK提供的2.8寸TFTLCD

7、模块, 其驱动芯片有很多种类型, 比如有: ILI9320/ILI9325 /ILI9328/ILI9341/SSD1289/LGDP4531/LGDP4535/R61505/ SPFD5408/ RM68021 等(具体的型号,大家可以通过下载本章实验代码,通过串口或者 LCD 显示查看),这里我们仅以 ILI9320 控制器为例进行介绍,其他的控制基本都类似,我们就不详细阐述了。 ILI9320 液晶控制器自带显存,其显存总大小为 172820(240*320*18/8) ,即 18 位模式(26万色)下的显存量。模块的 16 位数据线与显寸的对应关系为 565 方式,如图 18.1.1.

8、4 所示: 图 18.1.1.4 16 位数据与显存对应关系图 最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。 接下来,我们介绍一下 ILI9320 的几个重要命令,因为 ILI9320 的命令很多,我们这里不可能一一介绍,有兴趣的大家可以找到 ILI9320 的 datasheet 看看。里面对这些命令有详细的介绍。这里我们要介绍的命令列表如表 18.1.1.1 所示: 表 18.1.1.1 ILI9320 常用命令表 R0,这个命令,有两个功能,如果对它写,则最低位为 OSC,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令

9、最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为 93xx 系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。 R3,入口模式命令。我们重点关注的是 I/D0、I/D1、AM 这 3 个位,因为这 3 个位控制了屏幕的显示方向。 AM:控制 GRAM 更新方向。当 AM=0 的时候,地址以行方向更新。当 AM=1 的时候,地址以列方向更新。 I/D1:0:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1, 其关系如图 18.1.1.5 所示: ALIENTEK 战舰STM

10、32开发板w w w .o p e n e d v .c o m 248 图 18.1.1.5 GRAM 显示方向设置图 通过这几个位的设置,我们就可以控制屏幕的显示方向了,这种方法虽然简单,但是不是很通用,比如不同的液晶,可能这里差别就比较大,有的甚至无法通用!比如 9341 和 9320 就完全不通用。 R7,显示控制命令。该命令 CL 位用来控制是 8 位彩色,还是 26 万色。为 0 时 26 万色,为 1 时八位色。D1、D0、BASEE 这三个位用来控制显示开关与否的。当全部设置为 1 的时候开启显示,全 0 是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。 R32

11、,R33,设置 GRAM 的行地址和列地址。R32 用于设置列地址(X 坐标,0239) ,R33用于设置行地址(Y 坐标,0319) 。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。 R34, 写数据到 GRAM 命令, 当写入了这个命令之后, 地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。 R80R83,行列 GRAM 地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为 240*320,但是有时候我们只需要在其中的一部

12、分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据 R3 的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。 命令部分,我们就为大家介绍到这里,我们接下来看看要如何才能驱动 ALIENTEK TFTLCD 模块, 这里 TFTLCD 模块的初始化和我们前面介绍的 OLED 模块的初始化框图是一样的,只是初始化代码部分不同。接下来我们也是将该模块用来来显示字符和数字。通过以上介绍,我们可以得出 TFTLCD 显示需要的相关设置步骤如下: 1)设置)设置 STM32

13、与与 TFTLCD 模块相连接的模块相连接的 IO。 这一步,先将我们与 TFTLCD 模块相连的 IO 口进行初始化,以便驱动 LCD。这里我们用到的是 FSMC,FSMC 将在 18.1.2 节向大家详细介绍。 2)初始化初始化 TFTLCD 模块。模块。 其实这里就是上和上面 OLED 模块的初始化过程差不多。 通过向 TFTLCD 写入一系列的设置,来启动 TFTLCD 的显示。为后续显示字符和数字做准备。 3)通过函数将字符和数字显示到)通过函数将字符和数字显示到 TFTLCD 模块上。模块上。 ALIENTEK 战舰STM32开发板w w w .o p e n e d v .c o

14、 m 249 这里就是通过我们设计的程序,将要显示的字符送到 TFTLCD 模块就可以了,这些函数将在软件设计部分向大家介绍。 通过以上三步, 我们就可以使用 ALIENTEK TFTLCD 模块来显示字符和数字了, 并且可以显示各种颜色的背景。 18.1.2 FSMC 简介简介 大容量,且引脚数在 100 脚以上的 STM32F103 芯片都带有 FSMC 接口,ALIENTEK 战舰STM32 开发板的主芯片为 STM32F103ZET6,是带有 FSMC 接口的。 FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡接口,STM32 的 FSMC 接口支持

15、包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。FSMC 的框图如图 18.1.2.1 所示: 图 18.1.2.1 FSMC 框图 从上图我们可以看出,STM32 的 FSMC 将外部设备分为 3 类:NOR/PSRAM 设备、NAND设备、PC 卡设备。他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备,比如本章我们用到的 TFTLCD 就是用的 FSMC_NE4 做片选, 其实就是将 TFTLCD 当成 SRAM 来控制。 这里我们介绍下为什么可以把 TFTLCD 当成 SRAM 设备用:首先我们了解下外部 SRAMALIENTEK 战

16、舰STM32开发板w w w .o p e n e d v .c o m 250 的连接, 外部 SRAM 的控制一般有: 地址线 (如 A0A18) 、 数据线 (如 D0D15) 、 写信号 (WE) 、读信号 (OE) 、 片选信号 (CS) , 如果 SRAM 支持字节控制, 那么还有 UB/LB 信号。 而 TFTLCD的信号我们在 18.1.1 节有介绍,包括:RS、D0D15、WR、RD、CS、RST 和 BL 等,其中真正在操作 LCD 的时候需要用到的就只有: RS、 D0D15、 WR、 RD 和 CS。 其操作时序和 SRAM的控制完全类似,唯一不同就是 TFTLCD 有 RS 信号,但是没有地址信号。 TFTLCD 通过 RS 信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,比如我们把 RS 接在 A0 上面,那么当 FSMC 控制器写地址 0 的时候,会使得 A0 变为 0,对 TFTLCD 来说,就是写命令。而 FSMC 写地址 1 的时候,A0 将会变为 1,对 TFTLCD 来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号