当前位置: 首页 > news >正文

3.16 haas506 2.0开发教程-example-JC035串口屏

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,flag2
    flag1 +=1
    n = 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 = True
    flag2 = False
    utime.sleep_ms(100)
    key1.disableIrq()
    key1.clearIrq()

#右键设置
flag2 = False
payment = True
def key2_callback(args):
    global n,flag2,payment
    if payment:
        if flag2:
            UART_send("CLR(0);DIR(1);BTN(160,100,64,32,'支付成功',0,0,3,0);\r\n")
            flag2 = False
            utime.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 = False
        else:
            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 = True
    utime.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. 测试结果

  • 开机界面显示请添加图片描述
  • 按下左键可以进行商品切换请添加图片描述
    请添加图片描述
    按下右键进入支付界面请添加图片描述
    请添加图片描述

相关文章:

  • DPDK的VFIO
  • 重要?2022年第二批四川省工程技术研究中心组织申报条件、时间、奖励及流程
  • 【老王读Spring Transaction-1】从EnableTransactionManagement顺藤摸瓜,研究@Transactional的实现原理
  • Caddy是什么
  • 脐带间充质干细胞
  • 取暖器遇上智能化!一张床如何分区温控,节能又好用
  • w字符编码
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • 【CSAPP】深入理解计算机系统 第九章 虚拟内存 动态链接 printf 17/26
  • 软文营销评论区怎样营造好的氛围?
  • Android Gradle plugin requires Java 11 问题解决
  • mysql安装,安装mysql配置教程(超级详细图解)
  • 为什么现在西红柿都“硬邦邦”的,放几个星期都不会坏?为你解答
  • java实现微信小程序获取手机号(htts接口实现)
  • 亚马逊,速卖通,国际站卖家为什么要做测评
  • Android组件 - 收藏集 - 掘金
  • Next.js之基础概念(二)
  • 面试总结JavaScript篇
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 微信小程序设置上一页数据
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​业务双活的数据切换思路设计(下)
  • #define,static,const,三种常量的区别
  • #pragma 指令
  • (2)nginx 安装、启停
  • (9)目标检测_SSD的原理
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)fgets与fputs函数详解
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (七)Knockout 创建自定义绑定
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Core中Emit的使用
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET NPOI导出Excel详解
  • .NET Reactor简单使用教程
  • .net 提取注释生成API文档 帮助文档
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .sdf和.msp文件读取
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Pointcut 使用
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [acm算法学习] 后缀数组SA
  • [BIZ] - 1.金融交易系统特点
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C\C++]读入优化【技巧】
  • [Godot] 3D拾取