摘 要 文章采用NI公司推出的Lab windows/CVI虛擬儀器軟件開發(fā)平臺,充分利用其強大的交互式C語言編程模式,實現(xiàn)帶有軟件握手機制的PC機和單片機之間的串行通信,可供同行參考。
【關(guān)鍵詞】Lab windows/CVI 單片機 串行通信
1 系統(tǒng)總體設(shè)計
單片機和PC機的串行通信采用RS-232接口,系統(tǒng)工作時,單片機上電完成初始化設(shè)置后,等待PC機發(fā)送詢問信號“?”(ASCII碼是3FH),單片機接收到3FH后,就通過串口向PC機發(fā)送回答信號“.”(ASCII碼是2EH),PC機收到回答信號“.”后,發(fā)送確認信號“!”(ASCII碼是21H),到此就完成了軟件握手,下面單片機開始發(fā)送數(shù)據(jù),PC機接收并顯示數(shù)據(jù)。
2 硬件設(shè)計
系統(tǒng)中PC機作為上位機,單片機為下位機。單片機的時鐘振蕩頻率選擇11.059MHz。通過常用電平轉(zhuǎn)換芯片MAX232實現(xiàn)PC機串口和單片機串口的連接,如圖1所示。
單片機P2口接8位撥碼開關(guān),通過撥碼開關(guān)可以設(shè)置不同的波特率,如表1所示。
在單片機上電前將撥碼開關(guān)打到相應(yīng)位置完成單片機串口波特率的設(shè)定。
3 軟件設(shè)計
3.1 通信協(xié)議
通信協(xié)議設(shè)定幀格式為:1位起始位,8位數(shù)據(jù)位,1位停止位,不設(shè)奇偶校驗位。有效的通信傳輸字節(jié)只是中間的8位數(shù)據(jù)位。單片機的波特率設(shè)置由P2口內(nèi)容設(shè)定,PC機的波特率由界面中的波特率選擇控件決定,二者的波特率必須保持一致。
3.2 PC機程序設(shè)計
PC機程序設(shè)計部分利用Lab windows/CVI平臺進行,使用 Lab windows/CVI首先需建立一個項目文件,包含有用戶界面文件(.uir)、C源碼文件(.c)、頭文件(.h)、3個部分。接下來調(diào)試好系統(tǒng)軟件以后,使用Lab windows/CVI的Distribution Kit工具將項目文件生成應(yīng)用文件(.EXE)。
3.2.1 用戶界面設(shè)計
創(chuàng)建一個新的工程文件,在工程文件中添加一個新的用戶界面文件(.uir),在.uir文件中創(chuàng)建一個面板(panel)和若干控件。
面板和主要控件的屬性設(shè)置則如表2所示。
設(shè)置好以后,還需要按照下面步驟修改設(shè)置一些控件屬性:設(shè)置COMPORT控件的Label/Value屬性:向控件Label中添加COM1、COM2、COM3、COM4,相應(yīng)的Value值設(shè)為1、2、3、4,數(shù)據(jù)類型為int型;設(shè)置BAUDRATE控件的Label/Value值:2400、4800、9600、19200,數(shù)據(jù)類型同樣設(shè)為int型;設(shè)置CLEAR、READ、TEXTBOX、QUIT、FLUSHOUTQ、FLUSHINQ控件的Dimmed屬性的初始值為TRUE[2]。
3.2.2 代碼修改
Lab windows/CVI提供了RS-232函數(shù)庫,可以用來實現(xiàn)RS-232總線通信。
其中,函數(shù)Open Com Config用于打開COM端口并且設(shè)置端口參數(shù),其原型是int OpenComConfig (int COMPort, char deviceName[], long baudRate, int parity, int dataBits, int stopBits, int inputQueueSize, int outputQueueSize);函數(shù)Com Wrt用于向COM端口寫入指定長度數(shù)據(jù),其原型是int ComWrt (int COMPort, char buffer[], int count);函數(shù)Com Rd Byte用于從COM端口讀入一個字節(jié),其原型是int ComRdByte (int COMPort);函數(shù)Com Rd用于從COM端口讀入指定長度數(shù)據(jù)至緩沖器,其原型是int ComRd (int COMPort, char buffer[], int count);函數(shù)Flush InQ可清空輸入隊列,其原型是int Flush InQ (int COMPort);函數(shù)Flush OutQ可清空輸出隊列,其原型是int Flush OutQ (int COMPort)。
3.2.3 配置COM端口
程序運行后首先需要配置COM端口,選擇COM端口號和波特率后,點擊Config按鈕配置端口。若配置成功,設(shè)置CLEAR、READ、TEXTBOX、FLUSHOUTQ、FLUSHINQ有效。
為增強數(shù)據(jù)傳輸?shù)目煽啃?,在發(fā)送數(shù)據(jù)時加入了延時環(huán)節(jié)。
4 結(jié)論
綜上所述,Labwindows/CVI提供的叫做函數(shù)面板的操作界面,可以對每一個函數(shù)實現(xiàn)交互式編程,利用它豐富的庫函數(shù),使得源碼的鍵入量大大減少,程序語法正確率提高,工程設(shè)計的效率和可靠性大幅度增強。本系統(tǒng)所有程序均調(diào)試通過,數(shù)據(jù)傳輸可靠,值得推廣應(yīng)用。
參考文獻
[1]求是科技.單片機通信技術(shù)與工程實踐[M].北京:人民郵電出版社,2005.
[2]宋宇峰.LabWindows/CVI逐步深入與開發(fā)實例[M].北京:機械工業(yè)出版社,2003.
作者簡介
馬妍霞(1975-),女,山東省濟寧市人。大學(xué)本科學(xué)歷。從事工作為電子通信教學(xué)方面。
作者單位
濟寧職業(yè)技術(shù)學(xué)院 山東省濟寧市 272037endprint