st7735屏幕移植-高清图片显示

本文介绍了如何将国外大佬的Arduino ST7735驱动代码移植到F103主控,并实现视频播放,涉及屏幕驱动原理、SPI配置、DMA使用和图像处理步骤,适合嵌入式开发者学习.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


最近在b站上看到有这个,是国外的一个大佬做的,主控用的是f103,然后屏幕用的是ST7735的驱动IC,该大佬还做了播放视频做的真不错,就想着来复现下,不过大佬是用的ARDUINO写的代码,属实是太强了,然后我把他移植到了我的驱动这边来尝试下,效果如下所示:
在这里插入图片描述

1、屏幕驱动原理

我们常见的st7735屏幕大概这样的,可能有一点区别,但是区别不大,最起码的引脚都是有的,可以当成同一种使用。
在这里插入图片描述
接口说明:

序号引脚标号说明
1VCC5V/3.3V电源输入
2GND接地
3CS液晶屏片选信号,低电平使能
4RESET液晶屏复位信号,低电平复位
5A0液晶屏寄存器/数据选择信号,低电平:寄存器,高电平:数据
6SDASPI总线写数据信号
7SCKSPI总线时钟信号
8LED背光控制,高电平点亮,如无需控制则接3.3V常亮

屏幕数据手册太多了,建议需要的自己看: ST7735数据手册
在这里插入图片描述

2、配置驱动

首先我们配置SPI,这里可以尽量拉高,我这里应该是拉到最高了,SPI的最大通信速率取决于低速设备的通信速率。
在这里插入图片描述
这里我们可以来打开DMA,这样通过发送缓存数组就可以达到一个很快的刷新率:
在这里插入图片描述
之后配置一些相关的引脚,主要是复位引脚然后片选还有背光,这里背光是可以调节的,甚至如果不想设置背光,可以直接将他接到3.3v的输出引脚上!
在这里插入图片描述
下面就是我们要移植的驱动了,首先还是修改我们的宏定义,使宏定义符合要求
在这里插入图片描述
然后在cfg文件中有是否开启DMA的选项,这里我们通过改变宏参数就可以选择是否使用DMA
在这里插入图片描述
下面就可以编写屏幕测试函数了,这个测试也是一个github上大佬写的,使用了各种图形,还是很不错的!
在这里插入图片描述
最后我们就可以把程序下载到开发板来测试了:
在这里插入图片描述
这里我展示下使用字符串来测试,初始化代码如下所示:
在这里插入图片描述
将程序下载到开发板,就可以看到屏幕上已经显示出我们的数据了:
在这里插入图片描述
下面来试下图片,首先我们需要把图片提取每个像素点的RGB565的数值,这里提供了python的程序,可以参考使用这个程序来设计:

from PIL import Image
import sys
import os


if len(sys.argv) != 4:
    print("Usage: {} <image-file> <width> <height>".format(sys.argv[0]))
    sys.exit(1)

fname = sys.argv[1]

W = sys.argv[2]
print("\r\n")
print("<width> " + str(W))

H = sys.argv[3]
print("<height> " + str(H))

img = Image.open(fname)

if img.width != int(W) or img.height != int(H):
    print("Error: 图片尺寸输入错误 )!!!");
    sys.exit(2)

f = open("picFile.txt", "a")

f.write("// size " + str(W) + " x " + str(H) + " \n");
f.write("const unsigned short img[] = { \n ");

for y in range(0, img.height):
    s = ""
    for x in range(0, img.width):
        (r, g, b) = img.getpixel((x, y))
        color565 = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3)
        color565 = ((color565 & 0xFF00) >> 8) | ((color565 & 0xFF) << 8)
        s += "0x{:04X},".format(color565)
    s += "  \n"
    f.write(s)

f.write("}; \r\n")
f.close()
print("\r\n转换完成\r\n")

该程序如果使用的是pycharm这类的ide是无法实用的,需要我们在命令行中进行调用,调用方法如下所示:
在这里插入图片描述
最后我们将转换好的数据填充到我们准备好的数组中:
在这里插入图片描述
将程序下载到开发板就可以看到现象了:
在这里插入图片描述

3、源码

本次文件过大,包括复现的大佬的代码,这里就不贴了,直接放到我的gitee上,需要的可以去查看:源码
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃成蹊2.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值