摘要:本文是TFT液晶屏的基本知识和TFT_eSPI库的简单介绍
在前边已经介绍过0.96寸OLED显示屏的使用方法,那是一个单色屏,显示效果很是一般,因此,本篇来介绍彩色TFT(Thin Film Transistor:薄膜晶体管)显示屏的使用方法。
TFT屏幕和OLED屏幕是两种不同的显示器件。TFT屏幕和OLED屏幕的区别在于使用的技术和原理不同。TFT屏幕是被动矩阵式液晶,需要用背光源的亮度来显示图像,会受周围光线影响。而OLED屏幕是依靠自身发光来显示图像,不需要用背光源,不受周围光线影响。
TFT屏幕和OLED屏幕也有不同的优缺点。TFT屏幕的优点是反应时间快,可视角度大,色彩还原度高。缺点是比较耗电,制造成本也比较高。而OLED屏幕的优点是可以做得更轻更薄,可视角度更大,并且能够显著节省电能。缺点是寿命短,而且没法把屏幕做得更大等。
下图就是本次要使用的1.3寸ST7789驱动的TFT屏幕。
该液晶显示模块的基本参数如下所示:
尺寸 |
1.3寸 |
分辨率 |
240*240 |
控制芯片 |
ST7789 |
显示区域 |
23.4X23.4(MM) |
物理尺寸 |
27.5X39(MM) |
接口类型 |
SPI |
管脚数量 |
7针 |
工作电压 |
DC3.3V-5V |
工作温度 |
-30-70C |
显示颜色 |
彩色 (RGB) |
对于一个用户来说,拿到一个液晶屏后最关心的可能是屏幕大小、显示分辨率以及显示的颜色数等参数。那么对于一个开发人员来说,关注点应该在工作电压、接口类型和控制芯片这几个与开发息息相关的参数。
下面来看一下接口的定义,通过上表可以看到,这个模块采用的是SPI通信接口。具体引脚的定义如下表所示:
序号 |
脚定义 |
说明 |
1 |
GND |
电源地 |
2 |
VCC |
电源正极(3.3V~5V) |
3 |
SCL(SCK) |
SPI时钟线 |
4 |
SDA |
SPI数据线 |
5 |
RES |
重启接口 |
6 |
DC |
SPI数据/命令选择 |
7 |
BLK |
背光控制 |
通过上面的表格可以看到,这是只有一根SPI数据线的SPI通信接口。这大概是因为不需要屏幕发送什么数据到主机的缘故。片选信号线在这个模块中也被省略掉了,也就是说,一个SPI总线,只能挂一个这样的屏幕模块了,否则主机是没有办法去区分这些不同的模块的。另外就是多了一个DC引脚,用来区分SPI总线传递的是命令还是数据,这大概是为了提高通信的效率,不用每个数据帧都标识自己是命令还是数据,而通过一个单独的引脚来通知屏幕设备,主机发送的是数据还是命令。
RES引脚是重启屏幕引脚。这个引脚可以连接到单片机的重启引脚,让它随着单片机一同重启,也可接到单片机的GPIO上,由程序来控制屏幕重启。BLK(背光控制)引脚默认悬空状态就可以了,背光会随着屏幕显示自动打开。当BLK为低电平时,表示关闭背光。
开发中,最关心的应该是屏幕的驱动芯片了,因为不同的芯片有不同的驱动库,对于屏幕的驱动还是非常复杂的,一般的开发人员利用现成的驱动库就可以了,不需要利用底层协议再去实现基础的显示功能了。
对于驱动库的选择,最主要的是要先看这个驱动库是不是支持我们的单片机和显示屏,然后再考虑其成熟程度、用户量、功能强弱等其他的因素。我们这次使用的驱动库名字叫TFT_eSPI,从名字就可以看出这是专门为SPI接口的TFT显示屏开发的驱动函数库。在Arduino IDE的库管理里面,输入“TFT_eSPI”就可以找到这个库并进行安装了。如下图所示:
TFT_eSPI是一个用于驱动液晶显示屏的Arduino库。它提供了一套简单易用的API,可以方便地控制和操作液晶显示屏。该库支持多种不同的液晶控制器和显示屏,包括SPI和I2C接口的液晶屏。TFT_eSPI库具有高度可定制性,可以根据具体的液晶屏和控制器进行配置和调整。它还提供了丰富的功能,如图形绘制、文本显示、触摸屏支持等,可以满足各种液晶显示屏的需求。
下表为TFT_eSPI库所支持的处理器和接口类型。
Processor |
4 wire SPI |
8-bit parallel |
16-bit parallel |
DMA support |
RP2040 |
Yes |
Yes |
Yes |
Yes (all) |
ESP32 |
Yes |
Yes |
No |
Yes (SPI only) |
ESP32 C3 |
Yes |
No |
No |
No |
ESP32 S2 |
Yes |
No |
No |
No |
ESP32 S3 |
Yes |
Yes |
No |
Yes (SPI only) |
ESP8266 |
Yes |
No |
No |
No |
STM32Fxxx |
Yes |
Yes |
No |
Yes (SPI only) |
Other |
Yes |
No |
No |
No |
通过这个表格,可以看到目前TFT_eSPI所支持的处理器和接口类型。并且表中的芯片和所支持的接口类型,都进行了专门的优化,可以说最大化的发挥了处理器性能和接口的数据吞吐能力,因此,直接采用这个库来使用应该是远优于自己开发的。当然,互联网上还可以找到其他组织完成的类似的库,有兴趣的可以找来对比一下,看哪个库在功能、性能和易用性上更具优势。
使用TFT_eSPI库可以轻松地在Arduino上实现液晶显示屏的控制和操作。首先,你需要将TFT_eSPI库添加到Arduino IDE中。然后,根据你使用的液晶屏和控制器的类型,进行相应的配置。配置完成后,你可以使用TFT_eSPI库提供的函数和方法来控制液晶显示屏,例如绘制图形、显示文本、设置背光等。
以下是一个简单的示例代码,演示了如何使用TFT_eSPI库在Arduino上控制液晶显示屏,将显示屏设置为黑色背景,然后用蓝色的字显示“你好,欢迎来到一起玩儿科技!”:
#include <TFT_eSPI.h> #include "STXINGKA36.h" TFT_eSPI tft; void setup() { tft.begin(); tft.setRotation(1); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_GREEN); tft.setCursor(10, 10); tft.loadFont(STXINGKA36); tft.println("你好, 欢迎来到一起玩儿科技!"); tft.unloadFont(); } void loop() { // put your main code here, to run repeatedly: } |
在上面的示例中,我们首先包含了TFT_eSPI库的头文件,并创建了一个TFT_eSPI对象。在setup函数中,我们初始化了TFT_eSPI库,并进行了一些基本的设置,如设置屏幕旋转、填充屏幕背景色、设置文本颜色等。然后,我们使用tft.println函数在屏幕上显示一条文本。
下面程序的运行结果如下:
文章来源:https://www.toymoban.com/news/detail-833784.html
需要提醒的是,上面的程序放到你们的环境中,还不能直接运行出这个结果来。因为还有两个方面的工作没做,一个是TFT_eSPI的配置还没有介绍该如何进行,直接下载的TFT_eSPI库是不知道你要连接什么型号的液晶屏,并且连接到哪些引脚的。另一个是要显示中文需要自己去制作字库,本身TFT_eSPI是不带中文字库的。这两方面的内容将放到下一篇文章中讲解。下期见!文章来源地址https://www.toymoban.com/news/detail-833784.html
到了这里,关于一起玩儿物联网人工智能小车(ESP32)——59. 基于TFT_eSPI库的1.3寸SPI彩色显示屏的使用(ST7789)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!