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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 1-Wire器件與8051系列單片機(jī)的軟件接口

          1-Wire器件與8051系列單片機(jī)的軟件接口

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

          的8位存儲(chǔ)單元TEMP看成一個(gè)8位生成器,按圖4的結(jié)構(gòu),很容易得到計(jì)算一個(gè)字節(jié)的8位CRC校驗(yàn)的匯編子函數(shù),輸入字節(jié)置于讀寫累加器A中,計(jì)算的累計(jì)CRC校驗(yàn)結(jié)果置于暫存單元TEMP中。設(shè)TEMP的初值為00H,8次循環(huán)調(diào)用CRC函數(shù),即可得64位ROM號(hào)的CRC校驗(yàn)結(jié)果,讀數(shù)正確時(shí),前7個(gè)字節(jié)(Family Code+Serial Code)的CRC校驗(yàn)計(jì)算結(jié)果TEMP應(yīng)與ROM號(hào)最后一個(gè)字節(jié)(8BIT CRC)的值相同,最后的校驗(yàn)值TEMP應(yīng)為00H。
          上述的總線初始化函數(shù)START、字節(jié)讀寫函數(shù)RDBYTE、WRBYTE和CRC校驗(yàn)函數(shù)就構(gòu)成了系列器件通信的軟件平臺(tái),在設(shè)計(jì)時(shí)只需按規(guī)程調(diào)用這4個(gè)函數(shù),就可輕松構(gòu)建起一個(gè)總線擴(kuò)展的應(yīng)用系統(tǒng)。
          4 軟件接口應(yīng)用
          數(shù)片DS1822按圖1連接到AT89C51的P1.0腳,按圖3的總線通信規(guī)程,調(diào)用上述軟件接口,即可構(gòu)成一個(gè)簡單實(shí)用的溫度測控系統(tǒng)DS1822是一種精度可調(diào)的(9至12比特)的1-Wire數(shù)字溫度傳感器,其RAM結(jié)構(gòu)如圖6所示,最低兩字節(jié)只讀,用于保存每次采集溫度值;Th寄存器和T1寄存器分別用于設(shè)定溫度傳感器告警的最高和最低溫度;設(shè)置寄存器用于設(shè)定溫度傳感器的采和最低溫度;設(shè)置寄存器用于設(shè)定溫度傳感器的采樣精度;對應(yīng)的EEPROM用于掉電時(shí)保存用戶設(shè)置。
          DS1822的指令字及其功能如表1所示。
          系統(tǒng)從主控器片內(nèi)RAM30H至37H單元中讀取事先存儲(chǔ)的ROM號(hào),從總線上選擇該器件,啟動(dòng)溫度變換,再讀取溫度于70H、71H中的程序如下:

          5 結(jié)束語
          1-Wire總線連線簡捷,1-Wire器件種類多樣,功能豐富,必將得到日益廣泛的應(yīng)用。本文詳細(xì)闡述了目前普遍使用的單片機(jī)與1-Wire總線的軟件接口,為單片機(jī)應(yīng)用系統(tǒng)的串行擴(kuò)展提供了一種行之有效的參考方案,它還可以方便地移植到其它系統(tǒng)中。
          參考文獻(xiàn)
          1 何立民.按平臺(tái)模式設(shè)計(jì)的虛擬I2C總線軟件包VIIC.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001(2)
          2 丁元杰.單片微機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,1999
          上一頁 1 2 下一頁

          關(guān)鍵詞: 1-Wire 8051 單片機(jī)

          評論


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