摘 要:本文利用LabView和 C語言分別對上位機和單片機進行串口通信程序的編制,介紹了通過串口實現(xiàn)高頻開關轉換電路的軟件和硬件組成。
關鍵詞:LabVIEW;VISA;RS232串口;C51;RTX51 TINY
0 引言
高頻同軸開關在微波測試系統(tǒng)和微波電子設備中作斷開信號之用。把幾個開關組合起來,可以作為同時開啟和關閉幾個信號的通道。使用同軸開關在電磁兼容等自動測試系統(tǒng)中具有非常重要的意義,它可以減少轉接各種儀器、儀表的工作量,提高系統(tǒng)的工作效率,另外還可以降低同軸接頭器件的磨損,延長其使用壽命。該系統(tǒng)采用89C2051單片機作為下位機,計算機作為上位機,通過RS232串口傳輸數(shù)據(jù)或指令,在LabVIEW軟件平臺上對高頻同軸開關進行程控切換。
1 labVIEW及VISA簡介
LabVIEW是由NI公司研制的基于圖形化編程語言G的虛擬儀器開發(fā)平臺軟件。它結合了簡單易用的圖形化開發(fā)環(huán)境與靈活強大的編程語言,提供了一個直覺式的編程環(huán)境,與測量硬件緊密結合,能讓用戶迅速開發(fā)出滿足需求的各種虛擬儀器系統(tǒng)。LabVIEW在儀器控制、數(shù)據(jù)采集、數(shù)據(jù)分析和數(shù)據(jù)顯示等許多領域具有非常廣泛的應用。
VI是在LabVIEW編程中組建的程序單元,它有三個主要部分:前面板、框圖和圖標/連接器。前面板是VI的交互式用戶界面,包括多種控件和指示器;框圖是VI的可執(zhí)行源代碼的圖形表示;圖標和連接器指定了數(shù)據(jù)流進流出VI的路徑。
VISA是虛擬儀表軟件結構體系(Virtual Instrument Software Architecture)的簡稱,它是在LabVIEW平臺上控制VXI、GPIB、RS232串口及其它種類儀器的標準I/O應用程序接口(API)。VISA是由組成VXI plug&play系統(tǒng)聯(lián)盟的幾十家最大的儀器儀表公司所統(tǒng)一采用的標準。通過這個標準,用戶可以不必考慮時間及儀器I/O選擇項,而且驅動軟件可以相互兼容。VISA庫中常用的串口通訊函數(shù)有:VISA Configure Serial Port(串口配置)、VISA Write(讀)、VISA Read(寫)、VISA Close(關閉)。
圖1 VISA Configure Serial Port模塊結構
上圖是VISA Configure Serial Port模塊,它根據(jù)VISA resource name與指定的RS232串口建立通訊?梢栽O置波特率(baud rata,默認值9600)、一幀信息的位數(shù)(data bits,默認值8)、停止位數(shù)(stop bits)、奇偶校驗(parity)以及握手方式(flow control)。
VISA Write模塊把Write buffer中的字符串寫入指定的設備,返回實際傳送的字節(jié)數(shù)。VISA Read根據(jù)指定讀取的字節(jié)數(shù)讀入設備中的數(shù)據(jù),返回實際傳送的字節(jié)數(shù)。VISA Close關閉與指定設備的通訊過程,釋放系統(tǒng)資源。
2 單片機通信程序設計
89C2051單片機有一個功能很強的全雙工串行口,該串行口有4種工作方式,可用于并行口擴展和實現(xiàn)雙機或多機通信。在物理上有獨立的發(fā)送線TXD(P3.1)和接收線RXD(P3.0),以及相對應的獨立的發(fā)送緩沖器和接收緩沖器。
PC機的串口采用的是RS232接口標準。在電氣特性上,RS232采用負邏輯,即:邏輯“1”在-5V~-10V,邏輯“0”在+5V~+10V。而89C2051采用TTL電平,邏輯“1”為3.8V,邏輯“0”為0.4V,所以兩者接口時,必須進行電平轉換。這里采用MAX202實現(xiàn)此轉換。同時使用繼電器來隔離并驅動同軸開關。同軸開關切換電路如圖所示:
單片機程序采用C51語言編寫,這是專門為51系列單片機設計的高效率C語言編譯器,符合ANSI標準,生成的程序代碼運行速度極高,所需要的存儲器空間極小,完全可以和匯編語言相媲美。同時為了簡化具有實時性要求的多任務軟件的設計,程序使用了實時多任務操作系統(tǒng)RTX51 TINY。RTX51是德國 Keil公司開發(fā)的一種應用于MCS51系列單片機的實時多任務操作系統(tǒng),它可以工作在所有8051 單片機以及派生家族中,簡化了復雜的軟件設計,縮短了項目周期。RTX51 TINY是RTX51的最小模式,可以在沒有外部擴展數(shù)據(jù)存儲器的8051系統(tǒng)中運行,可以執(zhí)行循環(huán)任務切換,允許“準并行”地執(zhí)行多個無窮循環(huán)或任務。CPU執(zhí)行時間被劃分為若干時間段,RTX51 TINY為每個任務分配一個時間段,一個任務只允許在分配的時間段內(nèi)執(zhí)行,然后RTX51 TINY切換到另一個任務并允許它在其規(guī)定的時間段內(nèi)執(zhí)行。
RTX51 TINY為任務管理、任務通信以及其他服務提供函數(shù),TRX51 TINY的系統(tǒng)函數(shù)可以直接被C51調(diào)用,這些函數(shù)的說明以及所有常數(shù)說明都放在頭文件“RTX51TY.H”中,該頭文件必須在用戶應用程序的開始處用“#include”包含進來。
在該單片機程序中,首先為了與上位機保持一致,將8051初始化為:9600b/s波特率,8位數(shù)據(jù)位,1位停止位,無奇偶校驗,串行口工作在方式1,然后單片機根據(jù)上位機發(fā)送來的命令切換高頻開關到所需要的天線。該程序中需要同時執(zhí)行的任務有:閃爍指示任務、當前通道顯示任務、開關轉換以及結果輸出任務。
主程序進行系統(tǒng)初始化以后,順序建立3個任務,進入CPU休眠狀態(tài)。各個任務運行后,首先進入任務Ready狀態(tài),等待相應任務的喚醒。任務被喚醒以后,進行相應處理,再次進入休眠狀態(tài)。這樣,可以減少任務切換,減輕系統(tǒng)負擔。
單片機主要程序如下:
#include <AT892051.H>
#include <rtx51tny.h>
void serial_init (void); //串口初始化函數(shù)說明
void init (void) _task_ INIT{ //任務初始化
while(1){
serial_init ();……
os_create_task (BLINKING);
os_create_task (DISPLAY);
os_create_task (SWITCH); //標志任務進入就緒狀態(tài)
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 { //中斷函數(shù)
……
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; }
其中,串口命令到來時,引發(fā)串口中斷serial()處理程序,串口中斷處理程序喚醒開關轉換任務或者結果輸出任務。
程序編寫完畢,經(jīng)RTX51 TINY實時操作系統(tǒng)的編譯之后即可生成相應的執(zhí)行文件,然后通過編程器寫入89C2051單片機。
3 上位機通信程序設計
GH101型同軸開關的頻率范圍是DC~12.4GHz,承受平均功率為10W,直流脈沖電壓12~15V,作為電磁兼容自動測量的一個重要部分,三個高頻同軸開關組成的轉換電路可用來對四路不同頻段和結構的天線進行切換。
上位機通信軟件設計是在LabVIEW圖形化編程環(huán)境中采用VISA串口通信方式編程的。首先通過VISA Configure Serial Port模塊設置串口,包括選擇串口,設定波特率等。然后根據(jù)主界面上所選擇的天線用VISA Write模塊向單片機發(fā)送命令(00、01、10、11)從而控制不同開關的切換。界面設置和流程圖如下:
本文利用單片機進行高頻同軸開關的切換,通過串口實現(xiàn)與LabVIEW的通信,在電磁兼容自動測試系統(tǒng)中發(fā)揮了重要的作用,該電路工作可靠,運行良好。





