首页 > 范文大全 > 正文

基于LabVIEW的单片机脉冲发生器

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于LabVIEW的单片机脉冲发生器范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:为了产生不同频率,不同脉宽的刺激信号,利用RS 232 串行通信接口将计算机与单片机相连,计算机通过LabVIEW软件平台,对单片机发送指令参数,单片机利用接收到的指令参数产生计算机所指定的脉冲。介绍了该系统中上下位机的具体程序流程,并且完成了对整个系统的检测。通过实验证明该系统可以精确地产生所要求的脉冲波形。

关键词:LabVIEW;MCS―51;VISA;串口通信

中图分类号:TP23 文献标识码:B

文章编号:1004373X(2008)0309703

Single Chip Pulse Generator Based on LabVIEW

CHEN Hong,CHEN Xin

(College of Physics and Information Engineering,Fuzhou University,Fuzhou,350002,China)

Abstract:With the RS 232 serial communication interface,the computer connects to the single chip.It sends the directive parameters to the single chip through LabVIEW software platform,for generating the signal with different frequency and different pulse width.The single chip generates the pulse defined by the directive parameters from computer.It introduces the both specific processes and achieves the detection of whole system.Through the experiment,the system is tested that it can generat pulse accurately all we demanded.

Keywords:LabVIEW;MCS―51;VISA;serial communication

1 引 言

由于各种人群的皮肤阻抗的动态范围不一样,甚至同一个人在不同的时间、不同的环境下皮肤阻抗的动态范围也不一样。因此,在皮肤阻抗检测系统中,刺激器需要根据不同的人群以及不同的环境,产生不同频率、不同脉宽的刺激信号,才能保证检测系统可以测量到人体皮肤的真实阻抗。

MCS―51单片机系统有3个定时器可以产生方波,而且方波的脉冲频率及宽度可以由软件设定,这种产生脉冲的方式具有很大的灵活性。上位机软件LabVIEW同下位机通信时,将下位机所要产生的脉冲的参数通过串口传给下位机,以便实现利用LabVIEW控制单片机产生所需脉冲的目的。

2 下位机系统的设计

2.1 硬件部分

MCS―51单片机内部有一个功能很强的全双工串行口,该串行口有4种工作方式。片内的定时器/计数器可以产生波特率,大小可用软件设置。有2个物理上独立的接收、发送缓冲器SBUF,接收、发送均可触发中断系统,使用十分方便。对外也有两条独立的收、发信号线RXD(P3.0)和TXD(P3.1) [1]。

本文采用RS 232串行接口标准,在电气特性上,RS 232采用负逻辑,要求高低两信号间有较大的幅度,标准为:逻辑“1”在-5~-15 V之间,逻辑“0”在+5~+15 V之间。

2.2 软件部分

MCS―51的定时器0进行两次计数。设P1.0为脉冲发生端,当定时器0的第一次计数结束后,将P1.0取反,赋新的初值,再进行第二次计数。当第二次计数结束后,再一次将P1.0取反,又赋原来的初值,进行新一轮的计数,如此反复即可产生方波。这样通过两次计数值的不同就可以实现产生不同脉宽及频率的方波了。

图1,图2和图3给出了单片机程序的详细流程图。其中定时器1工作在方式2,这是一种自动重装方式,禁止中断,用于产生波特率(该波特率设置为9 600)。串口工作在方式1,发送或接受一帧信息为10位,1位起始位(0),8位数据位和1位停止位(1),无奇偶校验位。程序还设定串口中断优先级高于定时器0的中断优先级。

在通信前,上下位机一般会约定一个协议,例如在发送的数据前加一个标识段,一般为一个字节。当该字节传输正确后,下位机才可以认为上位机准备发送数据段。这样可以避免串口偶尔产生的误发信号。

程序设定4个字节为一个数据段,是因为上位机一次性要发完包括高低电平在内的两次定时器的初始值,而每一个初始值都有两个字节。因此下位机判断一次完整的数据段是否发送完毕,就是判断其是否收到了4个字节的数据。

图1 主程序流程图

图2 定时器中断程序流程图

图3 串口中断程序流程图

3 上位机系统的设计

LabVIEW语言是美国国家仪器(NI)公司开发的一种基于图形化语言(G语言)的编程语言,利用该语言编写的模块化程序,具有良好的界面,简单、直观,且易于理解、调试和维护。做成的虚拟仪表可以当作许多仪器设备来使用,其功能完全由用户编程定义。另外,labview内还包含丰富的数据采集、数据信号分析以及控制等子程序,特别适用于数据采集、通信处理系统。

LabVIEW 提供了很多现成的可供调用的函数库,从底层的GPIB,VXI,PXI,串口数据采集板的控制子程序到大量的仪器驱动程序;从基本的功能函数到高级分析库,几乎涵盖了仪器设计中需要的所有函数。同时,LabVIEW 还支持用于网络通讯的TCP/IP 协议、动态数据交换(DDE)和网络化多媒体对象技术(ActiveX)等应用软件标准[2]。

3.1 VISA

LabVIEW提供了功能强大的VISA库。VISA(Virtual Instrument Software Architecture,虚拟仪器软件规范)是用于仪器编程的标准I/O函数库及其相关规范的总称。VISA库驻留于计算机系统中,完成计算机与仪器之间的连接,用以实现对仪器的程序控制,其实质是用于虚拟仪器系统的标准的API(Application Programmer Interface,应用程序接口)。正因为如此,VISA可以连接不同标准的I/O设备[3]。

VISA本身并不具备编程能力,惟他通过调用底层的驱动程序来实现对仪器的编程。VISA的I/O软件库的源程序是惟一的,其与操作系统及编程语言无关,只是提供了标准形式的API文件作为系统的输出[4]。

3.2 LabVIEW中利用VISA实现串口通信

在LabVIEW中使用串口的基本流程为:先调用VISA Configure Serial Port来完成串口参数的初始化设置,包括了串口的资源分配,波特率的设定,数据位、停止位、校验位和流控制等。

当某一个串口初始化成功后,就可以使用该串口进行数据的收发。使用VISA Write进行数据的发送,使用VISA Read进行数据的接收。在接收数据前,有时需要VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至缓冲区中的数据字节数达到要求或是等待时间满足VISA Configure Serial Port所设定的Timeout。