我们的项目是在240x240屏幕上显示下面这张动态图片
效果演示
由于esp32内存大小关系每次屏幕最多只能刷新72行,肉眼看到的效果有些割裂感
关于ST7789
ST7789是由Sitronix公司研制的一款高度集成的液晶显示控制器芯片,它被广泛用于驱动LCD屏幕。这款芯片支持RGB565、RGB666以及RGB888格式的彩色显示,具有240x320像素的分辨率和最大60帧/秒的刷新率。在市场上,采用ST7789驱动IC的屏幕并不少见,例如1.3寸和1.54寸的屏幕均采用了这款驱动芯片。此外,值得注意的是,尽管驱动芯片相同,由于不同TFT厂家在设计接口时各有不同,所以使用体验可能会有所差异。
240x240屏幕介绍
有8个引脚,说明如下
和esp32接线方面
代码部分
在ESP32上使用ST7789驱动模块显示13张图片的。首先,它导入了必要的库,然后初始化了ST7789驱动模块,将背景设置为黑色。接着,它创建了一个包含13个文件对象的列表,这些文件对象分别对应13张图片。show_img()
函数是一个无限循环,它会遍历这13个文件对象,每次读取一张图片的数据,并将其显示在屏幕上。为了控制图片切换速度,代码中添加了一个0.1秒的延时。最后,main()
函数调用了show_img()
函数,程序开始执行。
项目源码以及库和文件点击下方链接
ESP32 单片鸡,记得开庭的时候带上你的单片鸡
from machine import Pin, SPI
import st7789_itprojects
import time
tft = st7789_itprojects.ST7889_Image(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
tft.fill(st7789_itprojects.color565(0, 0, 0)) # 背景设置为黑色
# 因为用到了13张图片,所以这里创建13个文件对象 放到列表中
f_list = [open("text_img{}.dat".format(i), "rb") for i in range(0, 13)]
def show_img():
while True:
for f in f_list: # 遍历13个文件,显示图片
f.seek(0) #文件指针拉回到开始处
for row in range(0, 240, 24*3):
buffer = f.read(11520*3)
tft.show_img(0, row, 239, row+24*3, buffer)
def main():
show_img()
if __name__ == "__main__":
main()