ESP32+ILI9341触摸屏运行LVGLDemo指南

更新时间:2023-06-24 11:34:26 阅读: 评论:0

ESP32+ILI9341触摸屏运⾏LVGLDemo指南
⼀、硬件
我使⽤的ESP32如图 但更建议购买带有BOOT和EN按键的开发板 如图⼆
消防安全工作计划ILI9341显⽰屏如图(含XPT2046驱动芯⽚)
ILI9341ESP32
VCC5V
GND GND
CS IO15
RESET RST
D/C IO2
SDI(MOSI)IO13
SCK IO14
LED5V
SDO(MISO)IO12
T_CLK IO14
T_CS IO33
T_DIN IO13
T_OUT IO12
T_IRQ不连接
⼆、软件
1、Arduino IDE环境配置(我使⽤的Arduino IDE版本为1.8.13,理论上不影响)
⼯具-开发板-开发板管理器搜索ESP32,下载包(据说1.0.4下载不下来,我先下载1.0.3,之后更新到1.0.6)
下载完成后配置开发板如下:(端⼝选择开发板对应COM⼝,编程器留空)
2、下载库
库名链接
/lvgl/lvgl
lv_/lvgl/lv_demos
TFT_/Bodmer/TFT_eSPI
下载后解压⽂件夹到Arduino安装⽬录libraries下,切记将⽂件夹命名为库名,github上下载会带有master的后缀。也可以通过Arduino IDE-⼯具-管理库中下载库,但库的路径可能不在libraries下,⽽在C:\Urs\⽤户名\Documents\Arduino\libraries中。
3、配置TFT_eSPI库
//                            ⽤户定义设置
//  设置驱动程序类型、要加载的字体、使⽤的引脚和SPI控制⽅法等
//
//  如果希望能够定义多个设置,然后轻松选择编译器使⽤的安装⽂件。
//  看⽂件Ur_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 w hen 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 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 offt)
// #define ST7735_REDTAB
// #define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80  // For 160 x 80 display with 24 pixel offt
成岩作用
// 如果颜⾊是反转的(⽩⾊显⽰为⿊⾊),则取消注释后的两⾏中的⼀⾏尝试两个选项,其中⼀个选项应更正反转。// #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, e 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, e below)
// Display CS        to NodeMCU pin D8 (or GND, e 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 lect control pin D8
//#define TFT_DC  PIN_D3  // Data Command control pin
//#define TFT_RST  PIN_D4  // Ret pin (could connect to NodeMCU RST, e 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 lect 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  // Ret pin (could connect to NodeMCU RST, e 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 15 // Chip lect control pin
#define TFT_DC 2 // Data Command control pin
//#define TFT_RST 4 // Ret pin (could connect to RST pin)
#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
//#define TFT_BL  32  // LED背光(仅适⽤于带背光控制引脚的ST7789)
#define TOUCH_CS 33    // 触摸屏的芯⽚选择引脚 (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 lect control pin
三国徐庶//#define TFT_DC  27  // Data Command control pin
//#define TFT_RST  33  // Ret 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 lect control pin (library pulls permanently low
/
/#define TFT_DC  15  // Data Command control pin - must u a pin in the range 0-31
//#define TFT_RST  32  // Ret pin, toggles on startup
//#define TFT_WR    4  // Write strobe control pin - must u a pin in the range 0-31
//#define TFT_RD    2  // Read strobe control pin
//#define TFT_D0  12  // Must u pins in the range 0-31 for the data bus
//#define TFT_D1  13  // so a single register write ts/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

本文发布于:2023-06-24 11:34:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1052698.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:引脚   字体   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图