色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STC12C5A60S2控制溫度傳感器DS18B20 c程序

          STC12C5A60S2控制溫度傳感器DS18B20 c程序

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

          控制 c程序工作頻率:12.000MHz
          #include"REG51.H"
          #include"INTRINS.H" typedefunsignedcharBYTE; sbitDQ=P3^3;//的數(shù)據(jù)口位P3.3


          BYTETPH;//存放溫度值的高字節(jié)
          BYTETPL;//存放溫度值的低字節(jié) voidDelayXus(BYTEn);
          void_Reset();
          voidDS18B20_WriteByte(BYTEdat);
          BYTEDS18B20_ReadByte(); voidmain()
          {
          DS18B20_Reset();//設(shè)備復(fù)位
          DS18B20_WriteByte(0xCC);//跳過ROM命令
          DS18B20_WriteByte(0x44);//開始轉(zhuǎn)換命令
          while(!DQ);//等待轉(zhuǎn)換完成 DS18B20_Reset();//設(shè)備復(fù)位
          DS18B20_WriteByte(0xCC);//跳過ROM命令
          DS18B20_WriteByte(0xBE);//讀暫存存儲器命令
          TPL=DS18B20_ReadByte();//讀溫度低字節(jié)
          TPH=DS18B20_ReadByte();//讀溫度高字節(jié) while(1);
          } /**************************************
          延時X微秒(@12M)
          不同的工作環(huán)境,需要調(diào)整此函數(shù)
          此延時函數(shù)是使用1T的指令周期進(jìn)行計算,與傳統(tǒng)的12T的MCU不同
          **************************************/
          voidDelayXus(BYTEn)
          {
          while(n--)
          {
          _nop_();
          _nop_();
          }
          } /**************************************
          復(fù)位DS18B20,并檢測設(shè)備是否存在
          **************************************/
          voidDS18B20_Reset()
          {
          CY=1;
          while(CY)
          {
          DQ=0;//送出低電平復(fù)位信號
          DelayXus(240);//延時至少480us
          DelayXus(240);
          DQ=1;//釋放數(shù)據(jù)線
          DelayXus(60);//等待60us
          CY=DQ;//檢測存在脈沖
          DelayXus(240);//等待設(shè)備釋放數(shù)據(jù)線
          DelayXus(180);
          }
          } /**************************************
          從DS18B20讀1字節(jié)數(shù)據(jù)
          **************************************/
          BYTEDS18B20_ReadByte()
          {
          BYTEi;
          BYTEdat=0; for(i=0;i8;i++)//8位計數(shù)器
          {
          dat>>=1;
          DQ=0;//開始時間片
          DelayXus(1);//延時等待
          DQ=1;//準(zhǔn)備接收
          DelayXus(1);//接收延時
          if(DQ)dat|=0x80;//讀取數(shù)據(jù)
          DelayXus(60);//等待時間片結(jié)束
          } returndat;
          } /**************************************
          向DS18B20寫1字節(jié)數(shù)據(jù)
          **************************************/
          voidDS18B20_WriteByte(BYTEdat)
          {
          chari; for(i=0;i8;i++)//8位計數(shù)器
          {
          DQ=0;//開始時間片
          DelayXus(1);//延時等待
          dat>>=1;//送出數(shù)據(jù)
          DQ=CY;
          DelayXus(60);//等待時間片結(jié)束
          DQ=1;//恢復(fù)數(shù)據(jù)線
          DelayXus(1);//恢復(fù)延時
          }
          }

          傳感器相關(guān)文章:傳感器工作原理


          風(fēng)速傳感器相關(guān)文章:風(fēng)速傳感器原理
          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理


          關(guān)鍵詞: STC12C5A60S2 溫度傳感器 DS18B20

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉