USART HMI智能串口屏与单片机双向通讯
目录
·HMI串口屏介绍
·HMI串口屏开发实操
·准备
·界面认识
·写命令
·下载
·HMI串口屏与单片机(stm32)双向通信
【 功能实现:
- STM32控制串口屏对应的数值、文本完成相应变化
- 串口屏控制STM32的LED翻转
- 串口屏通过按键输入数值并发送给单片机,单片机接受并实时显示在串口屏上 】
先上效果视频
USART HMI智能串口屏整体功能展现
- HMI串口屏介绍
什么是HMI?
HMI 是Human Machine Interface 的缩写,“人机接口”,也叫人机界面。人机界面是系统和用户之间进行交互和信息交换的媒介, 它实现信息的内部形式与人类可以接受形式之间的转换。
什么是串口HMI?
串口HMI 就是设备封装好HMI 的底层功能以后,通过串口(USART 232)与用户MCU 进行交互,比如MCU 可以随时通过USART 发指令通知设备切换某个页面或者改变某个组件的属性。设备也可以随时通过USART 通知用户MCU 操作者目前触摸了页面上的某个组件或者设备当前进入了某个页面。
简而言之
USART HMI智能串口屏就是带串口控制的液晶屏(TFT-LCD)
那 为什么要用HMI串口屏?TFT-LCD触摸屏不够吗?
傻宝
触摸屏是这样的 这样的
而串口屏
是这样的 这样的
触摸屏的按键或许你得构思如何构建,页面返回你也许还需要清屏重新显示内容。而HMI串口屏只需要将自己设计的图片导入,在此基础上添加一下页面的切换口令(page)等等。因为单纯对屏幕进行而无需通信的操作完全不需要单片机。
简而言之&&个人认为
USART HMI智能串口屏
最直接的优势就是容易上手——界面的设计与串口屏自身的一些操作直接在软件上操作即可
最直观的优势就是界面专业化——根据不同主题设计不同风格的界面。
大概可能相较于TFT-LCD显示屏唯一的缺点就是——贵了一些
- HMI串口屏开发实操
1.准备
对串口屏进行开发即设计界面之前,你需要先准备好以下软硬件。
上位软件(开发软件):USART HMI + Framework 3.5(语言开发软件)
链接:http://tjcfile.iicp.net:885/USARTHMI/USARTHMIsetup_1.63.1.exe(Framework无需自己去下载 一般下载的USART HMI时会自动弹出提醒你要下载)
下载工具:①SD卡+读卡器 或 ②USB转串口 或 ③USB转TTL(或!!!!)
2.界面认识
①还未进入HMI文件的页面
先讲解几个常用或比较重要的工具
- 新建/打开文件
- 编译:检查整个项目是否有错 如是否命令格式/使用有错 是否图片坐标值无效等
- 调试:模拟项目
- 下载:前面说的第②种/第③种下载
- 工具:新建字库(如需在串口屏写文字 字库必须有)
- 帮助:有指令集和资料中心。指令集包括其所有的指令指南,资料中心跳转陶晶驰资料中心。有软件下载、工程样例、视频教程、常见问题锦集等。
②进入HMI文件的页面
进入前还需要根据自己的串口屏型号大小进行选择并设置横屏还是竖屏。
3.写命令
帮助的指令集里面有非常完整的指令集,功能如何,如何使用,例程都是比较详细的。这里仅示范几个命令的效果。
- Page 刷新页面
- 工具箱安置随意一个控件(因为 都有按下事件和弹起按键)。在控件属性处改变一些东西让控件更明显/更好看一些。(eg.文本的txt,数字的val,图片的pic)注意!txt、val必须要建字库,pic必须要添加图片。
- 新建一个页面(可自己命名 eg.page1)
- 在命令窗口的弹起事件输入page page1(page是命令 page1是页面名称) 或 page 1(1是页面的id号)
方框圈住为ID号,圆圈圈住为名称
最后一步 调试get√(效果如下)
串口屏刷新页面功能展展示(调试)
·prints 从串口打印一个变量/常量
·printh 从串口打印一个Hex
安置一个数字控件 按下事件如上 弹起事件是n0.val+=1
调试效果如下(详细解释大家就去看help吧 不懂再问哦 大家一定一定要多看help 多写命令!)
【prints返回的变量默认是四个字节整形数据hex数据 储存方式为小端模式 即地位在前
,后面的0作用是发送长度为自动长度即实际长度】
串口屏发送命令功能展示
4.下载
①SD卡+读卡器
串口屏上电:VCC、GND和单片机的5V、GND接好,单片机上电即可,这是一种方式,总之,VCC和GND要对应接好就可以了
文件→输出生产文件(到SD卡、即读卡器插入显示的某盘)→将SD卡插入串口屏→串口屏上电→下载完成100%→串口屏断电→拔SD卡→再上电即可√
注意顺序!SD卡必须在上电前插入,SD卡必须在断电后拔出
- ②/③
双向通讯的连接方式 VCC-VCC GND-GND RX-TX TX-RX
- 联机操作 help里面有详细讲
- 软件下载→选择对应串口和波特率→下载(注:速度极慢)
先hex发送 ff ff ff(结束之前的指令)
字符串发送(取消hex发送)connect 0xff 0xff 0xff
收到comok 1,101,TJC4024T032_011R,52,61488,D264B8204F0E1828,16777216即为成功
一般串口屏都默认是9600的波特率,下载也可以让它自动搜索
- HMI串口屏与单片机(stm32)双向通讯
1.STM32控制串口屏对应的数值、文本完成相应变化
stm32单向控制只需掌握改变串口屏控件属性的命令,并会用串口将其发送
void HMI_SendNum(USART_TypeDef* USARTx,u8 *data,u8 len,u16 Num,u8 len2)
{u8 t;for(t=0;t<len;t++){ while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,data[t]); }for(t=0;t<len2;t++) {while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,'0'+(Num/HMI_Pow(len2-t-1))%10); }while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);
}void HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
{u8 t;for(t=0;t<len;t++){ while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,data[t]); }while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0X22); for(t=0;t<len2;t++) {while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,text[t]); }while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0X22); while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);USART_SendData(USARTx,0XFF);
}
使用:
HMI_SendText(USART3,"t0.txt=",7,"你真漂亮",8); //一个汉字为两个字节 四个汉字为八个字节
if(Buttonflag) //按键标志HMI_SendNum(USART3,"q0.picc=",8,5,1);elseHMI_SendNum(USART3,"q0.picc=",8,4,1);
2.串口屏控制STM32的LED翻转
3. 串口屏通过按键输入数值并发送给单片机,单片机接受并实时显示在串口屏上
实现二者的双向通讯,我们需要制定一个数据格式(方便写代码等)
我制定的数据格式为:
页面 id + 控件id + 十位数值 + 个位数值 + 0D + 0A
0D 0A的作用是什么?
详细大家可以去看stm32基于库函数的usart文件夹介绍
这里简单解释:串口接收到回车(0D 0A)则标记 USART_RX_STA 的第 15 位,这样即为完成一次接收。而我们在执行完相应程序式将该位清除,从而可以开始下一次的接收。
体现在代码中就是
if(USART3_RX_STA&0x8000) //接受完成{if(USART3_RX_BUF[0]==0x01&&USART3_RX_BUF[1]==0x03) {Event_1(); //事件一USART3_RX_STA=0; //清除标志位}if(USART3_RX_BUF[0]==0x02&&USART3_RX_BUF[1]==0x12) {Event_2(); //事件二USART3_RX_STA=0; //清除标志位}if(USART3_RX_BUF[0]==0x03&&USART3_RX_BUF[1]==0x03&&USART3_RX_BUF[2]==0&&USART3_RX_BUF[3]==0) {Event_3(); //事件三USART3_RX_STA=0; //清楚标志位}}
既然已经能够顺利接受数据,那我们重点就放在解析数据。
可以设置格式统一的包头(比如get命令它的返回值开头一定是0x70/0x71),通过检测包头以判断
数据是否开始。也可以简单粗暴的直接if,满足返回命令的一段独一无二的值或所有值即可执行操作(函数中写满足我们相应功能的函数 如LED反转、数值计算之后再显示)。由于功能并不复杂,我们选择第二种,简单粗暴。而我们秩序
通常出口屏需要反复调试修改,大家需要熟练掌握调试、利用串口助手监控串口屏往串口发送了什么。(ps:用前面②/③的连接方式,用串口助手监控该串口即可)
最后 如果没有串口屏也没有单片机怎么办?
介绍一种设置虚拟串口以供靠软件即可观察双向通讯的数据。
常用的虚拟串口软件:Virtual Serial Port Driver(VSPD)
下载链接:vspd7.2.308.zip-嵌入式文档类资源-CSDN下载(直接下载!无需积分)
1.将一对串口设置为虚拟串口
2.如图设置(虚拟串口为COM1和COM2)
然后在串口发送就相当于单片机对串口屏发送啦
再补充说一点:
单片机是有很多串口的 我们前面说的VCC-VCC GND-GND RX-TX TX-RX
RX可以是PA10(USART 1) 也可以是 PB11(USART 3)
与之相对应
TX可以是PA9(USART 1) 也可以是 PB10(USART 3)
但是单片机烧入程序是需要PA9与RX PA10与TX相连的
所以我们想让串口屏与之双向通讯的时候还得拔掉跳线帽
所以大家最好用别的串口
最后的最后!
放上对于HMI的资源与单片机和串口屏双向通讯的资源:
USART-HMI串口屏与STM32相互通讯.zip-嵌入式文档类资源-CSDN下载USART-HMI串口屏与STM32相互通讯实例。包括如下内容:1.STM32控制串口屏对应的数更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_54057317/36465240
同时 点个赞吧~
有什么问题都可以留言问哦!
USART HMI智能串口屏与单片机双向通讯相关推荐
- HMI智能串口屏——在STM32开发板上的实战应用及其详解
HMI智能串口屏--在STM32开发板上的实战应用及其详解 一.HMI智能串口屏使用步骤 二.附录 一.HMI智能串口屏使用步骤 安装USART HMI软件 (一般买的串口屏里面,商家送的资料里面都有 ...
- usart hmi(串口屏)常用命令
1. 关于页面与页面之间的跳转 page 页面刷新指令 命令格式 :page PID (PID:页面ID或页面名称) 例如:在一个hmi工程里有几个页面A1,A2,A3等,如果想从页面A1切换到页面 ...
- HML串口屏与单片机通信
HML串口屏发送到单片机 两者互相发送数据及数据解析 char n=0xFF; void HML_end() { int i=3; while(i–) printf(&n); } void b ...
- STM32与串口屏交互(USART HMI)
STM32与串口屏交互(USART HMI) 一.前期准备 二.串口屏上位机使用方法以及界面设计 三.STM32软件编程 四.单片机发送数据的字符串指令汇总 五.总结 不管是备战电赛还是准备毕设,一块 ...
- 51单片机驱动HMI串口屏,串口屏的下载方式
51单片机驱动HMI串口屏,串口屏的下载方式 串口屏 串口屏的程序下载 51程序 总结 串口屏 串口屏是一个集成了单片机的屏幕模块,采用的是TTL串口协议,可以直接通过对应指令控制屏幕, 本文采用的串 ...
- 用智能TFT液晶模块这种串口屏做产品界面设计太简单了,大大的节省了开发时间...
随着科技的发展,TFT液晶显示屏在我们日常中可以随处可见. 工业设备上的显示也逐渐由段式显示.黑白显示转向彩色的TFT液晶显示屏. 普通的TFT液晶显示屏由于开发起来比较麻烦, 需要嵌入式工程时写程序 ...
- STM32与中显串口屏的通信
STM32与中显串口屏的通信 本文将简要介绍STM32单片机和武汉中显串口屏之间的通信实现过程.不过使用大彩.迪文这些公司的串口屏的同学也能参考一下,它们的通信协议好像一样. 注意:我代码用的ardu ...
- 串口屏应用案例_大彩串口屏在高拍仪上的应用方案
一.概况 高拍仪也有人称为速拍仪,或有的教育机构称之为备课王.一般来说,我们称之为高拍仪.是最新研发出来的一款超便携低碳办公用品,也是一款办公领域革新性产品,它具有折叠式的超便捷设计,能完成一秒钟高速 ...
- 合泰HT32 淘晶驰TJC--T0串口屏学习笔记
串口屏开发环境搭建 串口屏的优点就不用多说了,用过的老师傅都说好! 开发专用上位机软件下载:传送门主要用来设计屏幕界面的,简单方便. 1.软件安装好后点击新建工程 2.选择你需要存放的目录,输入文件名 ...
最新文章
- 微信小程序wx:for 的使用
- 今天意外和身份证结缘
- CCF认证历年试题解【网上跟帖,请不要使用称呼】
- Mongodb基本操作之.net
- 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...
- 判断groupbox中所有的edit是否为空,并给出空的哪个edit为空
- JailbreakMe.com-最新浏览器模式破解iPhones,iPads和iPod Touches方法
- mysql防止预约重号_mysql 防止重复插入唯一限制的数据
- Oracle出现ora-01045的解决方法-可用
- VB手控Combobox的打开或收起
- 医疗大数据的风险及应对方法
- UE4/UE5 WebBrowser无法播放直播流的问题
- 适用于vue的移动端table插件_vue-mobile
- STM32H7+LAN8720A之ETH与LWIP配置问题(End)
- 连接linux工具Mtr,Mac、linux和windows mtr路径探测工具安装使用
- java aes cbc iv_关于AES加解密中CBC模式的IV初始化向量的安全性问题
- 微信公众号H5页面缓存问题(微信缓存了 index.html 入口)
- Datawhale组队学习周报(第026周)
- 【WebLogic使用】1.WebLogic的下载与安装
- Unity ParticleSystem 之 简单的电子自旋 Electrons ParticleSystem 粒子特效