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