基于C8051F020與傳感器的振動(dòng)信號分布式檢測方法
PC機的異步串行通信口是采用通用異步接收發(fā)送器(簡(jiǎn)稱(chēng)UART)為核心構成的。UART的產(chǎn)品型號很多,大多采用Ins8250芯片。對UART的編程實(shí)際上是對其內部寄存器的操作。UART內部寄存器共有10個(gè)。編程時(shí)首先要確定串行通信的數據格式,這是通過(guò)將選定的數據格式參數寫(xiě)入到線(xiàn)路控制寄存器LCR來(lái)完成的,接下來(lái)需要將波特率因子寫(xiě)入到波特率因子寄存器來(lái)確定雙方傳輸波特率,再通過(guò)讀線(xiàn)路狀態(tài)寄存器LSR來(lái)判斷芯片是否就緒或有錯等。通信線(xiàn)路控制寄存器LCR的格式如圖4所示?! ?p>
通過(guò)將參數字節寫(xiě)入到線(xiàn)路控制寄存器,可以將UART編程為這樣的串行通信數據格式:1位起始位,8位數據位,1位奇偶校驗位,1位停止位,1幀共11位。既然能夠在PC機上實(shí)現1幀11位的數據格式,并且改變線(xiàn)路控制寄存器的D5、D4、D3位的值能將奇偶位設定為“恒1”或“恒0”,則若在發(fā)送地址幀時(shí)將奇偶位設定為“恒1”,在發(fā)送數據位時(shí)將奇偶位設定為“恒0”,便可以在PC機上模擬51系列單片機的多機通信持點(diǎn),從而直接利用這種特點(diǎn)實(shí)現它們之間的主從分布式多機通信。
主機和從機遵循主從原則,主機用呼叫方式選擇從機,數據在主機和從機之間雙向傳遞,各從機之間的相互通信需通過(guò)主機作為中介。主從機之間還應傳送一些供它們識別的命令和狀態(tài)字,如以00H表示主機發(fā)送從機接收命令,以01H表示從機發(fā)送主機接收命令等。
PC主機通信程序的實(shí)現方法
對PC機UART的編程是主機通信程序的核心。一般可以通過(guò)兩種方式實(shí)現對UART的操作。一種是直接訪(fǎng)問(wèn)底層地址實(shí)現對LCR、LSR、波特率因子寄存器的操作,這種方法只適用于Windows9X.在WindowsNT環(huán)境下系統禁止用戶(hù)程序直接訪(fǎng)問(wèn)硬件和物理地址,因此該方法不可取。具體過(guò)程是通過(guò)調用標準通信函數inp()、outp()實(shí)現的。另一種方式是通過(guò)通信控件或WindowsAPI函數間接對LCR、LSR、波特率因子寄存器進(jìn)行相關(guān)操作。因此本系統也使用MSComm控件,而WindowsAPI函數更適合在多現程領(lǐng)域應用。
結束語(yǔ)
實(shí)踐證明基于C8051F020單片機與MXA2500GL傳感器的振動(dòng)信號分布式檢測系統性能可靠,大大的節約了成本,因此該系統在汽車(chē)整車(chē)及零部件的測試與診斷過(guò)程極具推廣價(jià)值。
評論