labview串口好资料与属性节点 - 图文(3)

2019-04-02 19:08

LabVIEW虚拟仪器数据采集与串口通信测控应用实战

{ uchar temp; init(); do{

while(RI==0); temp=SBUF; if(temp==0x00) {rece();} else break; }while(1); }

/*串口初始化*/ void init(void) {

TMOD=0x20; //定时器1--方式2 PCON=0x80; //电源控制 SCON=0x50; //方式1 TL1=0xF3;

TH1=0xF3; //22.1184MHz晶振,波特率为4800 0xf3 9600 TR1=1; }

/*接收返回数据*/ void rece(void) { char i; i=0;

do{while(RI==0); re[i]=SBUF; RI=0; SBUF=re[i]; while(TI==0); TI=0; i++;

}while(re[i-1]!=255); }

0xfa 19200 0xfd

13.2.3.2 利用LabVIEW实现PC与单片机串口通信任务一

1.建立新VI程序

启动NI LabVIEW程序,选择新建(New)选项中的VI项,建立一个新VI程序。

– 292 –

第13章 LabVIEW串口通信程序设计

2.程序前面板设计

? 在前面板设计区空白处单击鼠标右键,显示控件选板(Controls)。 (1)添加一个字符串输入控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→ 字符串输入控件(String Control),将标签改为“发送数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。

(2)添加一个字符串显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“返回数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。

(3)添加一个字符显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“通信状态”。

(4)添加一个串口资源检测控件:控件(Controls)→新式(Modern)→ I/O → VISA资源名称(VISA resource name);单击控件箭头,选择串口号,如ASRL1:或COM1。

(5)添加一个确定按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→确定按钮(OK Butoon),将标题改为“发送”。

(6)添加一个停止按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→停止按钮(Stop Butoon),将标题改为“关闭”。

设计的程序前面板如图13-14所示。 图13-14 程序前面板

3.框图程序设计——添加函数与连线

? 进入框图程序设计界面,在设计区的空白处单击鼠标右键,显示函数选板(Functions)。 (1)添加一个配置串口函数:编程(Programming)→ 仪器I/O(Instrument I/O) → 串口(Serial)→ VISA配置串口(VISA Configure Serial Port)。

(2)添加4个数值常量:编程(Programming)→ 数值(Numeric) → 数值常量(Numeric Constant),值分别为4800(波特率)、8(数据位)、0(校验位,无)、1(停止位)。

(3)添加一个While循环结构:编程(Programming)→ 结构(Structures) → While 循环(While Loop)。

(4)添加一个关闭串口函数:编程(Programming)→ 仪器I/O(Instrument I/O) → 串口(Serial)→ VISA关闭(VISA Close)。

(5)在While循环结构中添加一个条件结构:编程(Programming)→ 结构(Structures)→ 条件结构(Case Structure)。

(6)在条件结构中添加一个顺序结构:编程(Programming)→ 结构(Structures) →层叠式顺序结构(Stacked Sequence Structure)。

将其帧(Frame)设置为4个(序号0-3)。设置方法:选中Stacked Sequence Structures上边框,单击鼠标右键,执行在后面添加帧(Add Frame After)选项3次。

(7)在顺序结构的Frame 0中添加一个串口写入函数:编程(Programming)→ 仪器I/O(Instrument I/O)→串口(Serial)→ VISA写入(VISA Write)。

(8)将控件“发送数据(十六进制)”的图标拖入顺序结构的Frame 0中,分别将确定按

– 293 –

LabVIEW虚拟仪器数据采集与串口通信测控应用实战

钮(OK Button)、停止按钮(Stop Buffon) 的图标拖入循环结构中。

(9)将VISA资源名称(VISA resource name)函数的输出端口分别与串口配置(VISA Configure Serial Port)函数、串口写入(VISA Write)函数(在顺序结构Frame 0中)、串口关闭(VISA Close)函数的输入端口VISA资源名称(VISA resource name)相连。

(10)将数值常量4800、8、0、1分别与VISA配置串口(VISA Configure Serial Port)函数的输入端口波特率(baud rate)、数据位(data bits)、奇偶(parity)、停止位(stop bits)相连。

(11)右键选择循环结构的条件端子,设置为“真时停止(Stop if True)”,图标变为。将停止按钮(Stop Buffon)与循环结构的条件端子相连。

(12)将确定按钮(OK Button)与条件结构的选择端子?相连。 (13)将函数“发送数据(十六进制)”与串口写入(VISA Write)函数的输入端口写入缓冲区(write buffer)相连。

连接好的框图程序如图13-15所示。

(14)在顺序结构的Frame 1中添加一个时钟函数:编程(Programming)→定时(Timing)→ 等待下一个整数倍毫秒(Wait Until Next ms Multiple)。

(15)在顺序结构的Frame 1中添加一个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(Numeric Constant),将值改为200(时钟频率值)。

(16)在顺序结构的Frame 1中将数值常量(值为200)与等待下一个整数倍毫秒(Wait Until Next ms Multiple)函数的输入端口毫秒倍数(millisecond multiple)相连。

连接好的框图程序如图13-16所示。

图13-15 框图程序连线1 图13-16 框图程序连线2

(17)在顺序结构的Frame 2中,添加一个串口字节数函数:编程(Programming) → 仪器I/O(Instrument I/O)→串口(Serial)→ VISA串口字节数(VISA Bytes at Serial Port),标签为“Property Node”。

(18)在顺序结构的Frame 2中,添加一个串口读取函数:编程(Programming)→ 仪器I/O(Instrument I/O)→串口(Serial)→ VISA读取(VISA Read)。

(19)将控件“返回数据(十六进制)”的图标拖入顺序结构的Frame 2中。

(20)将VISA串口字节数(VISA Bytes at Serial Port)函数的输出端口VISA资源名称(VISA resource name)与VISA读取(VISA Read)函数的输入端口VISA资源名称(VISA resource name)相连。

(21)将VISA串口字节数(VISA Bytes at Serial Port)函数的输出端口Number of bytes at Serial port与串口读取(VISA Read)函数的输入端口字节总数(byte count)相连。

(22)将VISA读取(VISA Read)函数的输出端口读取缓冲区(read buffer)与控件“返

– 294 –

第13章 LabVIEW串口通信程序设计

回数据(十六进制)”的输入端口相连。

连接好的框图程序如图13-17所示。

图13-17 框图程序连线3

(23)在顺序结构的Frame 3中,添加两个局部变量:编程(Programming)→ 结构(Structures)→局部变量(Local Variable)。

选择局部变量,单击鼠标右键,在弹出的快捷菜单的(Select Item)选项下,为局部变量分别选择对象:“返回数据(十六进制)”和“发送数据(十六进制)”,将其读写属性设置为“转换为读取(Change To Read)”。

(24)在顺序结构的Frame 3中,添加一个比较函数:编程(Programming)→比较(Comparison)→等于?(Equal ?)。

(25)在顺序结构的Frame 3中,添加一个条件结构:编程(Programming)→ 结构(Structures)→条件结构(Case Structure)。

(26)将局部变量“返回数据(十六进制)”和“发送数据(十六进制)”分别与比较函数等于?(Equal ?)的输入端口x和y相连。

(27)将比较函数等于?(Equal ?)的输出端口x=y?与条件结构的选择端子?相连。 (28)在条件结构的真(True)选项中,添加一个字符串常量:编程(Programming)→ 字符串(String)→ 字符串常量(String Constant),将其值改为“通信正常!”。

(29)将控件“通信状态”拖入条件结构中。 (30)将字符串常量“通信正常!”与控件“通信状态”的输入端口相连。

(31)在条件结构的假(False)选项中,添加一个字符串常量,将其值改为“通信异常!”。 (32)在条件结构的假(False)选项中,添加一个局部变量,为局部变量选择对象“通信状态”,属性默认为:“写”。

(33)将字符串常量“通信异常!”与局部变量“通信状态”相连。 连接好的框图程序如图13-18所示。

图13-18 框图程序连线4

– 295 –

LabVIEW虚拟仪器数据采集与串口通信测控应用实战

4.运行程序

进入程序前面板,保存设计好的VI程序。单击快捷工具栏中的“运行(Run)”按钮,运行程序。程序运行界面如图13-19所示。

在“发送数据”框中输入两位的十六进制数字(00,01,02,03...,FF),单击“发送”按钮,将数据发送给单片机;单片机收到后回传这个数字,PC接收到回传数据后在“返回数据”框中显示出来(十六进制),若发送的数据和接收到的数据相等,则在“通信状态”

框中显示“通信正常!”,否则显示“通信异常!”。

图13-19 程序运行界面 当发送“FF”后,要想继续发送数据,必须先发送“00”。

13.2.3.3 利用Keil C51实现单片机与PC串口通信任务二

。。。。。。 }

13.2.3.4 利用LabVIEW实现PC与单片机串口通信任务二

。。。。。。

13.3 PC与智能仪器串口通信案例

目前仪器仪表的智能化程度越来越高,大量的智能仪器都配备了RS-232通信接口,并提

供了相应的通信协议,能够将测试、采集的数据传输给计算机等设备,以便进行大量数据的储存、处理、查询和分析。通常计算机(PC)或工控机(IPC)是智能仪器上位机的最佳选择,因为PC或IPC不仅能解决智能仪器(作为下位机)所不能解决的问题,如数值运算、曲线显示、数据查询、报表打印等;而且具有丰富和强大的软件开发工具环境。

图13-23是XMT-3000A型智能仪器示意图(详细信息请查询 网站http://www.njcy.com/)。 图13-23 智能仪器示意图

13.3.1 PC与智能仪器串口通信硬件线路

1.线路说明

XMT-3000A智能仪器采用先进的微电脑芯片、专家PID控制算法,具备高准确度的自整定功能,并可以设置出多种报警方式。

– 296 –


labview串口好资料与属性节点 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈培养优生的几点做法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: