第29章 TFTLCD显示实验

第二十九章 TFTLCD显示实验

1. 导入

前面章节, 我们介绍了 LCD1602 和 LCD12864 液晶显示器, 它们只能用来显示字符、 汉字和简单单色图片, 不能显示彩色图片。

这一章就来介绍一种彩色液晶显示装置--TFTLCD 薄膜晶体管液晶显示器, 使用它不仅可以显示更多的汉字、 字符数字信息, 还可以显示 16 位色真彩图片, 在一些高端设备中应用广泛,通常采用 8080 总线时序通信。 我们开发板上集成了一个 TFTLCD 液晶显示器接口,将 TFTLCD 液晶对应插入即可。

2. TFTLCD介绍

TFT-LCD 是薄膜晶体管液晶显示器英语的缩写。TFT 液晶为每个像素都设有一个薄膜晶体管( TFT) , 每个像素都可以通过点脉冲直接控制, 因而每个节点都相对独立, 并可以连续控制, 不仅提高了显示屏的反应速度, 同时可以精确控制显示色阶, 所以 TFT 液晶的色彩更真, 因此 TFT-LCD 也被叫做真彩液晶显示器。

常用的 TFT 液晶屏接口有很多种, 8 位、 9 位、 16 位、 18 位都有, 这里的位数表示的是彩屏数据线的数量。 常用的通信模式主要有 6800 模式和 8080模式, 对于 TFT 彩屏通常都使用 8080 并口( 简称 80 并口) 模式。

如果学习过 LCD1602 或者 LCD12864 等, 那么就会发现 8080 模式的读写时序其实跟 LCD1602 或者 LCD12864 的读写时序是差不多的。 8080 接口有 5 条基本的控制线和多条数据线, 数据线的数量主要看液晶屏使用的是几位模式, 有8 根、 9 根、 16 根、 18 根四种类型。 它们的功能如下:

屏幕截图 2024 06 17 083820

本章我们就以 2.6 寸的 TFTLCD 模块为例来介绍( 其他尺寸的彩屏和驱动芯片使用方法类似) , 该模块驱动芯片型号是 R61509V, 分辨率为 240*320, 接口为 16 位的 80 并口, 自带触摸功能。 该模块的外观图如下图所示:

屏幕截图 2024 06 17 083928

该模块原理图如下图所示:

屏幕截图 2024 06 17 083950

TFTLCD 模块采用垂直两排插针, 横向是一个 20Pin 的插针, 纵向是一个16Pin 的插针, 间距 2.54 公排针与开发板上 TFT/LCD12864 接口连接, 从图中可以看出, 此 TFTLCD 模块采用 16 位的并口方式与外部连接, 之所以不采用 8 位的方式, 是因为彩屏的数据量比较大, 尤其在显示图片的时候, 如果用 8 位数据线, 就会比 16 位方式慢一倍以上, 我们当然希望速度越快越好, 所以选择 16位的接口, 当然不同 TFTLCD 数据位数不一样, 如果彩屏是 8 位的同样也是接在 16 位的对应高 8 位或者低 8 位上, 接口使用 16 位是方便兼容其他彩屏。

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

CS: TFTLCD 片选信号。
WR: 向 TFTLCD 写入数据控制。
RD: 从 TFTLCD 读取数据控制。
RS: 命令/数据选择( 0, 读写命令; 1, 读写数据) 。
DB[15: 0]: 16 位双向数据线。
RST: TFTLCD 复位。

80 并口的通信时序前面已经介绍, 所以要控制 TFTLCD 模块显示, 总共需要 21 个 IO 口( 除触摸功能管脚) 。

知道了模块的管脚功能及通信时序, 接下来我们就来介绍下如何让液晶模块显示。 通常按照以下几步即可实现 TFT 液晶显示:

  • 设置51单片机与TFTLCD模块相连接的IO

要让TFTLCD模块显示,首先得定义TFTLCD模块与51单片机相连的IO口,以便控制TFTLCD

  • 初始化TFTLCD模块

初始化 IO 口, 接着就是对 TFTLCD 进行配置, 首先就是要复位下 LCD, 然后就是初始化序列, 即向 LCD 控制器写入一系列的设置值( 比如 RGB 格式、 LCD显示方向、 伽马校准等) , 这部分代码一般 LCD 厂商会提供, 我们直接使用这些初始化序列即可, 无需深入研究。

  • 将要显示的内容写到TFTLCD模块内

这一步需要按照: 设置坐标→写 GRAM 指令→写 GRAM 来实现, 但是这个步骤, 只是一个点的处理, 如果我们想要显示字符或数字, 就必须要多次使用这个步骤, 从而达到显示字符或数字的目的, 一般我们会设计一个函数来封装这些过程( 实现字符或数字的显示) , 之后只需调用该函数, 就可以实现字符或数字的显示了。

关于更多TFTLCD内容可以参考:STM32学习记录0010——TFTLCD液晶显示屏_ili9341芯片中文资料-CSDN博客

【强烈推荐】基于STM32的TFT-LCD各种显示实现(内容详尽含代码)_tftlcd屏幕 dc引脚可以和其他引脚共用吗-CSDN博客

3. 硬件设计

本实验使用到硬件资源如下:

  • TFTLCD 液晶模块

开发板上集成了一个 TFTLCD 液晶接口, 下面来看下 51 单片机与 TFTLCD 接口的连接关系, 如下图所示:

屏幕截图 2024 06 15 104832

在前面介绍 LCD12864 时我们知道 TFT1 接口可以兼容 LCD12864 和 TFTLCD 模块, LCD12864 占用 TFT1 下面 20 个管脚, 而 TFTLCD 模块占用全部引脚。

从图中可以看到, TFTLCD 模块的 16 位数据口的高八位连接在单片机的 P1 口, 低八位连接在单片机的 P0 口。

TFTLCD 模块的 CS、 RS、 RW、 RD、 RESET 脚分别连接在单片机的 P27、 P26、 P25、 P32、 P33 口。 所以当使用 TFTLCD 时, 其他设备就不要占用这些管脚, 即使占用也只能分时复用。

4. 软件设计

本章所要实现的功能是: TFTLCD 上显示字符和汉字。程序框架如下:

  • 编写 TFTLCD 初始化函数

  • 编写 TFTLCD 显示函数

  • 编写主函数

void main()
{
	UART_Init(); // 串口初始化,方便使用printf调试
	TFTLCD_Init(); // TFTLCD初始化
		
	FRONT_COLOR = WHITE;
	LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,16,"0123456789");
	//LCD_ShowFontHZ(10,100,"好好好");
	LCD_ShowPicture(10,60,56,56,gImage_picture_snow);
	
	while(1)
	{
		
	}					
}

5. 小结

代码量太多了,就不搬上来凑字数了,注释也写得很详细

还是重复一遍之前的话,我们购买TFT彩屏,商家会提供驱动代码,我们只需会使用封装好的功能函数即可,当然学有余力也看工程注释理解


2024.7.25 第一次修订

2024.8.25 第二次修订,后期不再维护

posted @ 2024-08-25 09:40  hazy1k  阅读(16)  评论(0编辑  收藏  举报