个人电赛日记(一)---HMI USART串口屏

HMI USART串口屏

做为在电赛中负责软件部分的成员,学会使用单片机进行数据和信息的显示是必要的,大部分人会选择使用oled或者TFT屏幕去进行显示,可是使用过的人都知道这样会比较复杂,会加大程序的复杂度,所以经过他人的建议,我开始学习并使用串口屏进行显示,下面是我学习串口屏时的经验和总结:
在这里插入图片描述
php

上面这个是我使用的串口屏的型号,电阻式触摸屏,只有四根线,VCC GND TX RX,3.5寸基本彻底知足交互式界面的大小,价格大概几十元。数组

1、硬件链接
我通常使用stm32比较多,所以这里就用stm32做为主控,我选用的是STM32F103ZET6最小系统板做为主控,其实使用C8T6也是能够的,主要是由于当时跟着正点原子学习的时候使用的是精英版,所以用ZET6就用习惯了,毕竟资源多仍是要舒服一点。
在这里插入图片描述

网络

板上资源:这里使用到的是USART3和UART1,USART3和串口屏相连,UART1和电脑相连(默认)
IO链接:
VCC----VCC
GND----GND
TX-----PB11
RX-----PB10
一共就四根线,链接很是方便。
2、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这个数组中的整型常量,这样再进行显示就不会乱码了。


spa

3、串口屏界面设计
HMI USART这款串口屏的教程挺多的,不管是它自带的仍是网络上其余人拍的视频,都有不少资源能够去学习,这里我就放一个官方最经常使用的一个网址吧:串口屏帮助中心
不管是学习仍是查找指令均可以在这个网站中找到!而后是我设计的串口屏界面,大体以下:
界面1界面2两个界面,第一个是用来显示曲线的主要验证功能4,第二个是用来显示数字Freq的主要验证功能1。
具体如何设计你们能够根据本身的状况来,我这个只是一个比较简单的例子。



设计

4、总结
串口屏能作到的功能远不止如此,所以还有许多须要学习与实践的,不过熟练运用串口屏能够说在某种程度上是能够取代经常使用的oled TFT这种液晶屏的,除非题目有功耗要求,那另当别论。在此我只是分享我在学习串口屏中遇到的问题以及总结的经验,若是有问题你们也能够一块儿讨论!
code

最后我把程序的源代码以及串口屏的工程放在下方,你们有须要能够借鉴学习!
连接:https://pan.baidu.com/s/1Gk2g_cON9bCM40BahFyajA
提取码:8i16

视频

相关文章
相关标签/搜索