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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 精確把握DS18B20讀寫時(shí)序延長連接距離

          精確把握DS18B20讀寫時(shí)序延長連接距離

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





          換位理解DSl8B20傳感器對(duì)讀寫時(shí)序的要求
          圖2是對(duì)DS18B20傳感器讀寫時(shí)序在主機(jī)處的波形圖,如果是在DS18B20處的話,其波形圖應(yīng)如圖5所示。考慮實(shí)際長短數(shù)據(jù)線的影響,對(duì)讀寫時(shí)序的要求理解為:對(duì)DSl8B20 寫數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。當(dāng)主機(jī)把I/O數(shù)據(jù)線在7μs時(shí)間內(nèi)從高邏輯電平拉至低邏輯電平時(shí),維持時(shí)間最少1μs就產(chǎn)生寫時(shí)間片。如寫入0,則應(yīng)維持低電平45~60μs以上,如寫入1,應(yīng)在第8μs后釋放數(shù)據(jù)線,在7μs 時(shí)間內(nèi)拉到為邏輯高電壓, 并維持45~60μs以上。寫時(shí)間片必須有最短為60μs的持續(xù)期,在各寫周期之間必須有最短為1μs的恢復(fù)時(shí)間。從DS18B20 讀數(shù)據(jù)時(shí),主機(jī)產(chǎn)生讀時(shí)間片。主機(jī)在7μs時(shí)間內(nèi)把數(shù)據(jù)線從邏輯高電平拉至低電平,產(chǎn)生讀時(shí)間片。數(shù)據(jù)線必須保持在邏輯低電平至少1μs;來自DS18B20的輸出數(shù)據(jù)在讀時(shí)間片下降沿之后15μs有效。因此,在產(chǎn)生讀時(shí)間片8μs后主機(jī)必應(yīng)把I/O 數(shù)據(jù)線釋放,由上拉電阻將數(shù)據(jù)線拉回至邏輯高電平,主機(jī)在15μs末期對(duì)數(shù)據(jù)線采樣,如果線為高電平,就讀為1,如果線為低電平,便讀為0。讀時(shí)間片的最短持續(xù)期限為60μs,各個(gè)讀時(shí)間片之間必須有最短為1μs的恢復(fù)時(shí)間。在考慮到線纜對(duì)波形的延遲和DS18B20傳感器發(fā)送數(shù)據(jù)表現(xiàn)的典型時(shí)間,在實(shí)際操作中,建議將主機(jī)對(duì)數(shù)據(jù)線的采樣滯后5~9μs,可提高正確讀取DS18B20的可靠性。



          對(duì)DS18B20的讀寫程序探討
          經(jīng)過上面的分析和了解后,參見圖1,對(duì)接在P1.0口上的DS18B20傳感器讀寫子程序進(jìn)行修改,分別見“寫子程序”和“讀子程序”。將修改后的對(duì)DS18B20傳感器讀寫子程序移入主程序并寫入89C51單片機(jī),對(duì)用RVV3×0.5mm2型線纜為傳感器連線,用1~50m傳感器連線,在高、低溫環(huán)境條件下進(jìn)行了試驗(yàn)驗(yàn)證,溫控儀工作正常,穩(wěn)定可靠。題圖為我公司溫控儀的照片。


          上一頁 1 2 下一頁

          評(píng)論


          技術(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); })();