Labview与C51单片机的串口通讯 Ni-visa的使用

1.介绍 NI-visa 

大家好,在和大家一起学习Lavview的时候,突然有了串口通讯的需求。在网上搜寻了一下资料发现 Labview 自带通讯,不过要用到NI-visa。

基于Labview的图形化编程,本期内容将会将为简单,内容干货满满。

Ni visa是National Instruments(NI)公司开发的一种通用仪器串行总线(GPIB)和串行通信协议(SCPI)的接口和通信标准,用于控制和通信各种测试和测量设备,如示波器、信号发生器、多用表等。 (以上数据来源于ChatGpt)

 2.准备工作

在进行学习串口通讯前,我们需要准备两件东西。

1.NI-visa驱动安装

在这里我就不想过多赘述了。

驱动下载地址:
Software and Driver Downloads - NI

安装方法:

labview中visa插件安装教程_labview安装visa_印花小手套的博客-CSDN博客

2.COM口的创建与选择

由于我们是基于C51单片机与Labview通讯的,所以不需要用到别的串口软件,而串口也是在下载stc烧录器软件的时候安装好了驱动。所以这次我们用到的串口调试就是STC-ISP。

3.C51单片机程序

我们要进行通讯,我们的C51单片机的内部程序就需要一个用来接受和发送值的程序。

在这里我自己做的程序与大家分享。 

/*
作者:逝水611
时间2023年.9月24日
作品名称:串口通讯范例
*/
#include <reg52.h>
#define UART_MAX_COUNT 6
#define uint  unsigned int
#define uchar unsigned char

void ConfigTimer0();//配置定时器函数申明

void InitUART();//配置串口函数申明

void SendOneByte(unsigned char c);//串口发送函数申明

bit flagUART = 0;						//串口收到数据标志位

unsigned char uartBuff[UART_MAX_COUNT];	//串口数据接收缓存


void main()
{
	InitUART();				//配置串口	
	ConfigTimer0();			//配置T0
	PT0 = 1;				//配置T0中断为高优先级,启用这行可以防止在其他中断产生的时候电机卡 
	EA = 1;					//开总中断
}

/* -----------------------配置并启动T0,ms-T0定时时间------------------- */
void ConfigTimer0()
{
    TMOD &= 0xF0;	//清零T0的控制位
    TMOD |= 0x01;	//配置T0为模式1
    TH0 = 0xF8; 	//加载T0重载值
    TL0 = 0xCD;
    ET0 = 1;		//使能T0中断
    TR0 = 1;		//启动T0
}

/* ---------------------------------定时器中断----------------------------- */
void InterruptTimer0() interrupt 1
{

}
void InitUART()
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    ES = 1;
    TR1 = 1;
		IP=1;
}
/*串口发送字节函数*/
void Uart_SendData(unsigned char dat )
{
	SBUF = dat;
	while(TI == 0);
	TI = 0;
}

/*串口发送字符串函数*/
void Uart_SendString(char *s)
{
	while (*s)              
	{
		Uart_SendData(*s++);
	}
}
void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}

/*对于串口传输过来的数据进行反应*/

void UARTInterrupt(void) interrupt 4
{
	unsigned char date;
    if(RI)//接收中断
    {
		date = SBUF;			//取出数据
			switch(date)
			{
				case 0x30:
				Uart_SendString("this is zero");
				break;
	}
				RI=0;			//这一条很重要!!!!!!
}
		}

这个程序就是让C51单片机进行串口通讯的程序,内部用到了中断程序,用中断程序来判断发送过来的值再用swtich 进行判断 ,这里我接受一个 16进制也就是Hex 格式的 0 来做判断。 判断返回一个长的字符串“this is zero”。

4.Labview 串口编写

我们这里用的就是数据通讯的visa函数。

首先我们得让Labvie打开我们的C51单片机串口。

这里用到Visa配置串口。

已知我这块板的波特率为9600(分板而异)。

我们先进行配置。

首先我们得选择COM口,这个很重要!如果不知道COM口的我们可以先将C51开发板通过USB转TTL连接到电脑中,用STC-ISP这个软件来查看他的端口号。 

我这里是COM5

我们将得到的COM与波特率带入进去。

带入之后进去之后,我们需要将需要的值写入进去,需要与串口通讯的值。

注意!!!这里的COM5是串口资源名称。要与后面的相连。

这里再用一个函数Visa 写入

这里我需要通讯0。我们把0这个值给写入进去。

最后的成品如上。

如果是接受值,我们将换一种写法

这里再用一个函数Visa 读取

在这里20只是你要读取的值的字节数,实际读取值是返回数里面的个数。

最后如果有问题就会反馈到错误输出上。在错误里面我们还可以进行错误输出的字符串拆分。

这里就不过多赘述了。

5.串口调试

我们运行vi程序和用串口助手连接到COM5这个端口

我们打开STC-isp

进入到这个界面之后 

按照我这个设置调整好

之后连接串口。

这里以我之前写的小车为例子。来试试串口通讯的功能。

发现是有返回值的。

成功!!!!!!!!!!

有了串口通讯之后就有很多做法,我们可以用这个自己做一个串口助手。也可以与别的软硬件进行联动! 

  • 8
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值