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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機實驗板DS18B20測溫程序

          51單片機實驗板DS18B20測溫程序

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

          ;-------------------------------------------------
          ;寫的子程序(有具體的時序要求)
          WRITE_1820:MOV R2,#8 ;一共8位數(shù)據(jù)
          CLR C
          WR1:CLR DQ
          MOV R3,#6
          DJNZ R3,$
          RRC A
          MOV DQ,C
          MOV R3,#23
          DJNZ R3,$
          SETB DQ
          NOP
          DJNZ R2,WR1
          SETB DQ
          RET

          ;-------------------------------------------------
          ;讀的程序,從中讀出兩個字節(jié)的溫度數(shù)據(jù)
          READ_1820:MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出
          MOV R1,#DI_8BIT ;低位存入DI_8BIT,高位存入GAO_8BIT
          RE0:MOV R2,#8 ;數(shù)據(jù)一共有8位
          RE1:CLR C
          SETB DQ
          NOP
          NOP
          CLR DQ
          NOP
          NOP
          NOP
          SETB DQ
          MOV R3,#9
          RE2:DJNZ R3,RE2
          MOV C,DQ
          MOV R3,#23
          RE3:DJNZ R3,RE3
          RRC A
          DJNZ R2,RE1
          MOV @R1,A
          INC R1
          DJNZ R4,RE0
          /* DEC R1
          MOV A,GAO_8BIT
          XCHD A,@R1
          XCH A,@R1
          MOV GAO_8BIT,A
          MOV A,@R1
          SWAP A
          MOV @R1,A */
          RET
          ;-------------------------------------------------
          ;讀出后轉(zhuǎn)換的溫度值
          ZHUANHUAN:
          //SETB DQ
          LCALL INIT_1820 ;先復(fù)位DS18B20
          JB F0,ZH1
          RET ;判斷DS1820是否存在?若DS18B20不存在則返回
          ZH1:MOV A,#0CCH ;跳過ROM匹配
          LCALL WRITE_1820
          MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令
          LCALL WRITE_1820
          LCALL DISPLAY ;等待AD轉(zhuǎn)換結(jié)束,12位的話750微秒
          LCALL INIT_1820 ;準(zhǔn)備讀溫度前先復(fù)位
          MOV A,#0CCH ;跳過ROM匹配
          LCALL WRITE_1820
          MOV A,#0BEH ;發(fā)出讀溫度命令
          LCALL WRITE_1820
          LCALL READ_1820
          RET
          ;-------------------------------------------------
          ;數(shù)據(jù)處理子程序
          CHULI:
          MOV P0,GAO_8BIT
          MOV P2,DI_8BIT
          MOV A,GAO_8BIT
          JB ACC.7,FU
          MOV A,DI_8BIT
          MOV B,#16
          DIV AB

          MOV 35H,A ;將DI_8BIT的高四位右移四位,存入35H中(溫度值)
          MOV A,B ;將TEMPER_L的低四位X10/16得小數(shù)后一位數(shù).
          MOV B,#10
          MUL AB
          MOV B,#16
          DIV AB
          MOV 36H,A ;將小數(shù)后一位數(shù).存入36H中
          MOV A,GAO_8BIT ;TEMPER_H中存放高8位數(shù),權(quán)重16
          MOV B,#16
          MUL AB
          ADD A,35H ;35H中存入溫度值的整數(shù)部分
          MOV B,#10
          DIV AB
          MOV GE_BIT,B ;個位存入30H中
          MOV B,#10 ;
          DIV AB ;
          MOV SHI_BIT,B ;十位存入31H中
          MOV B,#10 ;
          DIV AB ;
          MOV BAI_BIT,B ;百位存入32H中
          MOV A,GAO_8BIT
          MOV 37H,#10H ;
          JB ACC.7,EXIT
          MOV 37H,#00H
          SJMP EXIT
          FU:
          MOV A,DI_8BIT
          CPL A
          ADD A,#1
          MOV B,#16
          DIV AB
          MOV 35H,A ;將DI_8BIT的高四位右移四位,存入35H中(溫度值)
          MOV A,B ;將TEMPER_L的低四位X10/16得小數(shù)后一位數(shù).
          MOV B,#10
          MUL AB
          MOV B,#16
          DIV AB
          // MOV 36H,A ;將小數(shù)后一位數(shù).存入36H中
          // MOV A,GAO_8BIT ;TEMPER_H中存放高8位數(shù),權(quán)重16
          MOV B,#16
          MUL AB
          ADD A,35H ;35H中存入溫度值的整數(shù)部分
          MOV B,#10
          DIV AB
          MOV GE_BIT,B ;個位存入30H中
          MOV B,#10 ;
          DIV AB ;
          MOV SHI_BIT,B ;十位存入31H中
          MOV B,#10 ;
          DIV AB ;
          MOV BAI_BIT,B ;百位存入32H中
          MOV A,GAO_8BIT
          MOV 37H,#10H ;
          JB ACC.7,EXIT
          MOV 37H,#00H
          SJMP EXIT
          EXIT:RET

          51單片機相關(guān)文章:51單片機教程




          關(guān)鍵詞: 51單片機 DS18B20 測溫程序

          評論


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