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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5991|回復: 2
收起左側

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

[復制鏈接]
ID:483213 發表于 2019-3-24 12:13 | 顯示全部樓層 |閱讀模式
DS18B20是由DALLAS半導體公司推出的一種的“一線總線”接口的溫度傳感器, 與傳統的熱敏電阻等測溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡單的數字化溫度傳感器。

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


1.png

圖1 硬件連接圖

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


1.復位操作:
引腳拉低——延時480-960us——引腳高——延時15-60us
2.png
圖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.png
圖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.jpg
圖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.png
圖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.png
圖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.png

圖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數據手冊

回復

使用道具 舉報

ID:342081 發表于 2019-4-6 16:31 | 顯示全部樓層
好貼子
回復

使用道具 舉報

ID:410119 發表于 2019-4-10 18:45 | 顯示全部樓層
不錯,感謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠综合网 | se婷婷| 日韩在线一区二区三区 | 中国大陆高清aⅴ毛片 | 日日艹夜夜艹 | 婷婷综合| 国产成人精品久久 | 欧美人人| 天天操操 | 日本福利片 | 欧美精品一区二区在线观看 | 国产精品成人在线观看 | 黄色精品视频网站 | 国产日韩欧美精品 | 成人av观看 | 免费的av| 99精品国自产在线 | 在线观看亚洲专区 | 色性av| 麻豆久久 | 一区二区成人在线 | 精品成人在线 | 久久综合久久综合久久 | 久草成人 | 中文字幕一区二区三区精彩视频 | 日韩在线免费视频 | 午夜精品一区 | 国产一区二区精品在线观看 | 国产精品美女久久久久aⅴ国产馆 | 国产高清免费 | 中文一区二区 | 欧美亚洲国产精品 | 91精品国产综合久久婷婷香蕉 | 亚洲在线一区 | 婷婷色成人 | 国产一伦一伦一伦 | 日本在线小视频 | 91精品国产91久久久久青草 | 欧美一二区 | 亚洲国产中文字幕 | 欧美日韩精品一区二区 |