TFT_eSPI使用

参考:TFT-eSPI入门使用教程

Arduino开发-TFT_eSPI库学习

使用VS Code 搭建 platformio 平台

基于arduino的ESP32 学习笔记(二) TFT_eSPI和LVGL库使用笔记

https://b23.tv/VVhmXSp

硬件及软件环境

  • 开发板:ESP32-S3

  • 屏驱动是:ST7789_DRIVER

  • 开发环境:VS Code + PlatformIO

搭建开发环境教程:使用VS Code 搭建 platformio 平台

PIO创建新项目

打开PIO.Home

创建工程:

项目名字自己定义,开发板(board)选择ESP32 Pico Kit(Espressif)使用的平台选Arduino

取消使用默认路径

选择自己的路径并点击finish,等待创建完成(可能很久)

打开工程

选择创建的工程即可

成功打开

主程序

获取TFT-eSPI

GitHub:https://github.com/Bodmer/TFT_eSPI

解压压缩包

在工程中添加TFT_eSPI库

将解压的文件夹复制到工程的lib目录下

修改文件夹名字

vscode自动识别并添加到工程

进入TFT_eSPI目录

其中,User_Setup_Select.h和User_Setup.h两个文件是用来给我们根据自己的实际情况来配置屏幕大小,屏幕驱动引脚等的。其中User_Setup.h可以配置一款自己的屏幕设置,但库中有很多常用的屏幕作者已经配置好写成文件存放了,我们可以在User_Setup_Select.h中选中自己配置的User_Setup.h或者作者配置的一些屏幕。

打开User_Setup_Select.h,注释掉30行

打开60行,供esp32/esp8266/DSTIKE使用的,驱动为ST7789,大小为240*240的屏幕

进入User_Setups目录,打开Setup24_ST7789.h

屏幕像素大小,此处不需要改,如果使用的驱动相同,大小不同可以根据需要改

解注释esp32的端口设置,如果使用DSTIKE,则使用上面的

引脚号根据默认的即可,如果硬件连接已经成型,则根据实际改,否则硬件连接根据默认的连,避免出错

注释NodeMCU单片机引脚定义

设置SPI频率,设置频率时,不能超过引脚的最高频率

如果使用的屏幕没有默认配置好的文件可选,或者不知道选哪个,则进入User_Setup_Select.h文件,解注释User_Setup.h,其他都保持被注释状态

然后进入User_Setup.h文件进行配置

注释ITI9341,并解注释自己的驱动

选择分辨率大小

ST7735漂移等问题需要设置这个,其他驱动不需要,可参考

【超详细ESP32驱动TFT屏幕教程,有手就行-哔哩哔哩】

https://b23.tv/VVhmXSp

配置对应的驱动引脚

到此,驱动库配置完成

在main.cpp中添加程序

实例程序

LCD背光需要根据实际电路来设置,PMOS驱动的设置0为最亮,NMOS则1为最亮

#include <Arduino.h>
#include <TFT_eSPI.h>
 
TFT_eSPI tft = TFT_eSPI();
 
#define LCD_BL_PIN 5                                       // LCD背光引脚
#define LCD_BL_PWM_CHANNEL 0                               // PWM通道,高速(0 ~ 7)80MHz时钟驱动,低速(8 ~ 15)1MHz
 
void setup() {
    //设置背光
    ledcSetup(LCD_BL_PWM_CHANNEL, 1000, 8);                //设置通道,频率,分辨率
    ledcAttachPin(LCD_BL_PIN, LCD_BL_PWM_CHANNEL);         //设置引脚
    ledcWrite(LCD_BL_PWM_CHANNEL, (int)(0 * 255));         //设置亮度,PMOS驱动
    //初始化
    tft.init();
    tft.setRotation(1);                                    //设置屏幕方向,0 1 2 3表示顺时针旋转0 90 180 270 度
    tft.invertDisplay(1);                                  //颜色反转
}
 
void loop() {
    tft.fillScreen(TFT_BLACK);                             //屏幕全黑
  
    tft.setCursor(0, 0, 2);                                //将“光标”设置在显示器的左上角(0,0),并选择2号字体
    tft.setTextColor(TFT_WHITE,TFT_BLACK);                 //将字体颜色设置为白色,背景为黑色,将文本大小倍增设置为1
    tft.setTextSize(1);                                    //字体大小
    tft.println("Hello World!");

    while(1);
}
TFT_ESPI是一种基于SPI(Serial Peripheral Interface)总线通信协议的图形显示驱动技术,用于在微控制器上连接真彩色TFT(Thin Film Transistor)液晶屏幕。这种配置广泛应用于便携式设备、嵌入式系统以及各种智能硬件中,提供高分辨率、高质量的视觉输出。 ### 使用例程简介 在设计和实现TFT_ESPI接口时,开发者通常需要编写特定于目标平台的驱动程序。这些例程包含了初始化LCD屏幕、控制背光、发送命令和数据、刷新屏幕等功能。下面是一个基本的步骤概述: #### 1. 初始化 在程序开始时,首先需要初始化SPI接口,并将它映射到适当的GPIO(General Purpose Input/Output)端口上。这一步还包括配置SPI的频率、模式等参数,以适应LCD屏幕的需求。 #### 2. LCD初始化序列 接着,按照LCD制造商提供的数据手册,执行一系列特定的命令对LCD屏幕进行初始化。这些初始化命令通常包括设置屏幕分辨率、颜色深度、页面地址寄存器(PAB)、设置起始页等操作。 #### 3. 显示模式切换 在完成初始化后,可以设置LCD的工作模式,如全屏显示、窗口显示等。这涉及调整偏移量和大小设定,以便将图形数据准确地绘制到屏幕上。 #### 4. 图形数据传输 通过SPI接口,将图像数据逐字节或逐块发送给LCD屏幕。这通常涉及到构建和打包数据帧的过程,数据帧中包含有像素信息、颜色值、透明度等属性。在某些情况下,还需要处理旋转和平移等效果,使得图形能够按照预期的方式显示出来。 #### 5. 关闭资源 在程序结束时,释放分配的资源,比如关闭SPI接口,避免潜在的硬件冲突或资源泄漏。 ### 相关问题: 1. **如何选择合适的TFT_LCD模块?** - 考虑分辨率、色彩深度、亮度、尺寸和成本等因素。 2. **如何优化TFT_ESPI驱动程序性能?** - 高效的数据编码、最小化延迟、使用预缓存减少频繁访问内存操作。 3. **在使用TFT_ESPI时遇到显示错误如何排查?** - 检查SPI配置、初始化序列是否正确,验证数据帧结构,检查电源电压和电流是否稳定。 --- 以上是关于TFT_ESPI使用例程的基本概述和技术细节,实际应用中可能需要根据所使用的硬件平台和具体需求进行相应的调整和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@枭白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值