终极指南:如何用st7789py_mpy库轻松驱动ST7789显示屏 🚀
st7789py_mpy是一款专为微Python设计的高效ST7789显示屏驱动库,让你轻松在嵌入式设备上实现绚丽的图形显示效果。无论是新手还是资深开发者,都能通过本指南快速掌握这个强大工具的使用方法。
📋 项目核心功能与目录结构
st7789py_mpy库提供了完整的ST7789显示屏控制功能,包括文本渲染、图形绘制、屏幕旋转等核心能力。项目采用模块化设计,主要目录结构如下:
- lib/:核心驱动代码存放目录,包含lib/st7789py.py驱动实现
- examples/:丰富的示例程序,如hello.py、rotations.py等实用演示
- tft_configs/:多种硬件配置模板,支持不同开发板快速适配
- romfonts/:内置字体库,提供多种尺寸的文本显示支持
- docs/:完整的官方文档,包含详细使用说明和API参考
图:st7789py_mpy项目结构及核心文件分布,展示了主要功能模块的组织方式
🔧 快速安装与环境准备
要开始使用st7789py_mpy,首先需要获取项目源码。通过以下命令克隆仓库:
git clone https://gitcode.com/gh_mirrors/st/st7789py_mpy
项目无需复杂的安装过程,只需将相关文件复制到你的微Python设备中即可。核心依赖包括:
- 支持SPI接口的微Python设备
- ST7789芯片的TFT显示屏
- 必要的杜邦线或开发板
✨ 第一个示例:Hello World显示教程
examples目录下的hello.py是最基础的入门示例,展示了如何初始化显示屏并显示文本:
import random
import st7789py as st7789
import tft_config
import vga2_bold_16x32 as font
def main():
tft = tft_config.config(tft_config.WIDE) # 初始化显示屏
while True:
for rotation in range(4):
tft.rotation(rotation) # 旋转屏幕
tft.fill(0) # 清屏
# 在随机位置显示彩色"Hello"文本
tft.text(
font, "Hello",
random.randint(0, tft.width - font.WIDTH*5),
random.randint(0, tft.height - font.HEIGHT),
st7789.color565(random.getrandbits(8), random.getrandbits(8), random.getrandbits(8)),
st7789.color565(random.getrandbits(8), random.getrandbits(8), random.getrandbits(8))
)
main()
运行此示例后,你将看到"Hello"文本以随机颜色和位置显示在屏幕上,并自动切换不同的屏幕旋转角度。
图:hello.py示例运行效果,展示了ST7789显示屏上的彩色文本显示
🛠️ 硬件配置与适配方法
tft_configs目录提供了多种硬件配置模板,以esp32_320x240为例,配置文件tft_config.py包含了引脚定义和初始化参数:
from machine import Pin, SPI
import st7789py as st7789
def config(rotation=0):
return st7789.ST7789(
SPI(2, baudrate=40000000, sck=Pin(18), mosi=Pin(19)),
135, 240, # 屏幕尺寸
reset=Pin(23, Pin.OUT),
cs=Pin(5, Pin.OUT),
dc=Pin(16, Pin.OUT),
backlight=Pin(4, Pin.OUT),
rotation=rotation
)
常见的可配置参数包括:
- SPI参数:波特率、时钟引脚、数据引脚
- 屏幕尺寸:宽度和高度设置
- 控制引脚:复位(reset)、数据/命令(dc)、背光(backlight)引脚
- 旋转角度:0-3共4种旋转方向
🎨 高级功能与实用示例
屏幕旋转与颜色控制
examples/rotations.py演示了如何实现屏幕旋转和颜色控制功能:
def main():
tft = tft_config.config(tft_config.WIDE)
colors = (
("Red", st7789.RED, st7789.WHITE),
("Green", st7789.GREEN, st7789.BLACK),
# 更多颜色...
)
while True:
for rotation in range(4): # 循环4种旋转角度
tft.rotation(rotation)
tft.fill(bg_color) # 设置背景色
# 显示旋转角度和颜色信息
center_on(tft, font, str(rotation), tft.height//2, fg_color, bg_color)
time.sleep(2)
运行该示例后,屏幕会依次展示0°、90°、180°、270°四种旋转效果,并循环切换不同背景颜色。
图:rotations.py示例演示了ST7789显示屏的四种旋转模式和颜色效果
文本显示与字体选择
st7789py_mpy支持多种字体显示,romfonts目录提供了不同尺寸的字体文件:
- vga1_8x8.py:8x8像素基础字体
- vga2_bold_16x32.py:16x32像素粗体字体
- 更多字体文件位于romfonts/目录
使用不同字体只需导入相应模块并传递给text方法:
import vga1_8x8 as small_font
import vga2_bold_16x32 as large_font
# 显示小字体文本
tft.text(small_font, "Small text", 10, 10)
# 显示大字体文本
tft.text(large_font, "Large text", 10, 30)
📝 常用API功能速查表
lib/st7789py.py提供了丰富的API接口,以下是最常用的几个功能:
- text(font, text, x, y, color, background):显示文本
- fill(color):清屏并设置背景色
- rotation(angle):设置屏幕旋转角度(0-3)
- pixel(x, y, color):绘制单个像素
- line(x0, y0, x1, y1, color):绘制直线
- rect(x, y, width, height, color):绘制矩形
- bitmap(bitmap, x, y, index=0):显示位图图像
🚀 项目扩展与自定义
st7789py_mpy支持多种高级扩展功能,包括:
- 自定义字体:通过utils/text_font_converter.py工具转换TrueType字体
- 图像显示:使用image_converter.py将图片转换为适合显示的格式
- 硬件按钮:部分配置提供了tft_buttons.py支持触摸或物理按键
所有工具脚本均位于utils/目录,可根据需求进行二次开发和定制。
💡 常见问题与解决方案
- 显示异常:检查SPI引脚连接是否正确,波特率是否匹配硬件要求
- 字体模糊:尝试使用更大字号的字体,或调整显示对比度
- 屏幕闪烁:检查电源稳定性,确保电压符合显示屏要求
- 不支持的旋转角度:确认使用的是最新版本库,旧版本可能支持有限
更多问题和解决方案可参考项目文档docs/目录下的详细说明。
🎯 总结与下一步学习
通过本指南,你已经掌握了st7789py_mpy库的基本使用方法。接下来可以尝试:
- 探索examples目录下的其他示例程序
- 尝试修改tft_config.py适配你的硬件
- 使用utils工具创建自定义字体和图像
- 开发自己的创意显示项目
st7789py_mpy库为嵌入式显示提供了强大而灵活的解决方案,无论是制作智能手表、环境监测设备还是小型游戏机,它都能满足你的需求。立即开始你的创意项目吧!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00