霍爾傳感器信號(hào)采集與顯示系統(tǒng)設(shè)計(jì)
以下僅給出串行通信初始化和中斷服務(wù)子程序代碼:
串行通信初始化程序?yàn)椋?p>
3.2 PC機(jī)部分
在Windows中,串行口的硬件設(shè)備通過通信驅(qū)動(dòng)程序comm.drv與windows進(jìn)行連接,通過使用標(biāo)準(zhǔn)的windows API函數(shù)發(fā)送和接收數(shù)據(jù)。而MSComm控件通信功能的實(shí)現(xiàn),是調(diào)用windows API函數(shù),并通過設(shè)置其屬性和事件,來定義windows通信驅(qū)動(dòng)程序的API函數(shù)接口,為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。
MSCOmm控件提供了2種處理通信的方法:一是事件驅(qū)動(dòng)方法,也就是利用OnComm事件,這是一種處理串行端口活動(dòng)非常有效的方法,不僅能夠利用MSCOmm控件來偵測(cè)并處理通信事件和錯(cuò)誤,而且還具有程序響應(yīng)及時(shí)、可靠性高等優(yōu)點(diǎn);另一種方法是查詢法,MSComm控件的C0mmEvent屬性返回通信中產(chǎn)生的事件和錯(cuò)誤類型,由通信控件自動(dòng)檢測(cè)和跟蹤通信狀態(tài)后設(shè)置。因此可以直接讀取CommEvent屬性的值來檢測(cè)通信中產(chǎn)生的事件和錯(cuò)誤類型,這種方法比較簡(jiǎn)單,常用在小的自含程序中。
該設(shè)計(jì)程序即采用查詢法讀取InBufferCount的屬性值來接收單片機(jī)發(fā)來的數(shù)據(jù)。實(shí)驗(yàn)主程序?qū)Υ诔跏蓟嫵鲎鴺?biāo)系;每單擊‘繪點(diǎn)’鍵程序向單片機(jī)發(fā)送一個(gè)任意數(shù),告訴單片機(jī)將模數(shù)轉(zhuǎn)換結(jié)果發(fā)送過來,然后采用查詢方式接收該數(shù)據(jù),進(jìn)行相應(yīng)的轉(zhuǎn)化后把該點(diǎn)繪在坐標(biāo)系上,一次數(shù)據(jù)采集結(jié)束。
MSComm控件的常用屬性:CommPort:設(shè)置并返回通信端口號(hào);Settings:以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位;Pott()pen:設(shè)置并返回通信端口的狀態(tài)也可以打開和關(guān)閉端口;Input:從接收緩沖區(qū)返回和刪除字符;Output:向傳輸緩沖區(qū)寫1個(gè)字符串。
該實(shí)驗(yàn)的Coml口串行通信初始化程序如下:
End Sub
從圖7中PC機(jī)界面顯示位移一電壓坐標(biāo)圖,表1記錄的數(shù)據(jù)以及圖8在示波器上顯示的霍爾線性電路理想電壓一位移曲線圖相比較,可以發(fā)現(xiàn)由于傳感器實(shí)驗(yàn)臺(tái)受外界干擾等原因使得輸出信號(hào)輸出誤差在所難免,而且沒有電平轉(zhuǎn)換,使得VB繪圖中得到的數(shù)值存在負(fù)值;但是可以在圖中看到傳感器輸出的電壓值在正負(fù)之間有明顯的對(duì)稱性,與要求輸出的理想輸出信號(hào)波形相符合,證明本系統(tǒng)運(yùn)行良好,設(shè)計(jì)的非常成功。
4 結(jié) 語
對(duì)于目前廣泛應(yīng)用的WindOWs環(huán)境下實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通信問題具有重要的參考價(jià)值。
評(píng)論