haas506开发教程-example-JC035串口屏
- JC350串口屏
- 1.硬件说明
- 2.软件说明
- 3.调试软件
- 实现
- 1. 图片编辑
- 2. 开发板测试
- 案例连线
- 代码
- 3. 测试结果
JC350串口屏
案例使用的是3.5寸(JC035)集成串口屏,通过TTL串口进行连接.以下是JC350串口屏粗略介绍,详细信息自行翻阅资料.
1.硬件说明
- 集成屏支持UART串行口(TX和RX两根线),其中TX为主控的数据发送端,RX为主 控的数据接收端,因此单片机和集成屏的连接只需要4根线连接即可.
- 集成屏的TX和客户主机的TX连接,集成屏的RX和客户主机的RX连接,不需要 交叉连接。
- 集成串口屏默认为5V供电,如果客户主机系统只能提供2.8~3.3V供电电压的话, 需修改背面PCB的跳线电阻。
2.软件说明
- 模块的显存和屏幕的分辨率是一一对应,如JC024模块的 显存为:240 * 320 * 2=153600字节,其中的2表示一个显存单元占2个字节(即16位)
- 集成串口屏上电后自动完成各个功能部件的初始化(LCD、FLASH),因此,主机需 要等待1S左右,确保模块内部初始正常后才能够给它送指令,因此上电流程必须满足如下 的条件:
- 串口屏通过发送特定指令完成相应功能,使用简单.例如需要清除屏幕内容只需要通过TTL串口向屏幕发送CLR©即可,c表示清屏使用的背景颜色.
- 模块允许串口一次性最多发送24条指令,这样可以大大提高编程的效率,但一定要注意 指令的最后一定也要以\r\n为结束符,发送后的等待时间为最后一条指令的等待时间。
3.调试软件
JC035串口屏有自带的辅助测试软件,可以用来发送指令,处理图片.
实现
案例说明
- 本案例简单模拟自动售货机购买商品界面流程 , 主要介绍串口屏的使用方法.
- 案例代码流程:
- 开机进入商品选择界面
- 按下左键切换商品,
- 按下右键进入支付界面,再次点击右键确认支付,按下左键取消支付
1. 图片编辑
使用开发工具将需要的图片素材下载到集成串口屏中.
-
先将需要的素材像素处理成合适大小,案例使用的屏幕大小为480x320,图片像素最大为479*319.
-
使用串口将电脑连接上集成串口屏,打开开发工具,打开 [连接] 打开对应串口
-
打开 [工具] → [图片编辑],按下图顺序将所需素材合并生成一个bin文件.
-
发送bin文件,等待写入完成
-
查看bin档,可以看到每张图片的开始地址和像素大小(发送指令需要用到开始地址)
2. 开发板测试
将集成串口屏连接开发板,烧写程序
案例连线
代码
如果要显示中文代码烧录时选择GB2312编码
mian.py
# coding=utf-8
# This is a sample Python script.
import utime
from driver import UART
from driver import GPIO#按键实例化
key1=GPIO(10,10)
key2=GPIO(10,10)
key1.open("key1")
key2.open("key2")#饮料属性设置
beverages = [2402754,2482754,2562754,2642754]
QR_code = ['雪碧','可乐','冰红茶','绿茶']
price = ['30元','40元','35元','60元']#左键设置
i = len(beverages)
flag1 = 0
def key1_callback(args):global flag1,n,payment,flag2flag1 +=1n = flag1%i #一次性发送指令 清屏,屏幕方向,二维码,价格按钮,商品图片UART_send("CLR(0);DIR(1);QRCODE(40,60,%s,200,2);BTN(90,230,64,32,%s,0,0,4,0);FSIMG(%d,240,60,200,200,0);\r\n"%(QR_code[n],price[n],beverages[n]))payment = Trueflag2 = Falseutime.sleep_ms(100)key1.disableIrq()key1.clearIrq()#右键设置
flag2 = False
payment = True
def key2_callback(args):global n,flag2,paymentif payment:if flag2:UART_send("CLR(0);DIR(1);BTN(160,100,64,32,'支付成功',0,0,3,0);\r\n")flag2 = Falseutime.sleep(1)UART_send("DIR(1);FSIMG(2097152,0,0,479,319,0);BTN(100,30,64,32,'请按左键选择商品',0,0,2,15);\r\n")#开机logo# UART_send("CLR(15);DIR(1);BTN(100,100,64,32,'请按左键选择商品',0,0,3,15);\r\n")payment = Falseelse:UART_send("CLR(0);DIR(1);BTN(60,100,64,32,'请确认是否支付%s?',0,0,4,0);BTN(400,270,64,32,'是',0,0,1,0);BTN(40,270,64,32,'否',0,0,2,0);\r\n"%price[n])flag2 = Trueutime.sleep(1)key2.disableIrq()key2.clearIrq()def UART_send(data):writeBuf0=bytearray(data)uart0.write(writeBuf0)if __name__ == '__main__':uart0=UART()uart0.open("serial1")utime.sleep(1)writeBuf0=bytearray("DIR(1);CLR(0);\r\n")uart0.write(writeBuf0)utime.sleep_ms(10)#开机选择商品界面UART_send("DIR(1);FSIMG(2097152,0,0,479,319,0);BTN(100,30,64,32,'请按左键选择商品',0,0,2,15);\r\n")utime.sleep_ms(1000)key1.enableIrq(key1_callback)key2.enableIrq(key2_callback)
board.json
{"name": "haas506","version": "2.0.0","io": {"key1": {"type": "GPIO","port": 20,"dir": "irq","pull": "pullup","intMode":"rising"},"key2": {"type": "GPIO","port": 18,"dir": "irq","pull": "pullup","intMode":"rising"},"serial1":{"type":"UART","port":0,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"},"serial2":{"type":"UART","port":1,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"},"serial3":{"type":"UART","port":2,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"}},"debugLevel": "ERROR","repl":"enable","replPort":2}
3. 测试结果
- 开机界面显示
- 按下左键可以进行商品切换
按下右键进入支付界面