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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 數(shù)字溫度傳感器DS18B20的原理與應(yīng)用

          數(shù)字溫度傳感器DS18B20的原理與應(yīng)用

          作者: 時間:2010-04-02 來源:網(wǎng)絡(luò) 收藏

          4 與單片機(jī)的典型接口設(shè)計

          圖4以MCS-51系列單片機(jī)為例,畫出了與微處理器的典型連接。圖4(a)中采用寄生電源方式,其VDD和GND端均接地,圖4(b)中DS18B20采用外接電源方式,其VDD端用3V~5.5V電源供電。


          a)寄生電源工作方式
          (b)外接電源工作方式


          圖4DS18B20與微處理器的典型連接圖

          假設(shè)單片機(jī)系統(tǒng)所用的晶振頻率為12MHz,根據(jù)DS18B20的初始化時序、寫時序和讀時序,分別編寫了3個子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始。

          DATEQUP1.0
          ……
          INIT:CLREA
          INI10:SETBDAT
          MOVR2,#200
          INI11:CLRDAT
          DJNZR2,INI11;主機(jī)發(fā)復(fù)位脈沖持續(xù)3μs×200=600μs
          SETBDAT;主機(jī)釋放總線,口線改為輸入
          MOVR2,#30
          IN12:DJNZR2,INI12;DS18B20等待2μs×30=60μs
          CLRC
          ORLC,DAT;DS18B20數(shù)據(jù)線變低(存在脈沖)嗎?
          JCINI10;DS18B20未準(zhǔn)備好,重新初始化
          MOVR6,#80
          INI13:ORLC,DAT
          JCINI14;DS18B20數(shù)據(jù)線變高,初始化成功
          DJNZR6,INI13;數(shù)據(jù)線低電平可持續(xù)3μs×80=240μs
          SJMPINI10;初始化失敗,重來
          INI14:MOVR2,#240
          IN15:DJNZR2,INI15;DS18B20應(yīng)答最少2μs×240=480μs
          RET
          ;------------------------
          WRITE:CLREA
          MOVR3,#8;循環(huán)8次,寫一個字節(jié)
          WR11:SETBDAT
          MOVR4,#8
          RRCA;寫入位從A中移到CY
          CLRDAT
          WR12:DJNZR4,WR12
          ;等待16μs
          MOVDAT,C;命令字按位依次送給DS18B20
          MOVR4,#20
          WR13:DJNZR4,WR13
          ;保證寫過程持續(xù)60μs
          DJNZR3,WR11
          ;未送完一個字節(jié)繼續(xù)
          SETBDAT
          RET



          評論


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