tftlcd显示实验

上传人:suns****4568 文档编号:88890505 上传时间:2019-05-12 格式:PDF 页数:15 大小:877.56KB
返回 下载 相关 举报
tftlcd显示实验_第1页
第1页 / 共15页
tftlcd显示实验_第2页
第2页 / 共15页
tftlcd显示实验_第3页
第3页 / 共15页
tftlcd显示实验_第4页
第4页 / 共15页
tftlcd显示实验_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《tftlcd显示实验》由会员分享,可在线阅读,更多相关《tftlcd显示实验(15页珍藏版)》请在金锄头文库上搜索。

1、 166 3.10 TFTLCD显示实验显示实验 上一节我们介绍了 OLED 模块及其显示,但是该模块只能显示单色/双色,不能显示彩色, 这一节我们将介绍 ALIENTEK TFT LCD 模块, 该模块采用 TFTLCD 面板, 可以显示 16 位色的 真彩图片。 本节将利用 TFTLCD 来显示字符和数字, 并显示各种颜色。 本节分为如下几个部分: 3.10.1 TFTLCD 简介 3.10.2 硬件设计 3.10.3 软件设计 3.10.4 下载与测试 167 3.10.1 TFTLCD 简介简介 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transist

2、or-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象 素上都设置有一个薄膜晶体管(TFT) ,可有效地克服非选通时的串扰,使显示液晶屏的静态特 性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。 上一节介绍了 OLED 模块,这一节,我们给大家介绍 ALIENTEK TFTLCD 模块,该模块 有如下特点: 1,2.4/2.8两种大小的屏幕可选。 2,320240 的分辨率。 3,16 位真彩显示。 4,自带触摸屏,可以用来作为控制输入。 5,通用的接口,除了 ALIE

3、NTEK MiniSTM32 开发板,该液晶模块还可以使用在优异特、 STMSKY、红牛等开发板上。 本节,我们以 2.8 寸的 ALIENTEK TFTLCD 模块为例介绍,该模块采用的是显尚光电的 DST2001PH TFTLCD,DST2001PH 的控制器为 ILI9320,采用 26 万色的 TFTLCD 屏,分辨率 为 320240,采用 16 位的 80 并口。 该模块的外观图如下: 图 3.10.1.1 ALIENTEK 2.8 寸 TFTLCD 外观图 模块原理图如下: 168 图 3.10.1.2 ALIENTEK 2.8 寸 TFTLCD 模块原理图 TFTLCD 模块采

4、用 2*17 的 2.54 公排针与外部连接,接口图如下: 图 3.10.1.3 ALIENTEK 2.8 寸 TFTLCD 模块接口图 该接口同目前主流的几款 STM32 开发板的接口完全兼容,所以模块除了用在 ALIENTEK MiniSTM32 开发板上,也可以用在其他开发板上,当然你也可以使用其他接口一样的 LCD 模 块放到我们的 ALIENTEK MiniSTM32 开发板上使用。 ALIENTEK TFTLCD 模块采用 80 并口口 方与外部链接,采用 16 位数据线(低了速度太慢,用彩色就没什么效果了) 。该模块的 80 并口 有如下一些信号线: CS:TFTLCD 片选信号

5、。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D15:0:16 位双向数据线。 RST:硬复位 TFTLCD。 RS:命令/数据标志(0,读写命令;1,读写数据) 。 80 并口在上一节我们已经有详细的介绍了, 这里我们就不在介绍, 需要说明的是, TFTLCD 模块的 RST 信号线和 OLED 模块一样,也是直接接到 STM32 的复位脚上,并不由软件控制, 这样可以省下来一个 IO 口。另外我们还需要一个背光控制线来控制 TFTLCD 的背光。所以, 我们总共需要的 IO 口数目为 21 个。 169 模块的控制器为 ILI9320,该控制器自带显存,其显存

6、总大小为 172820(240*320*18/8) , 即 18 位模式(26 万色)下的显存量。模块的 16 位数据线与显寸的对应关系为 565 方式,如下 图所示: 图 3.10.1.4 16 位数据与显存对应关系图 最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。 接下来,我们介绍一下 ILI9320 的几个重要命令,因为 ILI9320 的命令很多,我们这里不 可能一一介绍,有兴趣的大家可以找到 ILI9320 的 datasheet 看看。里面对这些命令有详细的介 绍。这里我们要介绍的命令列表如下: 表 3.10.1.1 ILI9320 常用命

7、令表 R0,这个命令,有两个功能,如果对它写,则最低位为 OSC,用于开启或关闭振荡器。而 如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控制 器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的 初始化。因为 93xx 系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制 器。 R3,入口模式命令。我们重点关注的是 I/D0、I/D1、AM 这 3 个位,因为这 3 个位控制了 屏幕的显示方向。 AM:控制 GRAM 更新方向。当 AM=0 的时候,地址以行方向更新。当 AM=1 的时候,地 址以列方向更新。 I/D

8、1:0: 当更新了一个数据之后, 根据这两个位的设置来控制地址计数器自动增加/减少 1, 其关系如下图: 170 图 3.10.1.5 GRAM 显示方向设置图 通过这几个位的设置,我们就可以控制屏幕的显示方向了。 R7,显示控制命令。该命令 CL 位用来控制是 8 位彩色,还是 26 万色。为 0 时 26 万色, 为 1 时八位色。D1、D0、BASEE 这三个位用来控制显示开关与否的。当全部设置为 1 的时候 开启显示,全 0 是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。 R32,R33,设置 GRAM 的行地址和列地址。R32 用于设置列地址(X 坐标,0239)

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

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

11、与 TFTLCD 模块相连的 IO 口设置为输出,具体使用哪些 IO 口,这里需 要根据连接电路以及 TFTLCD 模块的设置来确定。 2)初始化)初始化 TFTLCD 模块。模块。 其实这里就是上和上面 OLED 模块的初始化过程差不多。 通过向 TFTLCD 写入一系列的设 置,来启动 TFTLCD 的显示。为后续显示字符和数字做准备。 3)通过函数将字符和数字显示到)通过函数将字符和数字显示到 TFTLCD 模块上。模块上。 这里就是通过我们设计的程序,将要显示的字符送到 TFTLCD 模块就可以了,这些函数将 在软件设计部分向大家介绍。 通过以上三步,我们就可以使用 ALIENTEK

12、TFTLCD 模块来显示字符和数字了, 并且可 以显示各种颜色的背景。 171 3.10.2 硬件设计硬件设计 TFTLCD 模块的电路在上一部分已有详细说明了,这里我们介绍 TFTLCD 模块与 ALIETEK MiniSTM32 开发板的连接,MiniSTM32 开发板底板的 LCD 接口和 ALIENTEK TFTLCD 模块直接可以对插,连接如下图: 图 3.10.2.1 TFTLCD 与开发板连接示意图 图中绿色线圈出来的部分就是连接 TFTLCD 模块的接口,这里在硬件上,TFTLCD 模块与 MiniSTM32 开发板的 IO 口对应关系如下: LCD_LED 对应 PC10;

13、LCD_CS 对应 PC9; LCD _RS 对应 PC8; LCD _WR 对应 PC7; LCD _RD 对应 PC6; LCD _D17:1对应 PB15:0; 这些线的连接,MiniSTM32 的内部已经连接好了,我们只需要将 TFTLCD 模块插上去就 好了。实物连接如下图所示: 图 3.10.2.2 TFTLCD 与开发板连接实物图 172 3.10.3 软件设计软件设计 软件设计我们依旧在之前的工程上面增加,首先在 HARDWARE 文件夹下新建一个 LCD 的文件夹。然后打开 USER 文件夹下的工程,新建一个 ILI93xx.c 的文件和 lcd.h 的头文件,保 存在 LC

14、D 文件夹下,并将 LCD 文件夹加入头文件包含路径。 在 ILI93xx.c 里面要输入的代码比较多, 我们这里就不完全列出来了, 只针对几个重要的函 数进行讲解。完整版的代码见光盘-ALIENTEK MiniSTM32 开发板例程-实验 10 的 ILI93xx.c 文件。 第一个是 LCD_WR_DATA 函数,该函数通过 80 并口向 LCD 模块写入一个 16 位的数据, 使用频率是最高的,这里我们采用了宏定义的方式,以提高速度。其代码如下: #define LCD_WR_DATA(data) LCD_RS=1; LCD_CS=0; DATAOUT(data); LCD_WR=0;

15、LCD_WR=1; LCD_CS=1; 第二个是 LCD_WR_REG 函数,该函数也是通过 80 并口向 LCD 模块写入 8 位的寄存器命 令,因为该函数使用频率不是很高,我们不采用宏定义来做(宏定义占用 FLASH 较多) ,通过 LCD_RS 来标记是写入命令(LCD_RS=0)还是数据(LCD_RS=1) 。该函数代码如下: void LCD_WR_REG(u8 data) LCD_RS=0;/写地址 LCD_CS=0; DATAOUT(data); LCD_WR=0; LCD_WR=1; LCD_CS=1; 既然有写命令/数据的函数,那就有读命令/数据的函数。接下来介绍 LCD_R

16、eadReg 函数, 该函数用来读取某个寄存器的值。在读某个寄存器的值之前,先要写入该寄存器的编号(命令 号),然后设置 D15:0为输入,在读取该改寄存器的值,读完数据之后,我们再设置 IO 口为输 出。其代码如下: u16 LCD_ReadReg(u8 LCD_Reg) u16 t; LCD_WR_REG(LCD_Reg); /写入要读的寄存器号 GPIOB-CRL=0X88888888; /PB0-7 上拉输入 GPIOB-CRH=0X88888888; /PB8-15 上拉输入 GPIOB-ODR=0XFFFF; /全部输出高 LCD_RS=1; 173 LCD_CS=0; /读取数据(读寄存器时,并不需要读 2 次) LCD_RD=0; LCD_RD=1; t=DATAIN; LCD_CS=1; GPIOB-CRL=0X33333333; /PB0-7 上拉输出 GPIOB-CRH=0X33333333; /PB8-15 上拉输出 GPIOB

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

当前位置:首页 > 高等教育 > 其它相关文档

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