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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)·DS18B20溫度傳感器

          單片機(jī)·DS18B20溫度傳感器

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          void DB18B20_reset(void)
          {
          bit flag = 1 ; //程序有改動(dòng)
          while(flag)
          {
          DQ = 1 ;
          nops() ;
          DQ = 0 ;
          delay(50) ;
          DQ = 1 ;
          delay(5) ;
          flag = DQ ;
          delay(20) ;
          }
          DQ = 1 ;
          delay(20) ;
          }
          void write_byte(uint8 byte)
          {
          uint8 i ;
          for(i=0; i<8; i++)
          {
          DQ = 1 ;
          _nop_() ;
          DQ = 0 ;
          nops() ;
          DQ = byte&0x01 ;
          delay(6) ;
          byte>>=1 ;
          }
          DQ = 1 ;
          _nop_() ; //短暫延時(shí)應(yīng)該即可。
          }
          uint8 read_byte(void)
          {
          uint8 i, dat =0 ;
          for(i=0; i<8; i++)
          {
          DQ = 1 ;
          _nop_() ;
          DQ = 0 ;
          nops() ;
          DQ = 1 ;
          nops() ;
          dat>>=1 ;
          if(DQ)
          dat |= 0x80 ;
          delay(6) ;
          }
          DQ = 1 ;
          _nop_() ;
          return dat ;
          }
          void start_temp_sensor(void)
          {
          DB18B20_reset() ;
          write_byte(0xcc) ;
          write_byte(0x44) ;
          }
          int16 read_temp(void)
          {
          uint8 tempdata[2] ;
          int16 temp ; //數(shù)據(jù)的符號(hào)位看輸出是否需要符號(hào)
          DB18B20_reset() ;
          write_byte(0xcc) ;
          write_byte(0xBE) ;
          tempdata[0] = read_byte() ;
          tempdata[1] = read_byte() ;
          temp = tempdata[1] ;
          temp<<=8 ;
          temp |= tempdata[0] ; //轉(zhuǎn)換為十進(jìn)制的代碼 不理解,求大神幫助
          temp>>=4 ;
          return temp ;
          }
          void wait(void)
          {
          P0 = 0xFF;
          do
          {
          RS = 0;
          RW = 1;
          EN = 0;
          EN = 1;
          }while (BUSY == 1);
          EN = 0;
          }
          void w_dat(uint8 dat)
          {
          wait();
          EN = 0;
          P0 = dat;
          RS = 1;
          RW = 0;
          EN = 1;
          EN = 0;
          }
          void w_cmd(uint8 cmd)
          {
          wait();
          EN = 0;
          P0 = cmd;
          RS = 0;
          RW = 0;
          EN = 1;
          EN = 0;
          }
          void w_hexnum(uint16 dat)
          {
          w_dat(dat/10 + 0) ;
          w_dat(dat + 0) ;
          w_dat(0xDF) ;
          w_dat(C) ;
          }
          void Init_LCD1602(void)
          {
          w_cmd(0x38); // 16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
          w_cmd(0x0C); // 顯示器開、光標(biāo)開、光標(biāo)允許閃爍
          w_cmd(0x06); // 文字不動(dòng),光標(biāo)自動(dòng)右移
          w_cmd(0x01); // 清屏
          }
          void main(void)
          {
          int16 ans ;
          Init_LCD1602() ;
          while(1)
          {
          start_temp_sensor() ; //這里為什么需要延時(shí) ;
          ans = read_temp() ;
          w_cmd(0x80) ;
          w_hexnum(ans) ;
          }
          }

          上一頁 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); })();