一、目的
这一节我们学习如何使用ESP32开发板,通过UART串口来控制屏幕JC028-QVGA-BSCZ-01-V01,屏幕固件版本:FW028_HD_SER_BSCZ_GD_V01。文末有购买地址。同时卖家会赠送一个USB转TTL的工具。宝贝图片如下:
商家赠送的USB转TTL模块
二、环境
ESP32(固件:esp32-20220618-v1.19.1.bin) + Thonny(V4.0.1) + UART串口屏JC028-QVGA-BSCZ-01-V01模块 + USB转TTL线 + 几根杜邦线 + Win10 64位商业版
接线方法:
三、串口屏设置上电自动加载指令(开机LOGO)
下载工具和资料,可以从卖家的详情页下载,也可以从我的网盘里下载:
链接: https://pan.baidu.com/s/1PFFLYBlCLAi0oDsGBJQOXw 提取码: h2jb 复制这段内容后打开百度网盘手机App,操作更方便哦
我们把USB转TTL线,分别连接电脑和屏幕:
然后准备一张和屏幕分辨率大小一样像素的图片,此处屏幕的位320*240。大家可以使用Windows系统自带画板Paint进行图片大小的设置。
步骤:1,打开一个图片。2,设置大小为320*240。3,另存为JPEG格式
我们打开SunStudio.exe,连接上串口,进行指令的烧录。
在数据发送区,分别发送如下指令:
图片LOGO显示效果
四、演示代码
from machine import Pin,UART
import time
def main():
#创建串口对象
uart = UART(1, baudrate=115200, tx=33, rx=32) # 这里设置为115200,不要设为9600,否则不通讯
#设置波特率
uart.write("BPS(115200);\r\n") # 9600 or 115200
time.sleep_ms(400) # >300ms
time.sleep(2) # 等待2秒为了查看效果
#写指令CLR()0~63清屏或填充
uart.write("CLR(1);\r\n")
time.sleep_ms(150) # >120ms
time.sleep(2)
#获取屏幕固件信息
uart.write("VER;\r\n")
time.sleep_ms(50) # >40ms
time.sleep(2)
#调节背光颜色
uart.write("BL(188);\r\n") # 0-255,其中0为全亮显示,255为关闭显示
time.sleep_ms(20) # >15ms
time.sleep(2)
#清屏
uart.write("CLR(2);\r\n") # 0-255
time.sleep_ms(150) # >120ms
time.sleep(2)
#屏幕方向转换
uart.write("DIR(1);\r\n") # 0-3分别为0度90度270度180度
time.sleep_ms(20) # >15ms
time.sleep(2)
#Flash的图片显示
uart.write("FSIMG(2097152,0,0,320,240,0);\r\n")
time.sleep_ms(300) # >270ms
time.sleep(2)
#显示48 点高的字符
uart.write("SBC(15);DC48(120,120,'你好',1,0);\r\n") #
time.sleep_ms(60) # >50ms
time.sleep(2)
'''
#画点
uart.write("PS(1,1,3);\r\n")
time.sleep_ms(30) # >20ms
time.sleep(2)
#画线
uart.write("PL(0,0,90,90,1);\r\n")
time.sleep_ms(40) # >30ms
time.sleep(2)
#画框
uart.write("BOX(0,0,100,100,1);\r\n")
time.sleep_ms(50) # >40ms
time.sleep(2)
#画填充框
uart.write("BOXF(0,0,100,100,1);\r\n")
time.sleep_ms(50) # >40ms
time.sleep(2)
#画圆
uart.write("CIR(10,10,5,2);\r\n")
time.sleep_ms(40) # >35ms
time.sleep(2)
#画填充圆
uart.write("CIRF(100,100,5,4);\r\n")
time.sleep_ms(40) # >35ms
time.sleep(2)
#显示48 点高的字符
uart.write("SBC(15);DC48(120,120,'Hello',1,0);\r\n")
time.sleep_ms(60) # >50ms
time.sleep(2)
#设置背景色需要和DCV或者DC指令结合一起使用
# uart.write("SBC(5);\r\n")
# time.sleep_ms(20) # >15ms
# time.sleep(2)
#显示32点高的字符带底色
uart.write("SBC(15);DCV32(30,128,'China',1);\r\n")
time.sleep_ms(50) # >40ms
time.sleep(2)
#显示按钮
uart.write("BTN(120,80,48,16,'Button',2,4,5,6);\r\n")
time.sleep_ms(50) # >42ms
time.sleep(2)
#模式切换
uart.write("MODE_CFG(0);\r\n")
time.sleep_ms(250) # >210ms
time.sleep(2)
#上电启动设置
uart.write("BOOT_START(123);CLR(15);DELAYMS(400);CLR(0);DELAYMS(400);BOX(0,0,175,219,1);DELAYMS(600);CLR(0);DELAYMS(400);FSIMG(2097152,0,0,86,100,0);MODE_CFG(1);\r\n")
time.sleep(2)
'''
while True:
for i in range(100):
#显示24x24字体需要配合清屏函数使用
uart.write("CLR(2);\r\n") # 0-255
time.sleep_ms(150) # >120ms
uart.write("DC24(0,0,'%.2d',1)\r\n"%i),time.sleep_ms(45)
#显示24x24字体不需要配合清屏函数
#uart.write("DCV24(0,25,'%.2d',2)\r\n"%i),time.sleep_ms(45)
if __name__ == "__main__":
main()
五、代码演示效果
内容太多,此处仅为部分演示效果。
六、中文显示疑问
这个屏幕是自带中文字库的,可是我使用Thonny去显示中文,屏幕总会显示乱码,有知道的童鞋,给我留言哈,谢谢!
但是使用SunStdio是可以的!屏幕可以正常显示中文。
七、屏幕购买
PS: 商家详情页展示的图片是这个,但是我收到的宝贝有点不一致。我收到的宝贝图片,具体请看文章开始处。
模块资料下载:http://m6z.cn/5AKV5Y
开发工具下载:http://m6z.cn/5tdna1