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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 太陽能環(huán)境參數(shù)測試儀的系統(tǒng)設(shè)計(jì)

          太陽能環(huán)境參數(shù)測試儀的系統(tǒng)設(shè)計(jì)

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

          1.5 通信模塊
          測試儀通過RS485工業(yè)總線與PC機(jī)進(jìn)行通信,其硬件接口電路如圖5所示。


          2 軟件設(shè)計(jì)
          2.1 總體設(shè)計(jì)
          測試儀的軟件開發(fā)采用的是Keil C,所有代碼采用C語言編寫。為了方便程序調(diào)試和提高可靠性,軟件采用模塊化結(jié)構(gòu)設(shè)計(jì),主要由初始化程序、主程序、子程序、中斷服務(wù)程序等組成。單片機(jī)上電后即開始循環(huán)執(zhí)行溫濕度、照度測量程序,并以設(shè)定的時(shí)間間隔在數(shù)碼管上輪流動態(tài)顯示;按鍵切換和通信功能部分由于使用頻率相對較低,為降低設(shè)備功耗,其程序以中斷響應(yīng)的方式執(zhí)行。在此要注意中斷優(yōu)先級的設(shè)置:按鍵中斷優(yōu)先級應(yīng)高于串口中斷,否則將無法進(jìn)行顯示切換。主程序流程如圖6所示。

          2.2 傳感器驅(qū)動程序
          本系統(tǒng)采用的傳感器均為集成數(shù)字芯片且都具有I2C總線接口,故其驅(qū)動程序的編寫要嚴(yán)格遵循I2C總線的時(shí)序。主程序?yàn)槊恳粋€(gè)參數(shù)開辟了一個(gè)8位的存儲空間,傳感器將采集到的數(shù)據(jù)經(jīng)SDA引腳串行輸出,驅(qū)動程序?qū)DA線上輸出的數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,并存儲到相應(yīng)空間中,以方便其他功能程序調(diào)用。以下是照度傳感器數(shù)據(jù)采集程序的部分代碼。
          (1)TSL2561初始化


          2.3 RS485通信程序
          測試儀與上位機(jī)的通信采用RS485協(xié)議。串口參數(shù)為:波特率9600,數(shù)據(jù)位8位,1個(gè)校驗(yàn)位,1個(gè)停止位。其數(shù)據(jù)格式如圖7所示。

          由于RS485總線協(xié)議與RS232串口協(xié)議只是接口電平上有區(qū)別,其軟件編程完全按照串口通信協(xié)議進(jìn)行,此處不再詳述。


          結(jié) 語
          經(jīng)實(shí)驗(yàn)測試,該溫度測量顯示精度可以達(dá)到0.1℃,濕度精確到O.1%,照度可以精確到11x。由于主要器件均為I2C數(shù)字接口,故本測試儀還有結(jié)構(gòu)簡單、易維護(hù)、可擴(kuò)展性強(qiáng)等特點(diǎn),具有很高的實(shí)用價(jià)值;另外,獨(dú)特的雙電源供電方式更擴(kuò)展了它的適用范圍。


          上一頁 1 2 下一頁

          評論


          相關(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); })();