久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5854|回復: 2
打印 上一主題 下一主題
收起左側

詳解溫度傳感器DS18B20編程與使用

[復制鏈接]
跳轉到指定樓層
樓主
DS18B20是由DALLAS半導體公司推出的一種的“一線總線”接口的溫度傳感器, 與傳統的熱敏電阻等測溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡單的數字化溫度傳感器。

1.測量溫度范圍:-55~+125℃
2.精度:±0.5℃
3.數據傳輸:“一線總線”的數字方式傳輸



圖1 硬件連接圖

      DS18B20共有6種信號類型:復位脈沖、應答脈沖、寫0、寫1、讀0和讀1


1.復位操作:
引腳拉低——延時480-960us——引腳高——延時15-60us
圖2 紅框為復位操作時序

void DS18B20_Rst(void)   
{               
         DS18B20_IO_OUT();     
   DS18B20_DQ_OUT=0;  
   delay_us(750);   
   DS18B20_DQ_OUT=1;   
         delay_us(15);     
}

2.應答操作
將引腳設置為輸入模式——判斷引腳低電平時間是否大于60us、小于240us——返回應答結果
圖3 紅框為應答操作時序

u8 DS18B20_Check(void)           
{  
         u8retry=0;
         DS18B20_IO_IN();   //SET PG11 INPUT   
   while (DS18B20_DQ_IN&&retry<200)
         {
                   retry++;
                   delay_us(1);
         };        
         if(retry>=200)return1;
         elseretry=0;
   while (!DS18B20_DQ_IN&&retry<240)
         {
                   retry++;
                   delay_us(1);
         };
         if(retry>=240)return1;      
         return0;
}

3. 讀0、讀1操作
將引腳設置為輸出模式——引腳拉低——延時2us——引腳拉高——設置為輸入模式——延時2us——讀取引腳狀態——返回讀取結果
圖4 讀操作

u8 DS18B20_Read_Bit(void)   
{
   u8 data;
         DS18B20_IO_OUT();        //SET PG11 OUTPUT
   DS18B20_DQ_OUT=0;
         delay_us(2);
   DS18B20_DQ_OUT=1;
         DS18B20_IO_IN();   //SET PG11 INPUT
         delay_us(12);
         if(DS18B20_DQ_IN)data=1;
   else data=0;      
   delay_us(50);         
   return data;
}

4.寫1操作
設置引腳為輸出模式——引腳拉低——延時2us——引腳拉高——延時大于60us


圖5 紅框為寫操作

void DS18B20_Write_Zero(void)
{
         DS18B20_IO_OUT();        //SET PG11 OUTPUT;
DS18B20_DQ_OUT=0;   
   delay_us(2);                           
   DS18B20_DQ_OUT=1;
   delay_us(60);
}

5.寫0操作
設置引腳為輸出模式——引腳拉低——延時60-120us——引腳拉高——延時2us
圖6  紅框為寫1操作

void DS18B20_Write_One(void)
{
         DS18B20_IO_OUT();        //SET PG11 OUTPUT;
DS18B20_DQ_OUT=0;   
   delay_us(60);                           
   DS18B20_DQ_OUT=1;
   delay_us(2);
}

基本的操作完成后,再寫4個功能函數

6.讀取一個字節
u8 DS18B20_Read_Byte(void)   
{      
   u8 i,j,dat;
   dat=0;
         for(i=1;i<=8;i++)
         {
       j=DS18B20_Read_Bit();
       dat=(j<<7)|(dat>>1);
    }                                                         
   return dat;
}      

7.寫一個字節
void DS18B20_Write_Byte(u8 dat)   
{            
   u8 j;
   u8 testb;
         DS18B20_IO_OUT();        //SET PG11 OUTPUT;
   for (j=1;j<=8;j++)
         {
       testb=dat&0x01;
       dat=dat>>1;
       if (testb)
                  DS18B20_Write_One();
       else
                DS18B20_Write_Zero();
    }
}

8.開始讀取數據
void DS18B20_Start(void)
{                                                                  
   DS18B20_Rst();         
         DS18B20_Check();   
   DS18B20_Write_Byte(0xcc);   // skiprom
   DS18B20_Write_Byte(0x44);  //convert
}

9.初始化DS18B20
u8 DS18B20_Init(void)
{
        GPIO_Init();     //此引腳需根據相應的單片機進行配置
         DS18B20_Rst();
         returnDS18B20_Check();
}

10.獲取溫度值

圖7 程序流程圖
short DS18B20_Get_Temp(void)
{
   u8 temp;
   u8 TL,TH;
   short tem;
   DS18B20_Start ();           //開始轉換
   DS18B20_Rst();
   DS18B20_Check();   
   DS18B20_Write_Byte(0xcc);   //skip rom
   DS18B20_Write_Byte(0xbe);   //convert      
   TL=DS18B20_Read_Byte();     //LSB  
   TH=DS18B20_Read_Byte();     //MSB  
   if(TH>7)
    {
       TH=~TH;
       TL=~TL;
       temp=0;//溫度為負
   }else temp=1;//溫度為正                 
   tem=TH; //獲得高八位
   tem<<=8;   
    tem+=TL;//獲得底八位
   tem=(double)tem*0.625;//轉換   
         if(temp)returntem; //返回溫度值
         elsereturn -tem;   
}



參考文獻:
STM32F103開發指南-標準庫版本_V1.1
DS18B20數據手冊

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:342081 發表于 2019-4-6 16:31 | 只看該作者
好貼子
回復

使用道具 舉報

板凳
ID:410119 發表于 2019-4-10 18:45 | 只看該作者
不錯,感謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久夜夜 | 欧美国产视频 | 日韩免费1区二区电影 | www日韩欧美 | 精品国产99 | 午夜羞羞 | 日韩精品视频在线 | 欧美美女爱爱 | 亚洲3级 | 在线播放一区二区三区 | 国产一区二区三区视频 | 国产精品亚洲一区 | 欧美日韩一本 | 国产高清视频一区二区 | 涩爱av一区二区三区 | 色综合久 | 久久久久国产精品一区 | 日韩在线欧美 | 超碰520| av中文字幕在线播放 | 久久综合av| 日韩欧美精品在线播放 | 成人精品在线观看 | 男女网站在线观看 | 欧美精品成人一区二区三区四区 | 中文在线日韩 | 天天天堂 | 日韩视频一区二区 | 福利片在线 | 可以在线观看av的网站 | 久久在线看 | 亚洲国产精品一区二区第一页 | 国产精品三级久久久久久电影 | 亚洲国产精品一区二区三区 | 四虎影 | 超碰97人人人人人蜜桃 | 99精品久久久国产一区二区三 | 日干夜干 | 国产日韩欧美 | 欧美一区视频在线 | 欧美综合一区 |