白玉 邱敏 于光華
摘要:根據(jù)學(xué)校多年組織大學(xué)生參加“全國(guó)大學(xué)生機(jī)器人大賽”的經(jīng)驗(yàn),利用LabVIEW軟件搭建了一個(gè)單片機(jī)圖形調(diào)試平臺(tái),該平臺(tái)修改方便、應(yīng)用靈活,可以使更多沒有參賽經(jīng)歷的學(xué)生能夠更好地提高動(dòng)手能力。
關(guān)鍵詞:LabVIEW;單片機(jī);課程改革;串口
0 引言
我校多年來組織大學(xué)生參加了“全國(guó)大學(xué)生機(jī)器人大賽”,絕大部分經(jīng)過大賽歷練的隊(duì)員都能成為工程實(shí)踐能力強(qiáng)、創(chuàng)新能力強(qiáng)、團(tuán)隊(duì)協(xié)作能力強(qiáng)、具有國(guó)際競(jìng)爭(zhēng)力的高素質(zhì)復(fù)合型人才。在設(shè)計(jì)開發(fā)機(jī)器人過程中,單片機(jī)在機(jī)器人控制部分占據(jù)了主導(dǎo)地位,我們通過長(zhǎng)期的實(shí)踐探索發(fā)現(xiàn),在設(shè)計(jì)和調(diào)試單片機(jī)控制系統(tǒng)時(shí),圖像化顯示各中間環(huán)節(jié)調(diào)試的數(shù)據(jù)將給系統(tǒng)開發(fā)帶來極大的好處。本文以STC系列單片機(jī)為例,其通過串口與計(jì)算機(jī)相連,設(shè)計(jì)了一款基于LabVIEW軟件的圖形化數(shù)據(jù)顯示工具。
1 LabVIEW的串口通信
LabVIEW是美國(guó)國(guó)家儀器(NI)公司研發(fā)的一款實(shí)用工具軟件,其基于圖形化的編輯語(yǔ)言和簡(jiǎn)單實(shí)用的組件使用方式,可以幫助我們快速構(gòu)建各種應(yīng)用所需的工具,提高開發(fā)效率。
單片機(jī)與計(jì)算機(jī)的連接有多種方式,如USB、CAN、JTAG等,但串口通信仍是目前最簡(jiǎn)單、最實(shí)用的連接方式。在LabVIEW軟件中,若要使用串口,需先安裝VISA驅(qū)動(dòng)。
2 通信協(xié)議設(shè)計(jì)
16進(jìn)制字符傳遞信息多,效率較高,但單片機(jī)在處理16進(jìn)制字符串的收發(fā)時(shí)相對(duì)較復(fù)雜。字符數(shù)據(jù)通信時(shí),所有信息以特定字符開頭的字符串表示,雖然效率有所降低,但可以直接使用標(biāo)準(zhǔn)格式輸入輸出函數(shù)sprintf()、sscanf()等,使用方便,開發(fā)效率高。本設(shè)計(jì)中采用的通信協(xié)議為:起始符$+命令標(biāo)示符1+參數(shù)1+……,命令標(biāo)示符2+參數(shù)2+……+*+校驗(yàn)碼。
3 下位機(jī)程序設(shè)計(jì)
3.1? ? 字符發(fā)送
單片機(jī)在串口設(shè)置完成后,可以直接使用printf()函數(shù)將變量以字符形式輸出到串口,此時(shí)串口為查詢狀態(tài),即字符發(fā)送時(shí)單片機(jī)一直處于查詢是否發(fā)送完成的狀態(tài),無法執(zhí)行其他指令,效率太低。
為提高效率,建立了一個(gè)數(shù)組作為發(fā)送數(shù)據(jù)的緩沖區(qū),利用sprintf()函數(shù)將待發(fā)送的數(shù)據(jù)按特定格式以字符的形式存儲(chǔ)到緩沖區(qū),當(dāng)打開串口中斷時(shí)可以逐個(gè)傳輸,還可以通過vsprintf()函數(shù)實(shí)現(xiàn)自定義printf()函數(shù)。
3.2? ? 字符接收
串口處在中斷狀態(tài),將收到的每個(gè)字符存入接收緩沖區(qū)。當(dāng)接收到一個(gè)完整的數(shù)據(jù)包時(shí)設(shè)置相應(yīng)標(biāo)志,在主函數(shù)中對(duì)數(shù)據(jù)包進(jìn)行處理。
3.3? ? 上位機(jī)程序設(shè)計(jì)
3.3.1? ? 串口設(shè)置
LabVIEW軟件的串口設(shè)置由VISA Configure Serial Port VI(圖1)實(shí)現(xiàn),通過該節(jié)點(diǎn)可以設(shè)置串口的基本信息,包括波特率、串口號(hào)、數(shù)據(jù)位、校驗(yàn)位、停止位等。
通過VISA讀取節(jié)點(diǎn)可以實(shí)現(xiàn)串口接收,如圖2所示。
通過VISA寫入節(jié)點(diǎn)可以實(shí)現(xiàn)串口的發(fā)送功能,如圖3所示。
3.3.2? ? 串口發(fā)送
串口發(fā)送部分的程序框圖如圖4所示,當(dāng)按下確定按鈕時(shí)即會(huì)把字符串中的信息發(fā)送入串口。信息發(fā)送只需在字符串模塊中輸入需要發(fā)送的字符信息即可。
3.3.3? ? 串口接收
LabVIEW的串口通信節(jié)點(diǎn)的工作方式為:查詢串口的接收緩沖區(qū),如果緩沖區(qū)中有數(shù)據(jù)就讀取數(shù)據(jù)進(jìn)行處理,若緩沖區(qū)內(nèi)沒有數(shù)據(jù)則在此等待,直到數(shù)據(jù)到來或超時(shí)退出。因此,在使用時(shí)需要根據(jù)實(shí)際數(shù)據(jù)情況設(shè)置數(shù)據(jù)讀取時(shí)間間隔和超時(shí)時(shí)間,才能使系統(tǒng)穩(wěn)定運(yùn)行。
在發(fā)送端數(shù)據(jù)發(fā)送速率基本穩(wěn)定時(shí),為提高效率,可以將數(shù)據(jù)讀取間隔時(shí)間設(shè)為下位機(jī)發(fā)送一組完整數(shù)據(jù)包的時(shí)間。否則,會(huì)造成緩沖區(qū)溢出或等待時(shí)間過長(zhǎng)導(dǎo)致程序出錯(cuò)。
因數(shù)據(jù)以字符形式傳送,可以通過字符串操作的函數(shù)對(duì)數(shù)據(jù)進(jìn)行處理。在尋找數(shù)據(jù)頭時(shí),可采用“搜索/拆分字符串(函數(shù))”(圖5)的方式,將特征字符送入搜索字符串處,即可得到以此開頭的特定字符串,將“匹配+剩余字符串”作為輸出結(jié)果送入字符串轉(zhuǎn)數(shù)值模塊,配合適當(dāng)?shù)钠屏窟M(jìn)行處理,即可得到相應(yīng)的數(shù)值和剩余的字符串。若需要對(duì)實(shí)際數(shù)據(jù)進(jìn)行計(jì)算還可以通過加入函數(shù)計(jì)算環(huán)節(jié)來實(shí)現(xiàn)。分?jǐn)?shù)/指數(shù)字符串至數(shù)值轉(zhuǎn)換如圖6所示。
為了能把接收到的數(shù)據(jù)以圖形的方式顯示出來,采用波形圖表作為數(shù)據(jù)顯示控件。若需要顯示多組數(shù)據(jù),可使用“捆綁(函數(shù))”將各組獨(dú)立數(shù)據(jù)組合為簇,共同顯示于波型圖表上。系統(tǒng)的完整程序框圖如圖7所示。
系統(tǒng)界面如圖8所示。
至此構(gòu)建了一個(gè)單片機(jī)與計(jì)算機(jī)間的通用調(diào)試平臺(tái),通過此平臺(tái),可以向單片機(jī)發(fā)送串口指令、修改運(yùn)行參數(shù)。同時(shí),還可將單片機(jī)的運(yùn)行狀態(tài)、變量信息以圖表和儀表的方式實(shí)時(shí)顯示出來。
4 結(jié)語(yǔ)
本文結(jié)合我校學(xué)生參加“全國(guó)大學(xué)生機(jī)器人大賽”的實(shí)踐經(jīng)驗(yàn),應(yīng)用LabVIEW軟件搭建了一個(gè)單片機(jī)圖形調(diào)試平臺(tái),其構(gòu)建簡(jiǎn)單,修改方便,應(yīng)用靈活,雖然LabVIEW的串口通信工作效率不是很高,但對(duì)于大部分單片機(jī)系統(tǒng)來說已經(jīng)足夠。與利用C#等軟件開發(fā)上位機(jī)相比,此平臺(tái)開發(fā)門檻更低,開發(fā)速度更快,使更多沒有參賽經(jīng)歷的學(xué)生能夠更好地提高動(dòng)手能力,起到推進(jìn)單片機(jī)課程體系改革的作用。
[參考文獻(xiàn)]
[1] 呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國(guó)外電子測(cè)量技術(shù),2009(12):27-30.
[2] 胡發(fā)煥,劉祚時(shí),朱花.以機(jī)器人大賽為契機(jī)探索大學(xué)生創(chuàng)新能力培養(yǎng)模式[J].中國(guó)電力教育,2013(28):53-54.
[3] 張素萍,李朝強(qiáng),高照陽(yáng).基于RS485和LabVIEW的電參數(shù)測(cè)量?jī)x數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2015(6):24-27.
收稿日期:2020-03-06
作者簡(jiǎn)介:白玉(1979-),男,山東梁山人,副教授,研究方向:數(shù)字信號(hào)處理。