0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

电子设计 来源:郭婷 作者:电子设计 2019-01-04 09:28 次阅读

1引言

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

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

2下位机系统的设计

2.1硬件部分

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

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

2.2软件部分

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

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

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

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

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

3上位机系统的设计

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

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

3.1VISA LabVIEW提供了功能强大的VISA库

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

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

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

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

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

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

在某些特殊的情况下,可以利用VISA SET I/O Buffer Size设置串口接受/发送缓冲区的大小,使用VISAFlash I/O Buffer清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISAresource name所指定串口间的会话。

该LabVIEW程序框图中调用了一个叫做change的子VI程序,该子VI程序的功能是将高低电平的脉冲宽度值,转换成定时器的初始值,并且拼凑成一个4个字节的16进制数,通过VISA Write模块送入下位机。该子VI的程序框图如图5所示。

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

在接收到数据后,单片机有一条反馈的指令,他将其缓冲区内的值再次送回上位机,LabVIEW对该值进行显示,并可以和原来实际输出的16进制数进行比较。用户可以很方便地知道,是否在上下位机通信中出现误码。

图6左侧的倒三角表示从图4(a)的VISA Read中接收到的值,他与LabVIEW上一次显示的值拼装成一个完整的字符串,成为新的显示值,在字符串显示区显示出来。

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

4程序运行结果与验证

程序的前面板界面如图7所示。

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

图8是另一个程序的前面板,该程序可以将采样率设定为50kHz的采集卡采集到的数据显示在屏幕上。该屏幕显示的是,上位机程序发送欲产生高低电平均为0.6ms脉冲波的定时器初始值给下位机后,下位机产生的脉冲序列。

采用RS 232串行通信接口与LabVIEW实现单片机脉冲发生器设计

上位机发送的16进制数为FDA8FDA8,下位机准确接收后,反馈的值也为FDA8FDA8。

根据采样率为50kHz,即0.02ms采样一次,则在显示波形图中任选一次完整脉冲(如图8所示)进行计算,可以得到该次的低电平的持续时间为0.66ms,高电平的持续时间为0.68ms。

这两个数据的误差可能是采集卡的采样率误差引起的,或是单片机的定时器中断服务程序的执行周期产生的延时所造成的。

另外,在上下位机的通信中,也可能会产生误码,导致产生的波形不符合要求。如果要一次性完成数据传输的任务,则应该在上下位机间增加可纠错的编码和译码电路,否则,可以选择再次发送数据,当返回值与发送值一致时,才可认为发送成功,产生的波形基本可以符合要求。

5结语

本文用RS 232串行通信接口将计算机与单片机相连,组成一个可控脉冲发生器用于皮肤阻抗检测。上位机用LabVIEW编程,产生的界面友好,操作方便。这种可控脉冲发生器编程灵活,不仅可以产生方波,还可以产生三角波,正弦波等,基本可以满足实验的要求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6039

    文章

    44581

    浏览量

    636474
  • 计算机
    +关注

    关注

    19

    文章

    7519

    浏览量

    88217
  • 串行通信
    +关注

    关注

    4

    文章

    576

    浏览量

    35459
收藏 人收藏

    评论

    相关推荐

    RS 232通信在PC单片机通信中的应用

    在绝大多数PC的标准配置中,都有一个到多个RS 232口,因为RS 232
    发表于 01-19 10:09 6975次阅读
    <b class='flag-5'>RS</b> <b class='flag-5'>232</b><b class='flag-5'>串</b>口<b class='flag-5'>通信</b>在PC<b class='flag-5'>机</b>与<b class='flag-5'>单片机</b><b class='flag-5'>通信</b>中的应用

    一种基于C语言的RS232串行接口通信设计介绍

    长等优点,本文将着熏介绍串口通信的连接方式以及利用C语言编程实现串口通讯,最后以实际的工程项目应用,验证了该通讯方式的可靠性。  1 RS232串行
    发表于 06-17 05:00

    Matlab 环境下PC 单片机串行通信及数据处理

    结合单片机和Matlab 两者的优点,基于事件驱动的中断通信机制,提出一种Matlab 环境下PC 单片机实时串行
    发表于 05-18 13:09 73次下载

    RS232串行接口引脚定义图

    RS232串行接口引脚定义图 计算机侧为25针公插:  
    发表于 11-27 12:33 1.5w次阅读
    <b class='flag-5'>RS232</b><b class='flag-5'>串行</b><b class='flag-5'>接口</b>引脚定义图

    计算机RS-232串行接口电流环电路

    计算机RS-232串行接口电流环电路
    发表于 12-22 02:34 2063次阅读
    计算机<b class='flag-5'>RS-232</b><b class='flag-5'>串行</b><b class='flag-5'>接口</b>电流环电路

    RS232C/RS422/RS485串行通信标准

    RS232C、RS422/RS485串行通信标准 一、RS232C
    发表于 10-17 08:35 1.2w次阅读
    <b class='flag-5'>RS232</b>C/<b class='flag-5'>RS</b>422/<b class='flag-5'>RS</b>485<b class='flag-5'>串行</b><b class='flag-5'>通信</b>标准

    TMS470单片机的高温RS485串行通信功能设计

    TMS470单片机的高温RS485串行通信功能设计
    发表于 08-31 10:22 7次下载
    TMS470<b class='flag-5'>单片机</b>的高温<b class='flag-5'>RS</b>485<b class='flag-5'>串行</b><b class='flag-5'>通信</b>功能设计

    PC 单片机串行通信实现

    介绍了基于 MATLAB 的 PC 与 PIC 系列单片机串行通信实现方法。串行系统主要由
    发表于 09-03 11:13 22次下载
    PC <b class='flag-5'>机</b>与<b class='flag-5'>单片机</b><b class='flag-5'>串行</b><b class='flag-5'>通信实现</b>

    使用LABVIEW用作上位控制单片机输出频率不同的脉冲发生器

    为了产生不同频率, 不同脉宽的刺激信号, 利用 RS232 串行通信接口将计算机与单片机相连, 计算机通过
    发表于 01-06 08:00 10次下载
    使用<b class='flag-5'>LABVIEW</b>用作上位<b class='flag-5'>机</b>控制<b class='flag-5'>单片机</b>输出频率不同的<b class='flag-5'>脉冲</b><b class='flag-5'>发生器</b>

    RS-232接口实现串口数据传输的点对点通信设计

    单片机在控制本地的外围期间时,信息的交互是通过8位并行数据总线进行的,但是在较大规模的现代控制系统中,单片机还需要控制远端的设备,可以利用单片机串行
    发表于 03-03 15:19 3779次阅读
    <b class='flag-5'>RS-232</b><b class='flag-5'>接口实现</b>串口数据传输的点对点<b class='flag-5'>通信</b>设计

    电脑的RS-232接口如何才能与单片机实现串口通信

    单片机串行口是非常有用的,通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作,下面我就给大家介绍上一下电脑的RS-232
    的头像 发表于 10-06 18:08 1.2w次阅读

    RS232串行通信的简介和使用说明

    在这一课里,我们一起来学习RS-232C串行通信相关标准及单片机和电脑的RS-232C串行
    的头像 发表于 09-26 11:07 1.8w次阅读

    基于单片机LABVIEW信号发生器课设

    基于单片机LABVIEW信号发生器课设(单片机原理及接口技术)-该文档为基于单片机
    发表于 07-22 14:13 28次下载
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>LABVIEW</b>信号<b class='flag-5'>发生器</b>课设

    基于RS232串口实现PIC单片机下位与QT上位通信

    基于RS232串口实现PIC单片机下位与QT上位通信
    发表于 11-16 12:21 21次下载
    基于<b class='flag-5'>RS232</b><b class='flag-5'>串口实现</b>PIC<b class='flag-5'>单片机</b>下位<b class='flag-5'>机</b>与QT上位<b class='flag-5'>机</b><b class='flag-5'>通信</b>

    如何实现51单片机与PC串行通信

    的详细步骤和方法。 硬件连接 首先,我们需要将51单片机与PC串行接口连接起来。通常,我们使用RS-232
    的头像 发表于 10-21 11:35 1104次阅读