开发板 【正点原子】DNESP32S3开发板
本文将通过一个完整的 TFT 液晶屏驱动示例,展示如何在该开发板上使用 TFT_eSPI 库进行屏幕初始化、硬件复位控制以及基本图形绘制。

#include <SPI.h>
#include <TFT_eSPI.h>
#include "xl9555.h"
#include <Wire.h>

#define LCD_PWR(x) xl9555_pin_set(SLCD_PWR, (x) ? IO_SET_HIGH : IO_SET_LOW)
#define LCD_RST(x) xl9555_pin_set(SLCD_RST, (x) ? IO_SET_HIGH : IO_SET_LOW)

TFT_eSPI tft = TFT_eSPI();

// 完全对齐原厂复位时序
void lcd_hard_reset(void) {
  LCD_RST(1);
  delay(10);
  LCD_RST(0);
  delay(10);
  LCD_RST(1);
  delay(120);
}

void setup() {
  Serial.begin(115200);

  // 1. 初始化XL9555(I2C映射到41/42引脚)
  xl9555_init();

  // 2. 配置复位、背光引脚为输出,默认高电平
  xl9555_io_config(SLCD_RST, IO_SET_OUTPUT);
  xl9555_io_config(SLCD_PWR, IO_SET_OUTPUT);
  xl9555_pin_set(SLCD_RST, IO_SET_HIGH);
  xl9555_pin_set(SLCD_PWR, IO_SET_HIGH);

  // 3. 初始化前先关闭背光,避免花屏
  LCD_PWR(0);

  // 4. 硬件复位
  lcd_hard_reset();

  // 5. 初始化TFT_eSPI
  tft.init();
  tft.setRotation(0);
  // 7. 填充红色后开启背光,上电无闪屏
  tft.fillScreen(TFT_RED);
  delay(3000);
  LCD_PWR(1);
}

void loop() {
  // tft.fillScreen(TFT_GREEN);
  // delay(500);
  // tft.fillScreen(TFT_BLUE);
  // delay(500);
  // tft.fillScreen(TFT_RED);
  // delay(500);
  // tft.fillScreen(TFT_WHITE);
  // delay(500);
  // tft.fillScreen(TFT_BLACK);
  // delay(500);
  // tft.fillScreen(TFT_YELLOW);
  // delay(500);
}

更多推荐