IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> USART HMI智能串口屏 一篇就够!保姆级教程 -> 正文阅读

[嵌入式]USART HMI智能串口屏 一篇就够!保姆级教程

目录

·HMI串口屏介绍

·HMI串口屏开发实操

? ? ?·准备

? ? ?·界面认识

? ? ?·写命令

? ? ?·下载

·HMI串口屏与单片机(stm32)双向通信

【 功能实现:

  1. STM32控制串口屏对应的数值、文本完成相应变化
  2. 串口屏控制STM32的LED翻转??
  3. 串口屏通过按键输入数值并发送给单片机,单片机接受并实时显示在串口屏上 ?】

先上效果视频

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.exeFramework无需自己去下载 一般下载的USART HMI时会自动弹出提醒你要下载

?? 下载工具:①SD卡+读卡器 或 ②USB转串口 或 ③USB转TTL(或!!!!

? ??

2.界面认识

????????①还未进入HMI文件的页面

先讲解几个常用或比较重要的工具

  1. 新建/打开文件
  2. 编译:检查整个项目是否有错 如是否命令格式/使用有错 是否图片坐标值无效等
  3. 调试:模拟项目
  4. 下载:前面说的第②种/第③种下载
  5. 工具:新建字库(如需在串口屏写文字 字库必须有)
  6. 帮助:有指令集和资料中心。指令集包括其所有的指令指南,资料中心跳转陶晶驰资料中心。有软件下载、工程样例、视频教程、常见问题锦集等。

????????②进入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);
		else
			HMI_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)

下载链接:https://download.csdn.net/download/weixin_54057317/20705110(直接下载!无需积分)

?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的资源与单片机和串口屏双向通讯的资源:

https://download.csdn.net/download/weixin_54057317/20705676

同时 点个赞吧~

?有什么问题都可以留言问哦!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:31:05  更:2021-08-05 17:31:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 22:07:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码