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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DS18B20的多路溫度監(jiān)測系統(tǒng)設(shè)計與仿真

          基于DS18B20的多路溫度監(jiān)測系統(tǒng)設(shè)計與仿真

          作者: 時間:2013-10-29 來源:網(wǎng)絡(luò) 收藏
          2.1 測溫電路設(shè)計
          采用8片組成多路測溫電路。內(nèi)部均有一個全球惟一的64位產(chǎn)品序列號,單片機(jī)通過序列號可對一條總線上的多路DS18 B20進(jìn)行控制,讀取其溫度。但僅由單總線采集多路溫度數(shù)據(jù)時,軟件設(shè)計算法復(fù)雜,讀取速度慢,無法適用于實(shí)時性要求高的測溫場合。特別是當(dāng)單總線上掛接的DS18B20傳感器個數(shù)大于8個時,采用寄生電源供電方式亦存在總線驅(qū)動能力不足等問題。為此,本設(shè)計采用“單總線結(jié)構(gòu)+并行I/O口輸入”相結(jié)合的方式,實(shí)時巡回采集多路DS18B20的溫度信息。具體做法是:硬件上將8片DS18B20的單總線分別連到單片機(jī)的并行P1口引腳,同時各片DS18B20的電源端采用外部電源供電方式,且每個單總線另接一個4.7 kΩ的上拉電阻到5 V電源以保證達(dá)到足夠的工作電流;軟件上讀取多路溫度與讀取單路溫度的操作類似,不需讀取讀出所用DS18B20的序列號,而只需通過參數(shù)傳遞來循環(huán)讀取各路溫度數(shù)據(jù)(軟件設(shè)計中介紹)。
          2.2 鍵盤與LED顯示電路設(shè)計
          LED顯示電路設(shè)計:P0口輸出顯示代碼經(jīng)74LS245驅(qū)動后接到8位LED數(shù)碼管的段選線,P2口輸出接到LED的位選線。正常情況下,8位LED數(shù)碼管用于循環(huán)顯示通道號及該通道的溫度值。
          鍵盤輸入設(shè)計:采用獨(dú)立式鍵盤P3.2~P3.4用來修改溫度報警的上限與下限值。系統(tǒng)默認(rèn)的溫度報警上限為50℃,下限為-10℃。系統(tǒng)上電后,LED數(shù)碼管將先后顯示溫度報警上/下限值。若按P3.2鍵報警值加1;若按P3.3鍵報警值減1;P3.4為確定鍵,用于保存修改值。
          此外,當(dāng)系統(tǒng)檢測到當(dāng)前通道溫度值超過設(shè)定的上、下限時,將通過P3.6,P3.7進(jìn)行閃光報警提示。
          2.3 串行通信設(shè)計
          檢測系統(tǒng)可通過串行口與上位機(jī)進(jìn)行通信,向上位機(jī)傳送溫度值及相應(yīng)的通道號。實(shí)物中通過RS 232串行接口與上位機(jī)連接,上位機(jī)的控制界面由VB 6.0編寫。當(dāng)運(yùn)行軟件時,可以從虛擬終端看到上位機(jī)接收到的8個通道的溫度數(shù)據(jù)及相應(yīng)的通道號。

          3 軟件設(shè)計
          3.1 軟件總體設(shè)計
          如圖3所示,系統(tǒng)上電復(fù)位后,程序主要包括:

          c.JPG


          (1)系統(tǒng)初始化設(shè)置。
          (2)按鍵處理子程序:LED數(shù)碼管顯示上限報警溫度值并閃爍,若10 s中之內(nèi)有按鍵輸入修改溫度值,則進(jìn)行鍵盤操作直至修改完成,并保存溫度上限值;若10 s之內(nèi)無按鍵輸入或按P3.4“確定”鍵,則保存上限溫度;接著顯示下限報警溫度值并閃爍,重復(fù)上述操作后保存下限報警溫度值。
          (3)溫度報警值設(shè)置子程序:實(shí)現(xiàn)將8路的報警溫度寫入DS18B20中,流程圖詳見圖4所示。
          (4)讀取溫度子程序:在對顯示路數(shù)初始化后,進(jìn)行溫度值讀取,這是軟件設(shè)計的關(guān)鍵,下面將單獨(dú)介紹。
          (5)溫度報警處理:讀取某路DS18B20溫度值及報警上下限值后,進(jìn)行比較,若超出范圍則啟動定時器0,驅(qū)動上/下限報警提示單元。
          (6)顯示當(dāng)前通道溫度子程序:取得當(dāng)前通道號后,根據(jù)讀取的2字節(jié)溫度值(溫度暫存器格式參考DS18B20技術(shù)手冊),判斷其符號位并分別讀取其整數(shù)部分和小數(shù)部分,通過運(yùn)算后保存到顯示緩沖區(qū),進(jìn)行動態(tài)顯示,并刷新顯示若干時間。
          (7)上位機(jī)通信子程序:每采集一路溫度數(shù)據(jù),通過RS 232串口,將其通道號、溫度值發(fā)送給上位機(jī),完成相應(yīng)通道的溫度數(shù)據(jù)采集處理。
          (8)循環(huán)修改:修改通道號,進(jìn)行下一路溫度數(shù)據(jù)采集,直至8路溫度處理完成,如此循環(huán)往復(fù)。
          3.2 讀取溫度子程序設(shè)計
          采用DS18B20進(jìn)行單路測量時,可直接與單片機(jī)相連,不需讀取讀出器件的64位產(chǎn)品序列號。當(dāng)采用DS18B20進(jìn)行多路測溫時,在初始化操作后,通常的做法是需要在線逐個地搜索64位ROM編碼以確認(rèn)各個DS18B20所在位置,并需對ROM編碼進(jìn)行冗余校驗(yàn),算法設(shè)計復(fù)雜。且等待多路搜索是否完成需要消耗大量的時間,使程序執(zhí)行的效率和系統(tǒng)實(shí)時性受到了影響。
          本設(shè)計采用“單總線結(jié)構(gòu)+并行I/O口輸入”結(jié)合的方式巡回讀取多路溫度。DS18B20作為單總線芯片,進(jìn)行信息交換時有嚴(yán)格的讀/寫時序要求。讀取溫度子程序流程如圖5所示。首先通過參數(shù)傳遞將通道號傳給讀取溫度子程序,接著對DS18B20進(jìn)行初始化,然后直接執(zhí)行跳過ROM命令(CCH),即不讀取64位ROM編碼而直接向DS18B20發(fā)出功能命令,節(jié)約了時間。之后,再向DS18B20發(fā)送溫度轉(zhuǎn)換命令(44H),DS18B20啟動溫度采樣與A/D轉(zhuǎn)換,并將轉(zhuǎn)換數(shù)據(jù)存儲在暫存器中。
          然后再次初始化DS18B20,并在再一次跳過ROM命令后,執(zhí)行單片機(jī)讀暫存器命令(BEH),根據(jù)傳遞參數(shù)確定的通道號,可將通道號對應(yīng)的DS18B20高速暫存存儲器的9個字節(jié)數(shù)據(jù)讀入單片機(jī)中,其中第0,1字節(jié)分別是溫度值低位(LS byte)和高位(MS byte),第2,3字節(jié)分別是高溫限值(TH)和低溫限值(TL),從而完成某通道DS18B20的溫度采集。

          熱電偶相關(guān)文章:熱電偶原理


          評論


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