基于AT89C52和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
應(yīng)用程序中有兩個(gè)線程,輔助線程為采樣線程,采樣線程的流程如圖2所示。
采樣線程負(fù)責(zé)從設(shè)備讀取數(shù)據(jù),并通過消息傳送機(jī)制與主線程通信;主線程負(fù)責(zé)采樣數(shù)據(jù)的顯示、存盤,向設(shè)備發(fā)送命令數(shù)據(jù)包,以及啟動(dòng)/停止采樣線程。當(dāng)執(zhí)行啟動(dòng)采樣命令時(shí),主線程先向設(shè)備發(fā)送啟動(dòng)命令數(shù)據(jù)包,然后啟動(dòng)采樣線程準(zhǔn)備接收數(shù)據(jù);當(dāng)執(zhí)行停止采樣命令時(shí),主線程先向設(shè)備發(fā)送停止命令數(shù)據(jù)包,然后停止采樣線程結(jié)束數(shù)據(jù)的接收。命令數(shù)據(jù)包大小為4 B.包含有命令字和采樣間隔時(shí)間參數(shù)等信息。
2.3 單片機(jī)程序
如上所述,單片機(jī)的INTO中斷一旦觸發(fā),表示主機(jī)有命令數(shù)據(jù)包傳送到。在INTO的中斷處理程序中,單片機(jī)讀取EP2端點(diǎn)的數(shù)據(jù)直到EP2端點(diǎn)為空(FLAGB為低電平),獲得上位機(jī)發(fā)送的命令數(shù)據(jù)包。若接收到啟動(dòng)命令,則根據(jù)命令數(shù)據(jù)包的采樣間隔時(shí)間參數(shù)來設(shè)置計(jì)數(shù)變量和定時(shí)器T0的初值并啟動(dòng)T0;若接收到的命令為停止命令,則停止定時(shí)器TO。在TO的中斷處理程序中若相應(yīng)的計(jì)數(shù)變量達(dá)到設(shè)定值,則完成A/D轉(zhuǎn)換、讀取數(shù)據(jù)以及將數(shù)據(jù)寫入EP6端點(diǎn)的操作。計(jì)數(shù)變量和TO的初值均根據(jù)命令數(shù)據(jù)包的參數(shù)進(jìn)行設(shè)置,因此設(shè)備的采樣間隔時(shí)間可以由主機(jī)程序進(jìn)行調(diào)整。
3 結(jié) 語
工作于Slave FIFo方式下的FX2相當(dāng)于在外部控制和主機(jī)之間構(gòu)造了一個(gè)的數(shù)據(jù)管道。通過對(duì)FX2的FIFO標(biāo)志引腳FLAGA,F(xiàn)ALGB,F(xiàn)LAGc的配置,使該芯片可以方便地與單片機(jī)進(jìn)行連接,單片機(jī)通過外部中斷獲知主機(jī)數(shù)據(jù)的到達(dá),通過其他標(biāo)志引腳獲得端點(diǎn)FIFO的信息,單片機(jī)和主機(jī)通信時(shí),感覺不到FX2的存在。基于單片機(jī)和Fx2的數(shù)據(jù)采集系統(tǒng)擴(kuò)展方便、編程簡(jiǎn)單、無需外接電源、采樣間隔時(shí)間由主機(jī)調(diào)整,實(shí)現(xiàn)了數(shù)據(jù)采集系統(tǒng)的小型化和便攜化,在現(xiàn)場(chǎng)信號(hào)采集,教學(xué)實(shí)驗(yàn),儀器儀表等領(lǐng)域具有一定的應(yīng)用前景。
評(píng)論