[Platforimio] LVGL +TFT_eSPI实现触摸功能

news2024/12/23 1:46:07

💥💥💞💞欢迎来到本博客❤️❤️💥💥
本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~

📋📋📋本文目录如下:🎁🎁🎁

  • 1.TFT_eSPI库的配置
  • lvgl配置
  • 验证

1.TFT_eSPI库的配置

配置User_Setup.h文件
在这个位置配置显示屏驱动
在这里插入图片描述
在这里配置所连接的管脚
在这里插入图片描述
注意如果使用触摸,就要打开TOUCH_CS这句定义,
注意如果要使用TFT_eSPI库的触摸功能
需要将触摸驱动,和显示部分的SPI管脚并联。
且MISO只接到触摸部分,不然会冲突。

tft屏幕配置的完整代码

//                            用户定义设置
//   设置驱动程序类型、要加载的字体、使用的引脚和SPI控制方法等
//
//   如果希望能够定义多个设置,然后轻松选择编译器使用的安装文件。
//   看文件User_Setup_Select.h
//
//   如果此文件编辑正确,则所有库示例程序都能运行,而无需对特定硬件设置进行任何更改!
//   注意,有些程序是为特定的TFT像素宽度/高度设计的

// ##################################################################################
//
// 第一节.调出正确的驱动程序文件及其选项
//
// ##################################################################################

// 定义STM32以调用优化的处理器支持(仅适用于STM32)
//#define STM32

// 定义STM32板允许库优化性能
// 对于UNO兼容的“MCUfriend”式防护罩
//#define NUCLEO_64_TFT
//#define NUCLEO_144_TFT

// 告诉库使用8位并行模式(否则假定为SPI)
//#define TFT_PARALLEL_8_BIT

// 显示类型-仅定义是否RPi显示
//#define RPI_DISPLAY_TYPE // 20MHz maximum SPI

// 只定义一个驱动程序,其他的必须注释掉
//#define ILI9341_DRIVER
//#define ST7735_DRIVER      // Define additional parameters below for this display
//#define ILI9163_DRIVER     // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER     // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
//#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER    // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
#define ST7796_DRIVER

// 一些显示屏支持通过MISO引脚读取SPI, 其他显示屏有一个双向SDA引脚,库将尝试通过MOSI线读取。
// 要使用SDA行从TFT读取数据,请取消注释以下行:

// #define TFT_SDA_READ      // 此选项仅适用于ESP32,仅用ST7789显示屏测试

// 仅限ST7789和ILI9341,如果显示屏上的蓝色和红色互换,请定义颜色顺序
// 一次尝试一个选项,为您的显示屏找到正确的颜色顺序

//  #define TFT_RGB_ORDER TFT_RGB  // Colour order Red-Green-Blue
//  #define TFT_RGB_ORDER TFT_BGR  // Colour order Blue-Green-Red

// 对于仅集成ILI9341显示屏的M5Stack ESP32模块,删除下面行中的//

// #define M5STACK

// 仅限ST7789、ST7735和ILI9163,在纵向方向上定义像素宽度和高度
// #define TFT_WIDTH  80
// #define TFT_WIDTH  128
// #define TFT_WIDTH  240 // ST7789 240 x 240 and 240 x 320
// #define TFT_HEIGHT 160
// #define TFT_HEIGHT 128
// #define TFT_HEIGHT 240 // ST7789 240 x 240
// #define TFT_HEIGHT 320 // ST7789 240 x 320

// 仅限ST7735,定义显示类型,最初这是基于屏幕保护膜上标签的颜色,
// 但这并不总是正确的,因此如果屏幕不能正确显示图形,请尝试下面的不同选项,
// 例如颜色错误、镜像或边缘的托盘像素。注释掉ST7735显示驱动程序的所有选项
// (除了其中一个选项),保存此用户设置文件,然后重新生成草图并再次将其上载到板:

// #define ST7735_INITB
// #define ST7735_GREENTAB
// #define ST7735_GREENTAB2
// #define ST7735_GREENTAB3
// #define ST7735_GREENTAB128    // For 128 x 128 display
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
// #define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80   // For 160 x 80 display with 24 pixel offset

// 如果颜色是反转的(白色显示为黑色),则取消注释后的两行中的一行尝试两个选项,其中一个选项应更正反转。

// #define TFT_INVERSION_ON
// #define TFT_INVERSION_OFF

// 如果背光控制信号可用,则在下面第2节中定义TFT-BL引脚。
// 调用tft.begin()时,背光将打开,但库需要知道LED是否打开,
// 引脚是高还是低。如果led是用PWM信号驱动或关闭/打开的,
// 则必须由用户代码处理。例如.使用数字写入(TFT-BL,低);

// #define TFT_BACKLIGHT_ON HIGH  // HIGH or LOW are options

// ##################################################################################
//
// 第二节.在此处定义用于与显示屏接口的引脚
//
// ##################################################################################

// 我们必须使用硬件SPI,至少需要3个GPIO引脚。
// ESP8266 NodeMCU ESP-12的典型设置为:
//
// Display SDO/MISO  to NodeMCU pin D6 (or leave disconnected if not reading TFT)
// Display LED       to NodeMCU pin VIN (or 5V, see below)
// Display SCK       to NodeMCU pin D5
// Display SDI/MOSI  to NodeMCU pin D7
// Display DC (RS/AO)to NodeMCU pin D3
// Display RESET     to NodeMCU pin D4 (or RST, see below)
// Display CS        to NodeMCU pin D8 (or GND, see below)
// Display GND       to NodeMCU pin GND (0V)
// Display VCC       to NodeMCU 5V or 3.3V
//
// TFT复位引脚可以连接到NodeMCU RST引脚或3.3V以释放控制引脚
//
// DC(Data Command数据命令)引脚可以标记为AO或RS(寄存器选择)
//
// 对于某些显示屏,如ILI9341,如果没有更多的SPI设备(如SD卡)连接,
// TFT CS引脚可以连接到GND,在这种情况下,请注释下面的“定义TFT CS”行,
// 以便不定义它。在ST7735上的其他显示屏需要在设置期间切换TFT-CS引脚,
// 因此在这些情况下,必须定义和连接TFT-CS线。
//
// NodeMCU D0 pin可用于RST
//
//
// 注意:只有部分版本的NodeMCU在VIN引脚上提供了USB 5V,
// 如果引脚上没有5V,则可以使用3.3V,但背光亮度会更低。

// ###### 编辑以下行中的引脚号以适合您的ESP8266设置 ######

// 对于NodeMCU-使用pin_Dx形式的引脚号,其中Dx是NodeMCU引脚名称
//#define TFT_CS   PIN_D8  // Chip select control pin D8
//#define TFT_DC   PIN_D3  // Data Command control pin
//#define TFT_RST  PIN_D4  // Reset pin (could connect to NodeMCU RST, see next line)
//#define TFT_RST  -1    // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V

//#define TFT_BL PIN_D1  // LED back-light (only for ST7789 with backlight control pin)

//#define TOUCH_CS PIN_D2     // Chip select pin (T_CS) of touch screen

//#define TFT_WR PIN_D2       // Write strobe for modified Raspberry Pi TFT only

// ######  对于ESP8266重叠模式,编辑以下行中的引脚号  ######

// 重叠模式与TFT共享ESP8266闪存SPI总线,因此对性能有影响,但为其他功能保存引脚。
// 最好不要连接MISO,因为当芯片选择引脚为高电平时,某些显示屏不会三态显示该行!
// 在NodeMCU 1.0上,SD0=MISO,SD1=MOSI,CLK=SCLK 以重叠模式连接到TFT
// 在NodeMCU V3上, S0=MISO,S1=MOSI,S2=SCLK
// 在ESP8266重叠模式下,必须定义以下内容

//#define TFT_SPI_OVERLAP

// 在ESP8266重叠模式下,TFT芯片选择必须连接到引脚D3
//#define TFT_CS   PIN_D3
//#define TFT_DC   PIN_D5  // Data Command control pin
//#define TFT_RST  PIN_D4  // Reset pin (could connect to NodeMCU RST, see next line)
//#define TFT_RST  -1  // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V

// ###### 编辑以下行中的引脚号以适合您的ESP32设置   ######

// 用于ESP32开发板(仅用ILI9341显示屏测试)
// 硬件SPI可以映射到任何引脚
// 我把背光引脚LED接到了3.3V上,常亮了

#define TFT_MISO 12
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS 32 // Chip select control pin
#define TFT_DC 33 // Data Command control pin
//#define TFT_RST 4 // Reset pin (could connect to RST pin)
#define TFT_RST 27 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST

#define TFT_BL   25  // LED背光(仅适用于带背光控制引脚的ST7789)

#define TOUCH_CS 21     // 触摸屏的芯片选择引脚 (T_CS),

//#define TFT_WR 22    // 仅适用于改性树莓派TFT的写入选通 Write strobe for modified Raspberry Pi TFT only

// 对于M5Stack模块,使用以下定义行
//#define TFT_MISO 19
//#define TFT_MOSI 23
//#define TFT_SCLK 18
//#define TFT_CS   14  // Chip select control pin
//#define TFT_DC   27  // Data Command control pin
//#define TFT_RST  33  // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL   32  // LED back-light (required for M5Stack)

// ######       编辑下面的引脚以适合您的ESP32并行TFT设置        ######

// 库支持ESP32的8位并行TFT,下面的引脚选择与UNO格式的ESP32板兼容。
// 需要修改Wemos D32板,请参阅“工具”文件夹中的图表。
// 只测试了基于ILI9481和ILI9341的显示器!

// 仅ESP32支持并行总线
// 取消下面的注释行以使用ESP32并行接口而不是SPI

//#define ESP32_PARALLEL

// 用于测试的ESP32和TFT引脚为:
//#define TFT_CS   33  // Chip select control pin (library pulls permanently low
//#define TFT_DC   15  // Data Command control pin - must use a pin in the range 0-31
//#define TFT_RST  32  // Reset pin, toggles on startup

//#define TFT_WR    4  // Write strobe control pin - must use a pin in the range 0-31
//#define TFT_RD    2  // Read strobe control pin

//#define TFT_D0   12  // Must use pins in the range 0-31 for the data bus
//#define TFT_D1   13  // so a single register write sets/clears all bits.
//#define TFT_D2   26  // Pins can be randomly assigned, this does not affect
//#define TFT_D3   25  // TFT screen update performance.
//#define TFT_D4   17
//#define TFT_D5   16
//#define TFT_D6   27
//#define TFT_D7   14

// ##################################################################################
//
// 第三节.定义此处使用的字体
//
// ##################################################################################

// 用//注释掉下面的定义,以停止加载该字体
// ESP8366和ESP32有足够的内存,因此通常不需要注释字体。
// 如果加载了所有字体,则所需的额外闪存空间约为17Kbytes。
// 为了节省内存空间,只启用您需要的字体!

#define LOAD_GLCD   // 字体 1. 原来的Adafruit 8像素字体需要约1820字节的FLASH
#define LOAD_FONT2  // 字体 2. 16像素高的小字体,需要大约3534字节的FLASH,96个字符
#define LOAD_FONT4  // 字体 4. 中等26像素高字体,FLASH需要5848字节,96个字符
#define LOAD_FONT6  // 字体 6. 48像素的大字体,FLASH需要2666字节,只有字符1234567890:-.
#define LOAD_FONT7  // 字体 7. 7段48像素字体,FLASH需要约2438字节,仅字符1234567890:-.
#define LOAD_FONT8  // 字体 8. 75像素的大字体在FLASH中需要3256字节,只有1234567890个字符:-.
//#define LOAD_FONT8N // 字体 8. 上面字体8的替代品,稍微窄一些,因此3位数字适合160像素的TFT
#define LOAD_GFXFF  // 自由字体. 包括访问48个Adafruit_GFX免费字体FF1到FF48和自定义字体

// 注释掉下面的定义,以停止SPIFFS文件系统并平滑加载字体代码
// 这将节约 ~20kbytes of flash
//#define SMOOTH_FONT

// ##################################################################################
//
// 第四节.其他选项
//
// ##################################################################################

// 定义SPI时钟频率,这会影响图形渲染速度。速度太快,TFT驱动程序无法跟上,显示不正确。
// 对于ILI9341显示屏,40MHz工作正常,80MHz有时出现故障
// 对于ST7735显示屏,超过27MHz可能无法工作(杂散像素和线)
// 对于ILI9163显示屏,27MHz工作正常。

// #define SPI_FREQUENCY   1000000
// #define SPI_FREQUENCY   5000000
// #define SPI_FREQUENCY  10000000
// #define SPI_FREQUENCY  20000000
//#define SPI_FREQUENCY  27000000 // 实际设置为 26.67MHz = 80/3
#define SPI_FREQUENCY  40000000
// #define SPI_FREQUENCY  80000000

// 用于读取TFT的可选降低SPI频率
#define SPI_READ_FREQUENCY  20000000

// XPT2046(触摸屏驱动库)需要2.5MHz的较低SPI时钟速率,因此我们在此定义:
#define SPI_TOUCH_FREQUENCY  2500000

// ESP32有两个空闲的SPI端口,即VSPI和HSPI,VSPI是默认端口。
// 如果VSPI端口正在使用中,并且无法访问管脚(例如TTGO T-Beam)
// VSPI: CS->5  SCLK->18 MISO->19 MOSI->23
// HSPI: CS->15 SCLK->14 MISO->12 MOSI->13
// 则取消注释以下行:
// 重要:如果触摸屏要独立使用XPT2046_TouchScreen驱动,下面这行一定要取消注释,2天的工夫找到这行
#define USE_HSPI_PORT

// 如果不需要支持“SPI事务”,请注释掉以下定义。
// 当被注释掉,代码大小会变小,程序运行得稍微快一点,
// 所以除非你需要,否则就不要注释

// 使用SD库需要事务支持,但不需要TFT-SdFat
// 如果连接了其他SPI设备,则需要事务支持。

// 库为ESP32自动启用事务(使用HAL互斥)
// 所以在这里改变它没有效果

// #define SUPPORT_TRANSACTIONS

lvgl配置

这个网上很多资料,参考

验证

使用TFT_eSPI库里面example中的keyborad进行烧录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos下环境变量

文章内容如下: 1)什么是环境变量; 2)如何通过程序获取环境变量; 3) 常识规律 一。环境变量的定义 环境变量就是指一段路径。 定义环境变量主要是为了方便的执行程序。添加环境变量的方法是export PATH$PATH:/A/B&…

医用IT隔离电源在医院特殊场所接地系统的应用

【摘要】我们国家大部分医院的临床救治和确诊都是利用了医疗电气类设备和医用的医疗仪器,因此这些地方的接地问题应该引起我们的高度的重视。IT系统主要是利用了中性点没有直接接地的方式,所以可以减少电压和电流,从而使人类触电的可能性小之…

搭建Serv-U FTP服务器共享文件外网远程访问「无公网IP」

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转载自内网穿透工具的文章:使用Serv-U搭建FTP服务器并公网访问【内网穿透】 1. 前言…

Midjourney教程(三)——Prompt常用参数

Midjourney教程——Prompt常用参数 为了提升prompt的准确度与输入效率,让midjourney能够生成我们理想中的图片,我们需要学习一下prompt的常用参数 Version version版本号,midjourney支持多种模型,我们可以通过version参数来选择…

字典树(Trie/前缀树)

目录 字典树的概念 字典树的逻辑 字典树的实现 字典树小结 例题强化 字典树的概念 字典树(Trie)是一种空间换时间的数据结构,是一棵关于“字典”的树,主要用于统计、排序和保存大量的字符串。字典树是通过利用字符串的公共前…

广域通信网 - 流量控制(停等协议、滑动窗口协议)

文章目录 1 概述2 流量控制协议2.1 停等协议2.2 滑动窗口协议 1 概述 #mermaid-svg-c9cNIYsOvLpoO4AV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-c9cNIYsOvLpoO4AV .error-icon{fill:#552222;}#mermaid-svg-c9c…

[MLIR] CodeGen Pipeline总结

参考资料: [MLIR] CodeGen Pipeline总结 - 知乎 (zhihu.com) 本文主要以 tensorflow 为例,介绍了其接入 MLIR 后的 CodeGen 过程,以及简要分析了一些现在常用的 CodeGen pipeline。本文是本人在结合博客(Codegen Dialect Overview - MLIR - L…

隐私计算,联邦学习

隐私计算(“隐私保护计算” Privacy-Preserving Computation) 隐私计算是一类技术方案,在处理和分析计算数据的过程中能保持数据不透明、不泄露、无法被计算方法以及其他非授权方获取。 数据方是指为执行隐私保护计算过程提供数据的组织或个…

泰国五一游玩儿攻略

泰国五一游玩儿攻略 2023年4月27日1. 机场2. 酒店和夜市 2023年4月28日2023年4月29日2023年4月30日2023年5月1日2023年5月2日2023年5月3日 2023年4月27日 1. 机场 1.1 海关资料准备: 往返机票(去程返程都得有,每人单独打印自己的&#xff0…

多维时序 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多变量时间序列预测

多维时序 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多变量时间序列预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循环…

开放式耳机有什么好处,分享几款高畅销的开放式耳机

开放式耳机是一种声音传导方式,主要通过颅骨、骨骼把声波传递到内耳,属于非入耳式的佩戴方式。相比传统入耳式耳机,开放式耳机不会堵塞耳道,使用时可以开放双耳,不影响与他人的正常交流。开放式耳机不会对耳朵产生任何…

RocketMQ整合代码

RocketMQ整合代码 一 构建Java基础环境 在maven项⽬中构建出RocketMQ消息示例的基础环境&#xff0c;即创建⽣产者程序和消费者程序。通过⽣产者和消费者了解RocketMQ操作消息的原⽣API 引⼊依赖 <dependencies><dependency><groupId>org.apache.rocketmq&…

HCIP——交换(更新中)

园区网架构 交换机实现了以下功能 无限的传输距离——识别&#xff0c;重写电信号&#xff08;帧&#xff09;保证信息完整彻底解决了冲突二层单播——MAC地址表提高端口密度 MAC 单播地址&#xff1a;MAC地址第一个字节第8位为0 组播地址&#xff1a;MAC地址第一个字节第8位…

我完全手写的Resnet50网络,终于把猫识别出来了

大家好啊&#xff0c;我是董董灿。 经常看我文章的同学&#xff0c;可能知道最近我在做一个小项目——《从零手写Resnet50实战》。 从零开始&#xff0c;用最简单的程序语言&#xff0c;不借用任何第三方库&#xff0c;完成Resnet50的所有算法实现和网络结构搭建&#xff0c;…

SOS大规模敏捷开发项目管理完整版(Scrum of Scrums)

Scrum of Scrums是轻量化的规模化敏捷管理模式&#xff0c;Leangoo领歌可以完美支持Scrum of Scrums多团队敏捷管理。 Scrum of Scrums的场景 Scrum of Scrums是指多个敏捷团队共同开发一个大型产品、项目或解决方案。Leangoo提供了多团队场景下的产品路线图规划、需求管理、…

2023首场亚马逊云科技行业峰会,医疗与生命科学年度盛会精彩先行

从实验室扩展到真实世界&#xff0c;从前沿技术探索到医疗生命科学行业的快速创新实践&#xff0c;亚马逊云科技不断地通过数字化助力医疗和生命科学的行业创新。由上海徐汇区科委指导&#xff0c;上海枫林集团作为支持单位&#xff0c;亚马逊云科技主办的2023亚马逊云科技医疗…

如何评估小程序开发费用:从项目规模到技术需求

作为一种越来越受欢迎的移动应用&#xff0c;小程序的开发费用是许多企业和个人考虑的重要因素之一。但是&#xff0c;要确定小程序开发费用并不是一件容易的事情&#xff0c;因为它涉及到多个因素&#xff0c;从项目规模到技术需求。 项目规模 小程序开发的费用通常与项目规…

docker-Dockerfile文件使用配置、自定义构建镜像、docker build

Dockerfile使用 docker build构建新的镜像参数解释 Dockerfile格式基础格式FROMCOPYADDRUNCMDENTRYPOINTENVARGVOLUMEEXPOSEWORKDIRUSERHEALTHCHECKONBUILDLABEL 命令摘要 docker build构建新的镜像 命令&#xff1a;docker build -t some-content-nginx . 参数解释 docker …

2023团体程序设计天梯赛--正式赛

L1-1 最好的文档 有一位软件工程师说过一句很有道理的话&#xff1a;“Good code is its own best documentation.”&#xff08;好代码本身就是最好的文档&#xff09;。本题就请你直接在屏幕上输出这句话。 输入格式&#xff1a; 本题没有输入。 输出格式&#xff1a; 在…

Pytorch的几种常用优化器

文章目录 AdagradSGDRMSpropAdamAdamW Adagrad Adagrad是一种可以自动调节每个参数更新的梯度的优化器&#xff0c;也可以做到在梯度平缓时走的步长大&#xff0c;在梯度小时走的步长小&#xff0c;从而防止loss出现剧烈震荡的情况。这里默认你已知道了他的原理了&#xff0c;…