劉松斌 王海星 馬 雙 柳 明
(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所示。
軟件程序設計分為兩部分:一是運行在PC 端的LabVIEW程序;二是運行在單片機中的C51程序。結合硬件實現串口通信與顯示功能,即在PC端發送一串字符串,通過串口發送到單片機中,單片機接收到數據后返回該字符串,并將其顯示到液晶上。

圖2 串口通信顯示系統硬件電路
LabVIEW串口通信程序主要通過NI-VISA節點來完成,NI-VISA是一個字節級的通信接口驅動。通過NI-VISA函數[5]編寫的程序可以在任何具有串行端口NI-VISA[6]的機器上運行,這就意味可以在具有LabVIEW和Windows的機器上寫入和測試串行VI,然后在NI的板卡[7]上使用相同的程序。其中,NI-VISA主要包括串口初始化、串口寫、串口讀、Bytes of port[8]及串口關閉等函數。串口初始化主要負責設置串口號、波特率及奇偶校驗等參數。為了下位機能正確識別數據,在數據首尾添加標識位后寫入串口。
單片機串口程序(圖3)參數要與上位機的參數設置一致(如波特率、奇偶校驗[9]等)。利用判斷語句去除標識位后,對上位機發送來的數據進行解析,再將數據寫入串口緩沖區SBUF寄存器。為了在液晶顯示收到的數據,需要按照液晶的驅動時序圖設置寫數據及寫指令等時序完成液晶的驅動,還需匹配串口通信和液晶顯示的時序。由于液晶顯示需要一定的時間,而串口通信數據收發很快,難以做到收到一個字節就顯示一個字節的數據,因此需要將收到的數據放到一個數組中以中斷的方式顯示數據。

圖3 單片機程序流程框圖
結合硬件和軟件設計,完成基于LabVIEW的單片機與PC機串口通信顯示系統設計。該系統運行情況如圖4所示。在上位機發送數據123,單片機接收到數據后將123返回到上位機,并將數據顯示在液晶屏上,實現了上位機(PC機)與下位機(單片機)的數據通信。

圖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.