DS18B20温度传感器原理及使用教程

1.芯片简介

       DS18B20数字温度传感器提供9-Bit到12-Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能。DS18B20采用的1-Wire通信即仅采用一个数据线(以及地)与微控制器进行通信。该传感器的温度检测范围为-55℃至+125℃,并且在温度范围超过-10℃至85℃之外时还具有+-0.5℃的精度。此外,DS18B20可以直接由数据线供电而不需要外部电源供电。

主要特点如下

  • 温度可测量范围为:-55℃至+125℃(-67℉至+257℉)。

  • 温度范围超过-10℃至85℃之外时具有+-0.5℃的精度。

  • 内部温度采集精度可以由用户自定义为9-Bits至12-Bits

  • 温度转换时间在转换精度为12-Bits时达到最大值750ms。

DQ引脚为开漏模式,需外置上拉电阻

2.DS18B20引脚定义-以TO-92封装为例

(1)Pin 1:GND 地线

(2)Pin 2:数据输入/输出。1-Wire漏极开路接口引脚。当采用“寄生电源”供电方式时,同时向设备提供电源。所以

在使用时,一般需要加一个5-10k的上拉电阻。

(3)VDD引脚。VDD必须连接到地当采用“寄生电源”供电时。

3.DS18B20驱动程序

(1)DS18B20.h

#ifndef _DS18B20_H_
#define _DS18B20_H_
/*****************************************/
extern void Reset();
extern void WriteChar(uchar dat);
extern uint ReadChar();
extern uint ReadTemperature();
/*****************************************/
#endif

(2)DS18B20.c

#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char

uint tempL,tempH;

sbit DQ=P2^0;//数据端

/**********************************************
   DS18B20专用延时子函数
**********************************************/
void DDelay(uint t) 
{ 
  uint n;
  n=0; 
  while(n<t) 
  {
    n++;
  } 
}
/********************************************************* 
  DS18B20复位函数
**********************************************************/
void Reset() 
{   
  DQ=1;
  DDelay(8); 
  DQ=0; 
  DDelay(85); 
  DQ=1;
  DDelay(14);

} 
/*********************************************************** 
  DS18B20写一个字节函数
*********************************************************/
void WriteChar(uchar dat) 
{ 
    uint i; 
    for(i=8;i>0;i--) 
    { 
    DQ=0;   
    DQ=dat&0x01;
    DDelay(5);
    DQ=1;
    dat>>=1;
     } 
   DDelay(4);
} 
/**************************************************** 
   DS18B20读一个字节函数
****************************************************/
uint ReadChar() 
{       
  uchar i,dat=0;
  for (i=8;i>0;i--) 
  { 
  
    DQ=0;  
    dat>>=1;
    DQ=1; 
    if(DQ)
      dat=dat|0x80;
      DDelay(4);
     } 
return(dat);
} 
/*************************************************** 
  DS18B20读温度程序
****************************************************/ 
uint ReadTemperature() 
{ 
    uint temperature;
  Reset(); 
  WriteChar(0xcc); 
  WriteChar(0x44); 
  DDelay(125); 
  Reset();
  WriteChar(0xcc);
  WriteChar(0xbe);
  tempL=ReadChar(); 
  tempH=ReadChar();
  temperature=((tempH*256)+tempL)*0.0625*10;   
  DDelay(200);
  return(temperature); //返回的是0123格式
}

如需资料可在该账号下载频道下载,或关注公众号-单片机实例设计,发送“DS18B20”获取。

  • 2
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值