1、认识ST7789驱动的LCD

1)看图认识

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

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

2)引脚说明
引脚名称功能接 ESP32-S3
BLKBacklight背光控制(PWM 调光)GPIO + PWM 或 3.3V
CSChip Select片选信号(低电平有效)GPIO
DCData/Command数据/命令选择GPIO
RESReset复位信号(低电平复位)GPIO
SDASerial DataSPI 数据输入(MOSI)GPIO
SCLSerial ClockSPI 时钟GPIO
VCCPower电源输入(3.3V)3.3V
GNDGround地GND

2、面包板连接ST7789屏幕

1)引脚分配说明

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

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

G35

CSChip Select片选信号(低电平有效)G45
DCData/Command数据/命令选择G47
RESReset复位信号(低电平复位)G21
SDASerial DataSPI 数据输入(MOSI)G20
SCLSerial ClockSPI 时钟G19
VCCPower电源输入(3.3V)3.3V正极
GNDGround地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)运行效果

更多推荐