当前位置:网站首页>【我的电赛日记(一)】HMI USART串口屏
【我的电赛日记(一)】HMI USART串口屏
2022-08-02 14:08:00 【Ziraffe】
HMI USART串口屏
作为在电赛中负责软件部分的成员,学会使用单片机进行数据和信息的显示是必要的,大部分人会选择使用oled或者TFT屏幕去进行显示,但是使用过的人都知道这样会比较复杂,会加大程序的复杂度,因此通过他人的建议,我开始学习并使用串口屏进行显示,下面是我学习串口屏时的经验和总结:
上面这个是我使用的串口屏的型号,电阻式触摸屏,只有四根线,VCC GND TX RX,3.5寸基本完全满足交互式界面的大小,价格大概几十元。
一、硬件连接
我一般使用stm32比较多,因此这里就用stm32作为主控,我选用的是STM32F103ZET6最小系统板作为主控,其实使用C8T6也是可以的,主要是因为当时跟着正点原子学习的时候使用的是精英版,因此用ZET6就用习惯了,毕竟资源多还是要舒服一点。
板上资源:这里使用到的是USART3和UART1,USART3和串口屏相连,UART1和电脑相连(默认)
IO连接:
VCC----VCC
GND----GND
TX-----PB11
RX-----PB10
一共就四根线,连接非常方便。
二、STM32软件设计
软件方面呢为了既能使用串口给串口屏发送信息,也能通过串口接收串口屏发来的信息,因此设计功能如下:
1.串口屏上会显示一个数字Freq,并且该数字每秒会+1,可以通过屏幕上的按键控制每秒增加的数值。
2.数字Freq每更新一次,就会将该数字发送给单片机一次
3.单片机每接收到一次该数字,就会将该数字再从USART1发送给电脑的串口助手
4.单片机每隔几毫秒给串口屏发送一次指令,让串口屏上的波形控件增加一个点
不墨迹就直接放程序了,看不懂程序的可以留言:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "usart3.h"
#include "timer.h"
/************************************************ ************************************************/
int main(void)
{
int b;
u16 t;
u16 len;
u16 times=0;
delay_init(); //延时初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组
uart_init(115200); //usart1初始化波特率115200
usart3_init(115200); //usart3初始化波特率115200
while(1)
{
if(USART3_RX_STA&0x8000)
{
len=USART3_RX_STA&0x3fff;//得到此次接受数据的长度
printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
//USART_SendData(USART1, USART3_RX_BUF[t]);//向串口一发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
b=(USART3_RX_BUF[0]);
printf("%d",b);
printf("\r\n\r\n");
USART3_RX_STA=0;
}
delay_ms(1000);
{
u3_printf("add 4,0,100",a); //波形空间上添加一个点
u3_printf("\xff\xff\xff"); //结束标志
}
}
}
这段程序基本都是由正点原子的例程改编的,只是简单的两个串口的通信,主要有几点需要注意:
(都是我踩过的坑)
1🤭向串口屏发送指令时,后面一定要接\xff\xff\xff,作为结束指令,否则串口屏不知道你这段话是否说完了,具体可见最后一行代码。
2🤭如果你想接收串口屏发来的字符或者整型浮点数的信息,一定要注意定义的类型,例如当USART_RX_BUF[ ]这个用来当作接收缓冲区的数组是char型时,那么如果你想接收它发来的字符型信息时可以直接调用这个数组,但当你是想调用接收到的整数或者浮点数时,不能直接使用这个数组,否则显示会出现乱码,你可以像我代码中写的那样,定义一个int型的变量b,然后用b去获取USART3_RX_BUF这个数组中的整型常量,这样再进行显示就不会乱码了。
三、串口屏界面设计
HMI USART这款串口屏的教程挺多的,无论是它自带的还是网络上其他人拍的视频,都有很多资源可以去学习,这里我就放一个官方最常用的一个网址吧:串口屏帮助中心
无论是学习还是查找指令都可以在这个网站中找到!然后是我设计的串口屏界面,大致如下:
两个界面,第一个是用来显示曲线的主要验证功能4,第二个是用来显示数字Freq的主要验证功能1。
具体如何设计大家可以根据自己的情况来,我这个只是一个比较简单的例子。
四、总结
串口屏能做到的功能远不止如此,因此还有许多需要学习与实践的,不过熟练运用串口屏可以说在某种程度上是可以取代常用的oled TFT这种液晶屏的,除非题目有功耗要求,那另当别论。在此我只是分享我在学习串口屏中遇到的问题以及总结的经验,如果有问题大家也可以一起讨论!
边栏推荐
猜你喜欢
随机推荐
牛客刷题汇总(持续更新中)
电商项目常见连续登录,消费,日期等问题
内存申请(malloc)和释放(free)之下篇
最小树高度
让深度学习歇一会吧
Flink依赖汇总
NER(命名体识别)之 FLAT模型
redis入门-1-redis概念和基础
LLVM系列第九章:控制流语句if-else
利用红外-可见光图像数据集OTCBVS打通图像融合、目标检测和目标跟踪
liunx下mysql遇到的简单问题
MySQL知识总结 (四) 事务
无人驾驶综述:等级划分
LLVM系列第四章:逻辑代码块Block
In the Visual studio code solutions have red wavy lines
还是别看学位论文
基于深度学习的配准框架
Win10 can't start WampServer icon is orange solution
两个surfaceview的重叠效果类似直播效果中的视频和讲义实践
LLVM系列第七章:函数参数Function Arguments