劉松斌 王海星 馬 雙 柳 明
(1. 東北石油大學(xué)電氣信息工程學(xué)院,黑龍江 大慶 163318; 2. 大慶油田第一采油廠儀表安裝維修大隊,黑龍江 大慶 163453;3. 大慶儲運銷售分公司葡北油庫,黑龍江 大慶 163000)
隨著工業(yè)的不斷進(jìn)步與發(fā)展,控制系統(tǒng)越來越復(fù)雜,處理的數(shù)據(jù)量也越來越大,但單片機等主控芯片的處理能力有限,難以滿足控制的需求,因此分布式系統(tǒng)逐漸成為主流。在分布式系統(tǒng)中各種數(shù)據(jù)的采集和對執(zhí)行機構(gòu)的控制都由下位機完成,而對采集到的數(shù)據(jù)進(jìn)行進(jìn)一步分析和處理則由功能更強大的上位機完成。由于單片機具有高可靠性、價格低廉和可應(yīng)用于惡劣工業(yè)環(huán)境的特點,在分布式控制系統(tǒng)中大多采用單片機作為下位機。而PC機因其處理能力強及人機交互好等特點常被用作上位機。單片機與PC機通信常選用串口通信方式,串口通信是通過數(shù)據(jù)信號線、地線及控制線等按位進(jìn)行數(shù)據(jù)傳輸?shù)囊环N通信方式[1]。在PC領(lǐng)域里以RS-232、RS-485協(xié)議為代表的串口通信因其通信穩(wěn)定、抗干擾能力強及成本低等優(yōu)點被普遍應(yīng)用在工業(yè)領(lǐng)域。
LabVIEW(又稱為G語言)是一種基于數(shù)據(jù)流的圖形化編程環(huán)境[2],近年來在檢測和控制領(lǐng)域得到了快速發(fā)展。因其程序是圖形化的框圖形式,在人機交互等方面具有天然的優(yōu)勢,故已逐漸成為上位機編程軟件的不二選擇。筆者設(shè)計了一種基于LabVIEW的單片機與PC機串口通信顯示系統(tǒng),為了更直觀地了解串口通信情況,為系統(tǒng)填加顯示模塊,用LCD實時顯示收發(fā)的數(shù)據(jù),從而驗證串口通信是否成功。
串口通信系統(tǒng)顯示由4部分組成(圖1):PC機作為上位機,負(fù)責(zé)數(shù)據(jù)的發(fā)送、接收和人機交互;單片機最小系統(tǒng)作為下位機,負(fù)責(zé)串口數(shù)據(jù)的接收、發(fā)送和液晶驅(qū)動;MAX232芯片作為連接前兩部分的橋梁,將RS-232的負(fù)邏輯電平(邏輯1為-15~-3V,邏輯0為3~15V)[3]轉(zhuǎn)換成TTL電平(5V為邏輯1,0V為邏輯0);CH240128液晶顯示屏負(fù)責(zé)顯示數(shù)據(jù)的接收情況。

圖1 串口通信顯示系統(tǒng)硬件結(jié)構(gòu)
首先由單片機、晶振、電阻及電容等構(gòu)成單片機最小系統(tǒng)[4],在最小系統(tǒng)的基礎(chǔ)上結(jié)合MXA232芯片引出DB9串行端口。將單片機串口發(fā)送TXD與PC機串口接收RXD相連,單片機串口接收RXD與PC機串口發(fā)送TXD相連,并將二者的地相連。依據(jù)CH240128液晶的引腳定義,將其與單片機I/O引腳相連。串口通信顯示系統(tǒng)的硬件電路如圖2所示。
軟件程序設(shè)計分為兩部分:一是運行在PC 端的LabVIEW程序;二是運行在單片機中的C51程序。結(jié)合硬件實現(xiàn)串口通信與顯示功能,即在PC端發(fā)送一串字符串,通過串口發(fā)送到單片機中,單片機接收到數(shù)據(jù)后返回該字符串,并將其顯示到液晶上。

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

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

圖4 串口通信顯示系統(tǒng)運行界面
利用圖形化編程軟件LabVIEW設(shè)計了單片機與PC機串口通信顯示系統(tǒng),實際應(yīng)用表明,該系統(tǒng)通信穩(wěn)定、可靠,抗干擾能力強,為上位機與下位機通信提供了新的解決方案。而且該系統(tǒng)可以移植到NI系列板卡中作為數(shù)據(jù)顯示裝置,具有實際工程應(yīng)用價值。
[1] 徐超.LabVIEW在實時測控系統(tǒng)中的應(yīng)用研究[D].重慶:重慶大學(xué),2005.
[2] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011:35~80.
[3] 楊忠仁,饒程,鄒建,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)[J].重慶大學(xué)學(xué)報(自然科學(xué)版),2004,27(2):32~35.
[4] 張毅剛,彭喜元,姜守達(dá),等. 新編MCS51單片機應(yīng)用設(shè)計[M]. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2012:8~13.
[5] 阮奇楨. 我和LabVIEW[M]. 北京:北航空航天大學(xué)出版社,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.