1、认识ST7789驱动的LCD

1)看图认识

我买到的是一块 ST7789 驱动的 1.54 英寸 IPS LCD 显示屏模块,分辨率240*240。

这个是焊接过针脚的模块。

2)引脚说明
引脚 名称 功能 接 ESP32-S3
BLK Backlight 背光控制(PWM 调光) GPIO + PWM 或 3.3V
CS Chip Select 片选信号(低电平有效) GPIO
DC Data/Command 数据/命令选择 GPIO
RES Reset 复位信号(低电平复位) GPIO
SDA Serial Data SPI 数据输入(MOSI) GPIO
SCL Serial Clock SPI 时钟 GPIO
VCC Power 电源输入(3.3V) 3.3V
GND Ground GND

2、面包板连接ST7789屏幕

1)引脚分配说明

考虑把屏幕接到板子的右侧,引脚分配如下,从屏幕最下面的GND开始

引脚 名称 功能 接 ESP32-S3
BLK Backlight 背光控制(PWM 调光)

G35

CS Chip Select 片选信号(低电平有效) G45
DC Data/Command 数据/命令选择 G47
RES Reset 复位信号(低电平复位) G21
SDA Serial Data SPI 数据输入(MOSI) G20
SCL Serial Clock SPI 时钟 G19
VCC Power 电源输入(3.3V) 3.3V正极
GND Ground GND 接地

GND引脚接地,需要把板子的GND引脚通过两条灰色短线连接到负极

VCC引脚接正极,先把板子上3V3引脚通过长的红色线连接到正极,然后在右侧用棕色线连接VCC引脚到正极这一横排。

SCL连接G19,SDA连接G20,RES连接G21,DC连接G47

G47旁边是G48,G48是用来控制 板载 RGB  LED 灯的,为了不影响板载灯,跳过这个口

所以 CS连接G45,

G45旁边是G0,G0是 启动模式选择(Strapping 引脚)用的,不能占用

所以BLK可以接G35。

哪些口是板载要用的,可以问下AI 或者在我这篇博客里查询,我也是经常翻这个。

ESP32-S3-CAM:认识引脚 这个博客中 右侧引脚介绍部分的表格里就有提到,G48和G0的作用。

2)面包板接线

我把3V3接正极的线换了一根短点的橙色线,要不然飞着很难看,下图是完整接线完毕后的效果。

3)上电检查

接完线以后,插上USB,可以看看屏幕背光是不是亮的,下图中黄色框出的部分,亮的就代表屏幕供电没问题,也就是说屏幕下面接的两个 引脚,GND和VCC供电没问题,如果这个都没亮,就说明 电流 没通,要检查线路。

3、写代码点亮屏幕

1)用AI工具写demo代码

线接好上电正常后,写提示词,让AI写屏幕自检代码即可,要告诉AI,每个引脚对应的口是多少,然后实现什么功能,我的提示词如下:

我通过面包板将ESP32-S3-CAM主板上连接了一个ST7789驱动的LCD屏幕,分辨率240*240,引脚设置如下:SCL连接G19,SDA连接G20,RES连接G21,DC连接G47,CS连接G45,BLK接G35,写一段代码,实现在屏幕上显示白底,然后用黑色字体写hello world。

#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>

// ST7789 引脚定义(根据您的接线)
#define TFT_SCL  19   // SPI 时钟
#define TFT_SDA  20   // SPI 数据(MOSI)
#define TFT_RES  21   // 复位
#define TFT_DC   47   // 数据/命令选择
#define TFT_CS   45   // 片选
#define TFT_BLK  35   // 背光控制

// 创建 ST7789 对象(软件 SPI)
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_SDA, TFT_SCL, TFT_RES);

void setup() {
  Serial.begin(115200);
  delay(1000);
  
  Serial.println("ST7789 初始化开始...");
  
  // 初始化背光引脚
  pinMode(TFT_BLK, OUTPUT);
  digitalWrite(TFT_BLK, HIGH);  // 开启背光
  
  // 初始化屏幕(240x240 分辨率)
  tft.init(240, 240);
  
  // 设置屏幕方向(0-3,根据实际需要调整)
  tft.setRotation(0);
  
  // 填充白色背景
  tft.fillScreen(ST77XX_WHITE);
  
  // 设置文字颜色(黑色)和大小
  tft.setTextColor(ST77XX_BLACK);
  tft.setTextSize(3);  // 字体大小 3(较大)
  
  // 计算文字居中位置
  const char* text = "Hello World";
  int16_t x1, y1;
  uint16_t w, h;
  
  // 获取文字尺寸
  tft.getTextBounds(text, 0, 0, &x1, &y1, &w, &h);
  
  // 计算居中坐标
  int x = (240 - w) / 2;
  int y = (240 - h) / 2;
  
  // 显示文字
  tft.setCursor(x, y);
  tft.println(text);
  
  Serial.println("显示完成!");
}

void loop() {
  // 无需重复刷新
  delay(1000);
}
2)库依赖安装

在 Arduino IDE 中安装以下库:

  1. Adafruit ST7735 and ST7789 Library

    • 管理库 → 搜索 "Adafruit ST7789" → 安装

  2. Adafruit GFX Library

    • 会自动作为依赖安装

ST7789依赖库安装

3)运行效果

更多推荐