零基础学ESP32:240x240彩色屏幕,让世界“色”起来!

0 阅读5分钟

前面我们学了1602 LCD屏幕,它能显示两行字符,但只有蓝底白字,看久了总觉得有点单调。今天我们要上一个档次——240x240分辨率的彩色TFT屏幕

这块屏幕能显示65536种颜色,240x240分辨率,无论是显示文字、绘制图形,还是展示传感器数据,效果都比字符屏惊艳得多。

本节课就带大家从零开始,让ESP32驱动这块彩色屏幕,显示出绚丽的画面!

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 “教程”,在 “硬件” → “ESP32 + MicroPython” 分类下,找到240x240显示屏1

在这里插入图片描述

打开课件,你会看到本节课的最终效果——屏幕上一直在打印 Hello。

在这里插入图片描述

第二步:认识这块屏幕

这块240x240屏幕,像素分辨率是240行×240列,虽然不大,但显示文字和图形已经非常够用了。

引脚说明:

引脚名称功能说明
VCC电源正极
GND电源负极
SCLSPI时钟线
SDASPI数据线
RES复位引脚
DC数据/命令选择引脚
CS片选引脚
BLK背光控制引脚

在这里插入图片描述

这块屏幕使用SPI协议进行数据传输,主控芯片是ST7789

第三步:什么是SPI?比I2C更快!

我们在上一节课学了I2C(两根线传数据)。这节课的SPI和I2C类似,也是一种通信协议,但速度更快

SPI使用4根线:

信号线全称作用
MOSIMaster Output Slave Input主机→从机,发送数据
MISOMaster Input Slave Output从机→主机,接收数据
SCLKSerial Clock时钟信号,控制传输节奏
SSSlave Select片选信号,选择跟哪个设备通信

在这里插入图片描述

第四步:动手接线——SPI四线搞定

接线依然很简单:

屏幕引脚连接ESP32引脚说明
VCCVCC3.3V
GNDGND电源地
SCLGPIO18SPI时钟
SDAGPIO23SPI数据
RESGPIO15复位
DCGPIO2数据
CSGPIO5片选
BLK5v(3.3V对面)背光控制,接高电平点亮

在这里插入图片描述

第五步:上传驱动和字体文件

本节课的代码需要两个额外文件才能运行:

  1. 驱动文件 st7789py.py:让屏幕能显示画面的底层驱动
  2. 字体文件夹 romfonts:包含显示文字所需的字体数据

操作流程:

  1. 点击课件中的下载链接,下载压缩包
  2. 解压缩得到文件夹和文件
  3. st7789py.py 上传到ESP32
  4. romfonts 整个文件夹上传到ESP32

第六步:一键打开代码,直接运行

驱动和字体都传好了,接下来就是主代码。

课件提供了两个示例,我们先看示例1——测试纯色填充和文字显示:

import random
import time
from machine import Pin, SPI
import st7789py
from romfonts import vga2_8x16 as font

# 唤醒屏幕
st7789py.wakeup(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
time.sleep_ms(100)

# 创建显示对象
tft = st7789py.ST7789(SPI(2, 60000000), 240, 240, 
                       reset=Pin(15), dc=Pin(2), cs=Pin(5), rotation=0)

# 测试纯色填充
tft.fill(st7789py.RED)    # 全屏红色
time.sleep(1)
tft.fill(st7789py.GREEN)  # 全屏绿色
time.sleep(1)
tft.fill(st7789py.BLUE)   # 全屏蓝色
time.sleep(1)
tft.fill(st7789py.BLACK)  # 清屏

# 显示文字
tft.text(font, "Hello", 0, 0, st7789py.RED, st7789py.WHITE)
tft.text(font, "World!", 0, 32, st7789py.WHITE, st7789py.RED)

找到对应的代码块,点击 “打开” 按钮,代码自动加载到编辑器中。

第七步:保存到开发板,看彩色画面!

Ctrl + S 保存,选择ESP32开发板设备,给文件命名(比如test1.py),点击保存。

保存成功后,点击运行按钮。

运行后——240x240彩色屏幕依次显示:

  1. 全屏红色 🔴
  2. 全屏绿色 🟢
  3. 全屏蓝色 🔵
  4. 最后显示 “Hello World!”,文字带有红白配色

进阶一下:随机彩色“Hello!”跑起来

示例1只是静态显示,示例2才是真正的炫酷效果

程序会在屏幕上随机位置、随机颜色地不断显示“Hello!”文字,每次显示的位置和颜色都不一样,看起来就像彩色文字在屏幕上四处跳动。

import random
import time
from machine import Pin, SPI
import st7789py
from romfonts import vga2_8x16 as font  # 使用8位宽字体

# 唤醒屏幕
st7789py.wakeup(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))

time.sleep_ms(100)

# 创建显示屏对象
tft = st7789py.ST7789(SPI(2, 60000000), 240, 240, 
                       reset=Pin(15), dc=Pin(2), cs=Pin(5), rotation=0)

def show_text():
    for rotation in range(4):
        tft.rotation(rotation)
        tft.fill(st7789py.BLACK)
        col_max = tft.width - font.WIDTH * 6
        row_max = tft.height - font.HEIGHT
        
        for _ in range(100):
            tft.text(
                font,
                "Hello!",
                random.randint(0, col_max),
                random.randint(0, row_max),
                st7789py.color565(random.getrandbits(8), random.getrandbits(8), random.getrandbits(8)),  # 随机前景色
                st7789py.color565(random.getrandbits(8), random.getrandbits(8), random.getrandbits(8))   # 随机背景色
            )
        time.sleep(1)

# 随机显示Hello!
while True:
    show_text()

在这里插入图片描述

从字符到彩色,你的屏幕升级了

回顾一下屏幕相关课程的升级路径:

屏幕特点
1602 LCD(字符屏)2行×16字符,蓝底白字
240x240 TFT(彩色屏)彩色显示、240×240分辨率、65536色

本节课的突破:

  1. 字符显示升级为像素级彩色显示
  2. 学会了SPI协议(比I2C更快)
  3. 可以显示任意颜色、任意位置的文字和图形

应用场景:

  • 智能家居控制面板
  • 数据可视化仪表盘
  • 电子相册、时钟
  • 简易游戏机

全程回顾

步骤操作效果
找到课程教程→硬件→ESP32+MicroPython→240显示屏了解彩色屏幕效果
认识屏幕学习8个引脚和SPI协议理解硬件原理
动手接线5V-GND-SCL-SDA-RES-DC-CS-BLK硬件准备就绪
上传驱动上传st7789py.py到ESP32屏幕有了“驱动程序”
上传字体上传romfonts文件夹到ESP32显示文字有了“字库”
打开代码点击“打开”按钮示例代码进入编辑器
保存运行Ctrl+S → 选择ESP32 → 运行彩色画面出现!

去官网(www.dounao.cn**)下载逗脑IDE,准备好ESP32和240x240彩色屏幕,跟着第九节课走一遍。当屏幕上第一次出现彩色画面时,你会觉得——**前面所有的努力都值了。

有任何问题或建议,欢迎在评论区留言告诉我们。