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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)的DS18B20 C語(yǔ)言程序

          AVR單片機(jī)的DS18B20 C語(yǔ)言程序

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

          /
          uchar resetDS18B20(void)
          {
          uchar errTime=0;
          RLS_DS18B20; //釋放總線
          _NOP();
          HLD_DS18B20; //Maga16控制總線
          CLR_DS18B20; //強(qiáng)制拉低
          delayUs(255); //209.42us
          delayUs(255); //209.42us
          delayUs(255); //83.28us
          //以上的三個(gè)延時(shí)大于480us
          RLS_DS18B20; //釋放總線,總線自動(dòng)上拉
          _NOP();
          while(STU_DS18B20)
          {
          delayUs(4); //5.15us
          errTime++;
          if(errTime>20)
          return(0x00); //如果等待大于約 5.15us*20就返回0x00,報(bào)告復(fù)位失?。▽?shí)際上只要等待15-60us)
          }
          errTime=0;
          while(!(STU_DS18B20))
          {
          delayUs(4); //5.15us
          errTime++;
          if(errTime>50)
          return(0x00); //如果等帶大于約 5.15us*50就返回0x00,報(bào)告復(fù)位失?。▽?shí)際上只要等待60-240us)
          }
          return(0xff);
          }
          /
          uchar readByteDS18B20(void)
          {
          uchar i;
          uchar retVal=0;
          RLS_DS18B20; //釋放總線
          for(i=8;i>0;i--)
          {
          retVal>>=1;
          HLD_DS18B20; //Maga16控制總線
          CLR_DS18B20; //強(qiáng)制拉低
          NOP();
          NOP();
          NOP();
          NOP();
          NOP();
          NOP();
          NOP();
          NOP(); //延時(shí)大于1us
          RLS_DS18B20; //釋放總線,DS18B20會(huì)將總線強(qiáng)制拉高
          NOP();
          NOP();
          NOP();
          if(STU_DS18B20)
          retVal|=0x80;
          delayUs(16); //14.92us
          delayUs(16); //14.92us
          RLS_DS18B20; //釋放總線
          delayUs(35); //30.38us
          }
          delayUs(1); //2.71us(大于1us就行了)
          return(retVal);
          }
          /
          void writeByteDS18B20(uchar wb)
          {
          uchar i;
          uchar temp;
          RLS_DS18B20; //釋放總線
          for(i=0;i<8;i++)
          {
          HLD_DS18B20; //Maga16控制總線
          CLR_DS18B20; //強(qiáng)制拉低
          delayUs(16); //14.92us
          temp=wb>>i;
          temp&=0x01;
          if(temp)
          RLS_DS18B20; //釋放總線
          else
          CLR_DS18B20; //強(qiáng)制拉低
          delayUs(16); //14.92us
          delayUs(35); //30.38us
          RLS_DS18B20; //釋放總線
          delayUs(1); //2.71us(大于1us就行了)
          }
          }
          /
          unsigned int readTempDS18B20(void)
          {
          uchar tempL,tempH;
          uint x;
          resetDS18B20();
          writeByteDS18B20(0xcc); //跳過(guò)ROM
          writeByteDS18B20(0x44); //啟動(dòng)溫度轉(zhuǎn)換
          delayUs(1);
          resetDS18B20();
          writeByteDS18B20(0xcc); //跳過(guò)ROM
          writeByteDS18B20(0xbe); //讀數(shù)據(jù)
          tempL=readByteDS18B20();
          tempH=readByteDS18B20();
          x=(tempH<<8)|tempL;
          return(x);
          }

          上一頁(yè) 1 2 下一頁(yè)

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