摘 要:本文利用LabView和 C语言分别对上位机和单片机进行串口通信程序的编制,介绍了通过串口实现高频开关转换电路的软件和硬件组成。
关键词:LabVIEW;VISA;RS232串口;C51;RTX51 TINY
0 引言
高频同轴开关在微波测试系统和微波电子设备中作断开信号之用。把几个开关组合起来,可以作为同时开启和关闭几个信号的通道。使用同轴开关在电磁兼容等自动测试系统中具有非常重要的意义,它可以减少转接各种仪器、仪表的工作量,提高系统的工作效率,另外还可以降低同轴接头器件的磨损,延长其使用寿命。该系统采用89C2051单片机作为下位机,计算机作为上位机,通过RS232串口传输数据或指令,在LabVIEW软件平台上对高频同轴开关进行程控切换。
1 labVIEW及VISA简介
LabVIEW是由NI公司研制的基于图形化编程语言G的虚拟仪器开发平台软件。它结合了简单易用的图形化开发环境与灵活强大的编程语言,提供了一个直觉式的编程环境,与测量硬件紧密结合,能让用户迅速开发出满足需求的各种虚拟仪器系统。LabVIEW在仪器控制、数据采集、数据分析和数据显示等许多领域具有非常广泛的应用。
VI是在LabVIEW编程中组建的程序单元,它有三个主要部分:前面板、框图和图标/连接器。前面板是VI的交互式用户界面,包括多种控件和指示器;框图是VI的可执行源代码的图形表示;图标和连接器指定了数据流进流出VI的路径。
VISA是虚拟仪表软件结构体系(Virtual Instrument Software Architecture)的简称,它是在LabVIEW平台上控制VXI、GPIB、RS232串口及其它种类仪器的标准I/O应用程序接口(API)。VISA是由组成VXI plug&play系统联盟的几十家最大的仪器仪表公司所统一采用的标准。通过这个标准,用户可以不必考虑时间及仪器I/O选择项,而且驱动软件可以相互兼容。VISA库中常用的串口通讯函数有:VISA Configure Serial Port(串口配置)、VISA Write(读)、VISA Read(写)、VISA Close(关闭)。
图1 VISA Configure Serial Port模块结构
上图是VISA Configure Serial Port模块,它根据VISA resource name与指定的RS232串口建立通讯。可以设置波特率(baud rata,默认值9600)、一帧信息的位数(data bits,默认值8)、停止位数(stop bits)、奇偶校验(parity)以及握手方式(flow control)。
VISA Write模块把Write buffer中的字符串写入指定的设备,返回实际传送的字节数。VISA Read根据指定读取的字节数读入设备中的数据,返回实际传送的字节数。VISA Close关闭与指定设备的通讯过程,释放系统资源。
2 单片机通信程序设计
89C2051单片机有一个功能很强的全双工串行口,该串行口有4种工作方式,可用于并行口扩展和实现双机或多机通信。在物理上有独立的发送线TXD(P3.1)和接收线RXD(P3.0),以及相对应的独立的发送缓冲器和接收缓冲器。
PC机的串口采用的是RS232接口标准。在电气特性上,RS232采用负逻辑,即:逻辑“1”在-5V~-10V,逻辑“0”在+5V~+10V。而89C2051采用TTL电平,逻辑“1”为3.8V,逻辑“0”为0.4V,所以两者接口时,必须进行电平转换。这里采用MAX202实现此转换。同时使用继电器来隔离并驱动同轴开关。同轴开关切换电路如图所示:
单片机程序采用C51语言编写,这是专门为51系列单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以和汇编语言相媲美。同时为了简化具有实时性要求的多任务软件的设计,程序使用了实时多任务操作系统RTX51 TINY。RTX51是德国 Keil公司开发的一种应用于MCS51系列单片机的实时多任务操作系统,它可以工作在所有8051 单片机以及派生家族中,简化了复杂的软件设计,缩短了项目周期。RTX51 TINY是RTX51的最小模式,可以在没有外部扩展数据存储器的8051系统中运行,可以执行循环任务切换,允许“准并行”地执行多个无穷循环或任务。CPU执行时间被划分为若干时间段,RTX51 TINY为每个任务分配一个时间段,一个任务只允许在分配的时间段内执行,然后RTX51 TINY切换到另一个任务并允许它在其规定的时间段内执行。
RTX51 TINY为任务管理、任务通信以及其他服务提供函数,TRX51 TINY的系统函数可以直接被C51调用,这些函数的说明以及所有常数说明都放在头文件“RTX51TY.H”中,该头文件必须在用户应用程序的开始处用“#include”包含进来。
在该单片机程序中,首先为了与上位机保持一致,将8051初始化为:9600b/s波特率,8位数据位,1位停止位,无奇偶校验,串行口工作在方式1,然后单片机根据上位机发送来的命令切换高频开关到所需要的天线。该程序中需要同时执行的任务有:闪烁指示任务、当前通道显示任务、开关转换以及结果输出任务。
主程序进行系统初始化以后,顺序建立3个任务,进入CPU休眠状态。各个任务运行后,首先进入任务Ready状态,等待相应任务的唤醒。任务被唤醒以后,进行相应处理,再次进入休眠状态。这样,可以减少任务切换,减轻系统负担。
单片机主要程序如下:
#include <AT892051.H>
#include <rtx51tny.h>
void serial_init (void); //串口初始化函数说明
void init (void) _task_ INIT{ //任务初始化
while(1){
serial_init ();……
os_create_task (BLINKING);
os_create_task (DISPLAY);
os_create_task (SWITCH); //标志任务进入就绪状态
os_delete_task (INIT); //删除初始化任务 }
}
void blinking (void) _task_ BLINKING{ //闪烁程序
…… }
void disp (void) _task_ DISPLAY{ //当前通道显示程序
……}
void swit (void) _task_ SWITCH{ //开关切换程序
……}
void sendback (void) _task_ SENDOK{ //输出结果程序
……}
serial () interrupt 4 using 2 { //中断函数
……
if (RI) {……
isr_send_signal(SWITCH);}
if (TI) {……
isr_send_signal (SENDOK);}
}
void serial_init (void) { //初始化串口
SCON = 0X50; //波特率9600,方式1,T1,
TMOD |= 0X20; //允许接收,允许中断,晶振11.0592
TH1 = 0XFD;
TR1 = 1;
ES = 1;
RI = 0; }
其中,串口命令到来时,引发串口中断serial()处理程序,串口中断处理程序唤醒开关转换任务或者结果输出任务。
程序编写完毕,经RTX51 TINY实时操作系统的编译之后即可生成相应的执行文件,然后通过编程器写入89C2051单片机。
3 上位机通信程序设计
GH101型同轴开关的频率范围是DC~12.4GHz,承受平均功率为10W,直流脉冲电压12~15V,作为电磁兼容自动测量的一个重要部分,三个高频同轴开关组成的转换电路可用来对四路不同频段和结构的天线进行切换。
上位机通信软件设计是在LabVIEW图形化编程环境中采用VISA串口通信方式编程的。首先通过VISA Configure Serial Port模块设置串口,包括选择串口,设定波特率等。然后根据主界面上所选择的天线用VISA Write模块向单片机发送命令(00、01、10、11)从而控制不同开关的切换。界面设置和流程图如下:
本文利用单片机进行高频同轴开关的切换,通过串口实现与LabVIEW的通信,在电磁兼容自动测试系统中发挥了重要的作用,该电路工作可靠,运行良好。
参考文献
[1]刘君华.基于LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.
[2]Robert H.Bishop. LabVIEW 6i实用教程[M].北京:电子工业出版社,2003.
[3]徐爱钧,彭秀华.单片机高级语言C51 Windows环境编程与应用[M].北京:电子工业出版社,2001.