文章目录

  • 1、HMI串口屏介绍
    • 1、选型介绍
    • 2、开发工具
    • 3、新建工程
  • 2、HMI串口屏常用控件
    • 1、字库图片
    • 2、页面切换
    • 3、字符最大长度
    • 4、全局还是私有
    • 5、亮度调节和波特率
    • 6、变量
    • 7、定时器
    • 8、初始化事件
  • 3、串口屏数据交互
    • 1、串口发送数据
    • 2、模拟器仿真
    • 3、发送指令改变控件的值
  • 4、源码

感觉屏幕基本上算是展示类比赛比较常用的控件了,然 后是像电赛这样的,需要就是题目有很多步,需要我们一步步的去设置模式,传统的方式是按照按键等方式进行响应,当然使用触摸屏等也是可以的,一般现在也有很多项目会采用屏幕来做一些信息的展示之类的,但是做成一个好看的GUI未免太过麻烦了,所以不如 直接就二次开发GUI,使用别人已经做好的GUI,使用上位机进行编程呢个,就会相对而言方便很多!

所以做个比赛,如果单纯是为了拿个奖,拿到证书,建议还是可以怎么方便怎么来,怎么快怎么来,时间越多,迭代的速度就越快啊!

当然使用按键和触摸屏也可以参考我之前的博客:

1、HMI串口屏介绍

大概两年前我开始从学长那边接触到串口屏,后面就一直用串口屏了,比较推荐就是陶晶驰的串口屏,开发起来比较方便!

1、选型介绍

官方宣传图给串口屏做的页面还是不错的,毕竟东西效果好才方便卖出去对吧,串口屏页面如下所示:

然后目前陶晶驰的串口屏有几个系列,我们打开官方上位机然后新建设备就能看到:

这里注意就是T0的好像快停产了,尽量不要用了吧,不过也是最便宜的,记得当时买的时候大概也就30来块钱一块的样子,最近受疫情影响好像是涨价了一点的。

另外就是这个触摸屏有电容和电阻屏两种,电容屏的价格比电阻屏是要稍贵一点的,但是同样的就是电容屏触摸的时候是可以就是多点触摸,但是电阻屏需要单点触摸,就是像我们操作以前那些旧机器的时候要用指甲去按下才行的,比较容易的区分就是电阻屏的屏幕引出的线这里有较明显的四根线,如下所示:

2、开发工具

使用串口屏有几个网站还是必不可少的,可以帮助我们查资料用别人的模版

首先是官方的一个资料网站,官方固件的升级更新都会在这里:USART HMI资料中心

我们可以在上面获取我们开发串口屏需要的上位机,上位机就是一个官方写的上位机工具,还是很方便的:
关于这里屏幕型号的选择,一方面是可以就是通过我们直接查看我们购买的淘宝介绍,另一方面也可以直接就是看屏幕背面的白色丝印,只要能对应的上就行了,下图展示了丝印所在的位置:

3、新建工程

这里我们新建工程的话不会像官方展示的工程那样炫酷的哈,如果什么都不做就的确会是一片空白,就什么都没有的那种:

所以这里我就比较推荐这个了:在线PS,因为我们要做的也不是特别大的海报什么的比较牛皮的工程,只是给自己页面做个背景罢了,所以随意一点就行了,不用管太多了,直接上吧,这里我直接用的官方给的模版,因此第一步就是修改图像大小

取消图像的这个横纵比的链接关系,输入我们想要设置的值,当然这里就是指我们屏幕的分辨率了

接下来就可以导入图片到我们屏幕里面了!

2、HMI串口屏常用控件

开发串口屏其实最多的就是开发他的屏幕控件了,这里采用的是比较常见的GUI布局的方式来进行的开发,常见的GUI如下所示:(这里注意就是不是所有的控件都可以用的,我这里用的是X3版本的,基本上除了视频用不了都是可以用的,但是T0系列不能用的控件就比较多了,但是最基本的一些控件还是有的),最让我吐槽的还是T0系列背面明明放了一个SD卡的插槽却无法使用文件流的插件,等于这个SD卡只能用来升级固件

这里控件我就不详细的一个个介绍了,因为官方教程里面都写过了,官方对每一个控件都写过比较详细的说明,这里我只是挑几个觉得比较常见的功能做个介绍!

1、字库图片

其实对于串口屏开发而言,第一步应该是准备素材还有字库,当然这两部其实都不怎么耗费时间罢了,他们都在左上方的工具里面可以找到

下面就可以开始制作字库了这里如果不是常用的字库就完全可以用这个范围,因为可以节约内存嘛

选用指定字符的时候就可以输入我们需要的字符了,为啥要这样呢,因为这个屏幕其实本身也是单片机来控制的,单片机的FLASH一直都是稀缺资源,所以肯定就是能省一点就是一点嘛,尽量不要浪费资源

2、页面切换

这里我们在右上角可以看到页面新增的指令,点击加号就可以切换页面

页面也换的逻辑也是只需要我们就是稍微编写下逻辑性的代码即可,比如下面按钮的弹起事件设置为page page1就是页面切换到page1了

3、字符最大长度

这里我们经常要给变量设置一些初始值或者是一些预设的值,这里要注意的的就是这里的这个字符最大长度,这里字符最大长度决定了能写多大的变量,这里还是很常规的就是中文两个字节,然后字母数字都是一个字节,字符串长度不够会设置失败

4、全局还是私有

全局还是私有变量决定了以下两种情况:

  • 1、刷新页面这个变量会不会清零
  • 2.是不是能在其他页面改变这个变量

5、亮度调节和波特率

这个基本上是比较常见的功能了,因为一个是常见外观,然后一个是通信上很常见的设置,这里我们可以在上电的时候设置好,当然就是也可以在后面对他们进行修改

下面是我使用滑块来对他进行修改的示例

6、变量

这里官方还提供了一个变量的控件,这个控件的话就我个人理解主要是做一些标志位的处理,然后一些数据的暂存这样的功能类似的

7、定时器

通过设置定时器可以设置一些定时事件,比如更新页面这样的,定时器有个比较常见的就是开启和关闭,可以通过按钮来打开或者关闭定时器,这样可以玩的花样就多了

8、初始化事件

在屏幕的右边一侧可以看到这个初始化,这个部分的代码只会执行一次,里面有一些注释,主要是一些全局变量然后还有上电刷新的页面,当然就是波特率还有背光亮度也可以在这里设置

3、串口屏数据交互

1、串口发送数据

屏幕提供了两种方式进行串口的数据收发,分别是printh这个一般是用来发送hex的。

然后就是prints,这个就可以发送变量或者常量了,当然就是这个后面还要说明长度大小,具体的打出来都会有官方提示的

2、模拟器仿真

这里我们可以就是点击调试进入模拟器仿真

模拟器页面如下,可以发送指令和查看我们模拟器返回的数据,这个应该是比较真实的

提现比较真实的就在这里了,他这里还提供了这个虚拟SD卡文件,就是说比如我们要操作这个虚拟SD卡的时候,按理说没有真的SD卡就很难操作对吧,但是他这里的虚拟SD文件就可以查看我们SD卡到底写入了什么,基本和实际情况是一致的!

卡伊打开这个虚拟SD卡文件看到我们写入的信息如下

3、发送指令改变控件的值

这里发送指令和我们在上位机里面的操作是一样的,比如我们要修改n0控件的值,发送n0.val=100就可以了

但是使用单片机来发送的话我们要加上一个介绍标志,没发送结束标志就认为没有修改,结束指令就是0xff,0xff,0xff,这样连续发送三个就可以了

这里官方还给了这个发送函数,可以看到也是这样的一个逻辑

下面是改变字符串的内容的
当然这个并不复杂我们也可以就是用字符串拼接的方法来实现我们的目的!

4、源码

hmi.c

/********************************
hmi部分
********************************///10的乘方函数,用于判断位数
uint32_t HMI_Pow(uint8_t n)
{uint32_t result = 1;while(n--)result *= 10;return result;
}
//数值发送函数
//USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能串口
//u16 *data:上位机上数字位相应的改变数值代码
//u8 len:*data代码的长度。
//u16 Num:需要显示的数值,注意开头0不显示
//u8 len2:需要显示的数值的位数
void HMI_SendNum(UART_HandleTypeDef *USARTx, uint8_t *data, uint8_t len, uint16_t Num, uint8_t len2)
{uint8_t t;for(t = 0; t < len; t++){while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (data[t] & (uint16_t)0x01FF);}for(t = 0; t < len2; t++){while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (('0' + (Num / HMI_Pow(len2 - t - 1)) % 10) & (uint16_t)0x01FF);}while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);
}
//字符串发送函数:HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
//            USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能该串口
//            u16 *data:上位机上文本位相应的改变数值代码,如"t0.txt="、"t1.txt="
//              u8 len:*data代码的长度。如"t0.txt="长度为7。
//            u8 *text:需要串口输出显示的文本
//            u8 len2:需要显示的文本的长度,英文一个字符一字节、汉字一个字两个字节void HMI_SendText(UART_HandleTypeDef *USARTx, uint8_t *data, uint8_t len, uint8_t *text, uint8_t len2)
{uint8_t t;for(t = 0; t < len; t++){while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (data[t] & (uint16_t)0x01FF);}while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0X22 & (uint16_t)0x01FF);for(t = 0; t < len2; t++){while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (text[t] & (uint16_t)0x01FF);}while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0X22 & (uint16_t)0x01FF);while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);while(__HAL_UART_GET_FLAG(USARTx, UART_FLAG_TC) != SET);USARTx->Instance->DR = (0XFF & (uint16_t)0x01FF);
}

水比赛系列-HMI串口屏的使用相关推荐

  1. STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏

    STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏 串口屏 基础指令集 硬件和接线 接线 实验前准备 STM32程序 串口程序 主函数 实验现象 总结 串口屏 串口屏是一个集 ...

  2. 51单片机驱动HMI串口屏,串口屏的下载方式

    51单片机驱动HMI串口屏,串口屏的下载方式 串口屏 串口屏的程序下载 51程序 总结 串口屏 串口屏是一个集成了单片机的屏幕模块,采用的是TTL串口协议,可以直接通过对应指令控制屏幕, 本文采用的串 ...

  3. 连接串口_气压计PTB330连接HMI串口屏

    本篇约1700字10图 分享人:张彦飞 (菏泽) ---全文概述 这是一篇"小创造"的开发经验分享. 在用振筒气压仪故障,购买新气压显示仪器的申请迟迟未通过,聪明的机务员巧用备件, ...

  4. STM32物联网项目-HMI串口屏

    HMI串口屏实验 串口屏 屏幕使用的是淘晶池的串口屏,显示内容可以通过官方上位机来编辑,屏幕学习平台:http://wiki.tjc1688.com/doku.php?id=start 通信原理:屏幕 ...

  5. 基于HMI串口屏的协议(STM32)

    基于HMI串口屏的协议(STM32) 提示: 硬件:STM32H750VBT6.USART_HMI(3.5寸基本型)(TJC4832T035_011X) 官方资料网站:HMI 文章目录 基于HMI串口 ...

  6. 淘晶驰 usart hmi( 串口屏)介绍

    usart hmi(串口屏)介绍 https://blog.csdn.net/IRQHandler/article/details/84570463 什么是 HMI  HMI是Human Machin ...

  7. (跨平台UI)单片机用MTF HMI串口屏 UART通信易用兼容

    MTF Sagittarius 跨平台串口显示软件 MVVM 组态 MTF Sagittarius Serial Display v1.0 可直接用于产品, 或单片机版的串口屏调试 windows, ...

  8. usart hmi(串口屏)介绍

    什么是 HMI  HMI是Human Machine  Interface 的缩写, "人机接口" ,也叫人机界面. 什么是usart hmi usart hmi 就是设备封装好 ...

  9. USART HMI智能串口屏与单片机双向通讯

    目录 ·HMI串口屏介绍 ·HMI串口屏开发实操 ·准备 ·界面认识 ·写命令 ·下载 ·HMI串口屏与单片机(stm32)双向通信 [ 功能实现: STM32控制串口屏对应的数值.文本完成相应变化 ...

  10. 淘晶驰串口屏入门(五)下拉框 选择文本 动画 视频 外部图片

    一.下拉框控件 1.注意cb+数字开头的为下拉框控件 2.只有x3和x5系列的串口屏支持下拉框控件,k0,t0和t1系列不支持 3.设置path属性来给下拉框赋值,每个值之间用换行隔开 4.val属性 ...

最新文章

  1. filter执行先后问题_Thinkphp5框架变量覆盖导致远程代码执行
  2. 特斯拉“自动召唤”有软肋!正面识别很厉害,侧面物体看不见,实测差点碾过行人脚面...
  3. 【机器视觉】 until算子
  4. 【C++】Visual Studio教程(七) -修改 Visual Studio
  5. oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
  6. vs怎么把文字超链接_「Excel技巧」Excel表格如何制作带超链接的导航目录
  7. Android系统信息获取 之十三:Linux内核版本信息获取
  8. Oracle GoldenGate 下载地址
  9. 手写识别是图像识别吗_创建日语手写识别器
  10. x509证书有效期校验过程_基于TLS1.2(GmSSL)
  11. MacOS升级Big Sur后32位锐捷客户端排坑历程
  12. Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes解决方法
  13. js实现html转图片保存
  14. day03--面向对象--类的继承
  15. STM32CubeMx + LWIP(实现UDP组播/MQTT/热插拔)系列 四 ----- MQTT的连接与使用
  16. Morph Age for Mac(变形工具)
  17. 器件——TCRT5000参数与实际设计应用
  18. Node-Red智能识别图片
  19. 计算机网络作业及答案
  20. 高数强化课笔记DAY2

热门文章

  1. QT学习笔记(六)——①进度条可拖动、点击②有暂停按钮 的视频播放器
  2. 戴尔3080计算机重装系统步骤,终于发现戴尔笔记本重装系统的方法
  3. Java多线程--概述-转自林炳文Evankaka
  4. 【Quartz】 JobListener、Triggerlistener、SchedulerListener介绍与使用
  5. 电脑仙人掌机器人作文_仙人掌作文之电脑仙人掌机器人的童话作文
  6. 程序员转正述职报告_程序员个人述职报告范文4篇(整理版)
  7. 一个投标经理的标书检查笔记,拿来就用!
  8. 有趣的深度学习——使用 BERT 实现一个古体诗生成器
  9. 星型和全连网状MGRE、OSPF综合实验(二)
  10. 看风水不如依照这些定律改造命运