基于LabVIEW的单片机与PC机串口通信显示系统设计
2015-01-13刘松斌王海星
刘松斌 王海星 马 双 柳 明
(1. 东北石油大学电气信息工程学院,黑龙江 大庆 163318; 2. 大庆油田第一采油厂仪表安装维修大队,黑龙江 大庆 163453;3. 大庆储运销售分公司葡北油库,黑龙江 大庆 163000)
随着工业的不断进步与发展,控制系统越来越复杂,处理的数据量也越来越大,但单片机等主控芯片的处理能力有限,难以满足控制的需求,因此分布式系统逐渐成为主流。在分布式系统中各种数据的采集和对执行机构的控制都由下位机完成,而对采集到的数据进行进一步分析和处理则由功能更强大的上位机完成。由于单片机具有高可靠性、价格低廉和可应用于恶劣工业环境的特点,在分布式控制系统中大多采用单片机作为下位机。而PC机因其处理能力强及人机交互好等特点常被用作上位机。单片机与PC机通信常选用串口通信方式,串口通信是通过数据信号线、地线及控制线等按位进行数据传输的一种通信方式[1]。在PC领域里以RS-232、RS-485协议为代表的串口通信因其通信稳定、抗干扰能力强及成本低等优点被普遍应用在工业领域。
LabVIEW(又称为G语言)是一种基于数据流的图形化编程环境[2],近年来在检测和控制领域得到了快速发展。因其程序是图形化的框图形式,在人机交互等方面具有天然的优势,故已逐渐成为上位机编程软件的不二选择。笔者设计了一种基于LabVIEW的单片机与PC机串口通信显示系统,为了更直观地了解串口通信情况,为系统填加显示模块,用LCD实时显示收发的数据,从而验证串口通信是否成功。
串口通信系统显示由4部分组成(图1):PC机作为上位机,负责数据的发送、接收和人机交互;单片机最小系统作为下位机,负责串口数据的接收、发送和液晶驱动;MAX232芯片作为连接前两部分的桥梁,将RS-232的负逻辑电平(逻辑1为-15~-3V,逻辑0为3~15V)[3]转换成TTL电平(5V为逻辑1,0V为逻辑0);CH240128液晶显示屏负责显示数据的接收情况。
图1 串口通信显示系统硬件结构
首先由单片机、晶振、电阻及电容等构成单片机最小系统[4],在最小系统的基础上结合MXA232芯片引出DB9串行端口。将单片机串口发送TXD与PC机串口接收RXD相连,单片机串口接收RXD与PC机串口发送TXD相连,并将二者的地相连。依据CH240128液晶的引脚定义,将其与单片机I/O引脚相连。串口通信显示系统的硬件电路如图2所示。
2 软件设计
软件程序设计分为两部分:一是运行在PC 端的LabVIEW程序;二是运行在单片机中的C51程序。结合硬件实现串口通信与显示功能,即在PC端发送一串字符串,通过串口发送到单片机中,单片机接收到数据后返回该字符串,并将其显示到液晶上。
图2 串口通信显示系统硬件电路
2.1 LabVIEW程序设计
LabVIEW串口通信程序主要通过NI-VISA节点来完成,NI-VISA是一个字节级的通信接口驱动。通过NI-VISA函数[5]编写的程序可以在任何具有串行端口NI-VISA[6]的机器上运行,这就意味可以在具有LabVIEW和Windows的机器上写入和测试串行VI,然后在NI的板卡[7]上使用相同的程序。其中,NI-VISA主要包括串口初始化、串口写、串口读、Bytes of port[8]及串口关闭等函数。串口初始化主要负责设置串口号、波特率及奇偶校验等参数。为了下位机能正确识别数据,在数据首尾添加标识位后写入串口。
2.2 单片机程序设计
单片机串口程序(图3)参数要与上位机的参数设置一致(如波特率、奇偶校验[9]等)。利用判断语句去除标识位后,对上位机发送来的数据进行解析,再将数据写入串口缓冲区SBUF寄存器。为了在液晶显示收到的数据,需要按照液晶的驱动时序图设置写数据及写指令等时序完成液晶的驱动,还需匹配串口通信和液晶显示的时序。由于液晶显示需要一定的时间,而串口通信数据收发很快,难以做到收到一个字节就显示一个字节的数据,因此需要将收到的数据放到一个数组中以中断的方式显示数据。
图3 单片机程序流程框图
3 系统运行调试
结合硬件和软件设计,完成基于LabVIEW的单片机与PC机串口通信显示系统设计。该系统运行情况如图4所示。在上位机发送数据123,单片机接收到数据后将123返回到上位机,并将数据显示在液晶屏上,实现了上位机(PC机)与下位机(单片机)的数据通信。
图4 串口通信显示系统运行界面
4 结束语
利用图形化编程软件LabVIEW设计了单片机与PC机串口通信显示系统,实际应用表明,该系统通信稳定、可靠,抗干扰能力强,为上位机与下位机通信提供了新的解决方案。而且该系统可以移植到NI系列板卡中作为数据显示装置,具有实际工程应用价值。
[1] 徐超.LabVIEW在实时测控系统中的应用研究[D].重庆:重庆大学,2005.
[2] 陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011:35~80.
[3] 杨忠仁,饶程,邹建,等.基于LabVIEW数据采集系统[J].重庆大学学报(自然科学版),2004,27(2):32~35.
[4] 张毅刚,彭喜元,姜守达,等. 新编MCS51单片机应用设计[M]. 哈尔滨:哈尔滨工业大学出版社,2012:8~13.
[5] 阮奇桢. 我和LabVIEW[M]. 北京:北航空航天大学出版社,2009:56~98.
[6] Johnson G W, Jennings R.LabVIEW Graphical Programming[M].New York:McGraw-Hill Professional, 2006: 65~70.
[7] Travis J, Kring J. Labview for Everyone[M]. London: Prentice Hall, 2002:45~47.
[8] Bitter R, Mohiuddin T, Nawrocki M. LabVIEW : Advanced Programming Techniques[M]. London: CRC Press Inc., 2006:89~93.
[9] Beyon J Y.LabVIEW Programming,Data Acquisition and Analysis[M].London: Prentice Hall,2000:106~120.