基于USB接口的多節(jié)點(diǎn)無(wú)線測(cè)溫系統(tǒng)
根據(jù)USB協(xié)議,任何傳輸都是由主機(jī)(Host)開(kāi)始的。單片機(jī)做它的前臺(tái)工作,等待中斷。主機(jī)首先要發(fā)令牌包給USB設(shè)備,C8051F320接收到令牌包后就進(jìn)入中斷服務(wù)程序,首先讀單片機(jī)的中斷寄存器,判斷USB令牌包的類(lèi)型,然后執(zhí)行相應(yīng)的操作。
在USB單片機(jī)程序中,要完成對(duì)各種令牌包的響應(yīng),其中比較難處理的是SETUP包,主要是端口0的編程。本系統(tǒng)中主要用到了初始化、讀、寫(xiě)、中斷這4個(gè)函數(shù):初始化USB_Init(0,0xEA61,NULL,NULL,Serial,250,0x80,0x100)函數(shù);塊寫(xiě)函數(shù)Block_Write();塊讀函數(shù)Block_Read();USB中斷使能函數(shù)。USB的所有處理程序都是通過(guò)USB的中斷服務(wù)程序完成的。進(jìn)入U(xiǎn)SB中斷后,程序調(diào)用Get_Interrupt_Source()函數(shù)獲得USB中斷的進(jìn)入原因。然后根據(jù)不同的入口情況,來(lái)進(jìn)行相應(yīng)的處理。比如收到數(shù)據(jù)之后,讀取相應(yīng)的緩沖區(qū)內(nèi)容到內(nèi)存中;收到初始化命令時(shí),復(fù)位單片機(jī)內(nèi)的各個(gè)狀態(tài)參數(shù)。
4.2 USB驅(qū)動(dòng)程序
USB驅(qū)動(dòng)程序是一個(gè)軟件組件,封裝了應(yīng)用程序存取硬件設(shè)備的功能函數(shù)。USB驅(qū)動(dòng)程序模型分為5層,如圖4所示。
考慮到本系統(tǒng)使用了非標(biāo)準(zhǔn)類(lèi)別,需要自己開(kāi)發(fā)驅(qū)動(dòng)程序,USB設(shè)備驅(qū)動(dòng)程序的工具使用了USBXpressDevelopment Kit。主要函數(shù)如下:SI_Open()函數(shù);SI_Close()函數(shù);SI_Read函數(shù);SI_Write()函數(shù);SI_GetNumDevices()函數(shù);SI_CheckRXQueue()。
用戶端若要從設(shè)備讀取數(shù)據(jù),將調(diào)用一個(gè)應(yīng)用程序接口API,如OpenFile,SiUSBXp.dll實(shí)現(xiàn)這個(gè)API??偩€驅(qū)動(dòng)程序控制對(duì)總線上所有設(shè)備的訪問(wèn)。
4.3 用戶應(yīng)用程序
主機(jī)軟件采用可視化編程工具VC 6.0進(jìn)行開(kāi)發(fā),采用數(shù)據(jù)庫(kù)Microsoft Access 2003進(jìn)行信息的管理。
根據(jù)實(shí)際的系統(tǒng)應(yīng)用要求,整個(gè)系統(tǒng)的軟件結(jié)構(gòu)如圖5所示。
5 測(cè)溫系統(tǒng)在實(shí)際工程中的應(yīng)用
測(cè)溫系統(tǒng)在某議事大廈項(xiàng)目中進(jìn)行了應(yīng)用,該工程基礎(chǔ)底板平面尺寸為65.4 m×47 m,其中中間區(qū)域3、7軸線與B、F軸線之間24.0 m×21.53 m部分板厚為2.2 m;該部分周?chē)?5個(gè)大承臺(tái)板厚為2.5 m;其余部分均為0.7 m,混凝土采用C40。
在進(jìn)行該工程基礎(chǔ)底板的混凝土施工過(guò)程中,本系統(tǒng)進(jìn)行了為期將近兩個(gè)星期的測(cè)溫使用,效果很好。圖6為自動(dòng)記錄的3號(hào)點(diǎn)的溫度變化曲線。
6 結(jié) 語(yǔ)
基于C8051F320 USB接口的無(wú)線測(cè)溫系統(tǒng)把計(jì)算機(jī)技術(shù)與傳統(tǒng)信號(hào)采集技術(shù)緊密結(jié)合起來(lái),充分發(fā)揮PC機(jī)和單片機(jī)各自的優(yōu)點(diǎn),實(shí)現(xiàn)傳感器信號(hào)的采集、存儲(chǔ)、傳輸、顯示和處理。而借助USB接口的通信功能,減小了數(shù)據(jù)傳輸系統(tǒng)的復(fù)雜性,提高了傳輸速率極大地方便了系統(tǒng)的使用。
評(píng)論