白玉 邱敏 于光華



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