Labview与单片机进行串口通信

本文介绍了使用Labview作为上位机、Keil开发的单片机程序作为下位机,通过串口进行通信的毕业设计过程。在单片机程序中,基于正点原子的串口通信实现,而在Labview上位机程序中,通过串口函数进行搭建。遇到的问题包括:上位机发送需添加回车换行符以匹配单片机的结束标识,以及Labview读取串口函数的字节总数设置导致的延迟。通过属性节点解决了实时读取串口数据的问题。
摘要由CSDN通过智能技术生成

Labview与单片机进行串口通信

做毕业设计时,遇到需要使用Labview作上位机与单片机进行串口通信的情况,在这里与大家分享开发的过程。

一、简介

这里使用基于Labview设计的程序作为上位机,基于Keil设计单片机程序作下位机,两者实现串口通信。需要用到的硬件为:stm32f103c8t6单片机、USB转TTL烧录线。用到的软件为:Labview2016、Keil5。

二、单片机程序

单片机程序用的就是正点原子中串口通信的程序,不需要修改,主函数部分如下:

int main(void)
{	
	u8 len,t;
	delay_init();	    	 //延时函数初始化	  
	NVIC_Configuration();//中断分组
	uart_init(9600);//串口初始化
	while(1)
	{
 		if(USART_RX_STA&0x8000)
		{
			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
			printf("\r\n您发送的消息为:\r\n");
			for(t=0;t<len;t++)
			{
				USART1->DR=USART_RX_BUF[t];
				while((USART1->SR&0X40)==0);//等待发送结束
			}
			printf("\r\n\r\n");//插入换行
			USART_RX_STA=0;//标志位清零
		}
	} 
}

三、上位机Labview程序

用Labview来进行上位机设计,需要用到下图中的串口函数。
在这里插入图片描述
根据上面的函数进行搭建就可以得到下面的串口通信上位机程序。下图为上位机的前面板。
在这里插入图片描述
下图为上位机的程序图。
在这里插入图片描述
在弄串口通信的上位机程序时,主要遇到了两个问题:
1、上位机发送部分忘加回车换行
上位机制作时需要与单片机中的程序相对应才行,单片机中的串口程序把“回车+换行”认为是一段字符的结束,所以在上位机发送字符时,需要在末尾加上“回车”、“换行”

如果没有这个,单片机虽然会产生串口中断,但因为没有回车换行,单片机会认为这段字符没有接收完,它就会一直等在那。产生可见的错误就是,上位机给单片机发送字符串,单片机端没有响应。

2、读取串口函数读一次之后就卡顿
在Labview的串口函数部分,有一个读取缓存区的函数,这个函数是用来读取单片机向上位机发送的字符用的。
在这里插入图片描述
在使用时需要设置字节总数这个参数,这个参数是用来设置缓存区的大小的。假设字节总数为100,那么函数就会当接收到的字节满100之后才会去读,这样就会产生上位机显示单片机发来字符串不及时的情况。

为了解决这个情况,这里使用了属性节点的方法。使用属性节点的功能就是,缓冲区每传来一个字符,程序就去读,这样就不存在等待的情况。
在这里插入图片描述
写的不妥之处请大家见谅,欢迎大家留言批评指正!

资源下载
https://download.csdn.net/download/ss123bs456/86246543

  • 49
    点赞
  • 454
    收藏
    觉得还不错? 一键收藏
  • 81
    评论
评论 81
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值