<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C52和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于AT89C52和USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-12-16 來源:網(wǎng)絡(luò) 收藏

          應(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的擴(kuò)展方便、編程簡(jiǎn)單、無需外接電源、采樣間隔時(shí)間由主機(jī)調(diào)整,實(shí)現(xiàn)了的小型化和便攜化,在現(xiàn)場(chǎng)信號(hào)采集,教學(xué)實(shí)驗(yàn),儀器儀表等領(lǐng)域具有一定的應(yīng)用前景。


          上一頁 1 2 3 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();