目录
本次实验主要是学习使用显示器以及SPI,SPI在之前介绍过,在此就不再介绍了,也是疯狂调库就行了,但是有关显示图片的东西还是比较新颖的,需要把图片解码然后再显示,这个过程使用到了Python程序,然后把解码之后的文件也使用到了我们之前学的WIFI通信的知识,但是这部分原理我不太懂,目前只会使用,到时候再来研究一下。
https://player.bilibili.com/player.html?aid=432587740
显示屏1
https://player.bilibili.com/player.html?aid=945092540
显示屏2
(1条消息) (32)STM32——SPI实验_花园宝宝小点点的博客-CSDN博客
https://blog.csdn.net/weixin_66578482/article/details/126538043(1条消息) (十七)51单片机——AD/DA转换_花园宝宝小点点的博客-CSDN博客_51ad转换
https://blog.csdn.net/weixin_66578482/article/details/126165033
这些是有关SPI的原理部分,在此就不再介绍了。
用到了许多库和文件,这样肯定跑不通的,有需要的同学可以找我或者去B站看视频。
# 显示文字,实验1
import random
from machine import Pin, SPI
import st7789
import st7789py
from romfonts import vga2_bold_16x32 as font
# 解决第1次启动时,不亮的问题
st7789.ST7789(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
# 创建显示屏对象
tft = st7789.ST7889_Image(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
# 屏幕显示黑色
tft.fill(st7789py.color565(0, 0, 0))
def show_text():
for rotation in range(4):
tft.rotation(rotation)
tft.fill(0)
col_max = tft.width - font.WIDTH*6
row_max = tft.height - font.HEIGHT
for _ in range(100):
tft.text(
font,
"ChenYi!",
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))
)
# 随机显示Hello!
while True:
show_text()
# 显示图片
from machine import Pin, SPI
import st7789
tft = st7789.ST7889_Image(SPI(2, 60000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
tft.fill(st7789.color565(0, 0, 0)) # 背景设置为黑色
def show_img():
with open("text_img.dat", "rb") as f:
for row in range(240):
buffer = f.read(480)
tft.show_img(0, row, 239, row, buffer)
show_img()
# 显示GIF
from machine import Pin, SPI
import st7789
import time
tft = st7789.ST7889_Image(SPI(2, 80000000), dc=Pin(2), cs=Pin(5), rst=Pin(15))
tft.fill(st7789.color565(0, 0, 0)) # 背景设置为黑色
# 因为用到了13张图片,所以这里创建13个文件对象
f_list = [open("img{}.dat".format(i), "rb") for i in range(1, 14)]
def show_img():
while True:
for f in f_list: # 遍历14个文件,显示图片
f.seek(0)
for row in range(0, 240, 24):
buffer = f.read(11520)
tft.show_img(0, row, 239, row+24, buffer)
show_img()
学到了许多之前不了解的东西,也意识到了Python的强大之处,虽然慢一点,但是却十分方便。