欢迎光临~啄木鸟电子科技

技术交流

软件:温度 传感器 DS18B20 基础 程序

/*********************************************************
函数:DS18B20_ReSet(void)
输入:无;
输出:无;
说明:复位DS18B20(初始化)
*********************************************************/
void DS18B20_ReSet(void)
{
 uchar i;
 DQ=0;    // 总线 拉低; (单片机 主动 给出的信号 ;)
 i=240;    // 保持 480us; 
 while(--i);
 DQ=1;    // 总线 释放,拉高,上升沿;
 i=30;
 while(--i);   // 保持 60us;
 while(~DQ);   // 等待 传感器 释放总线,把IO 拉高;( 温感 给出的信号 ;)
 i=4;
 while(--i);   // 保持 8-10us;
}

/*********************************************************
函数:DS18B20_WriteByte(uchar dat)
输入:有;
输出:无;
说明:向DS18B20写入一个字节
*********************************************************/
void DS18B20_WriteByte(uchar dat)
{
 uchar j;
 uchar btmp;
 
 for(j=0;j<8;j++)
 {
  btmp=0x01;    // 0000 0001 ; 
  btmp=btmp<<j;
  btmp=btmp&dat;   // 用 1 & 0/1 相与;
  
  if(btmp>0)  // 写1
  {
   DQ=0;
   Delay15us();
   DQ=1;
   Delay15us();
   Delay15us();
   Delay15us();
   Delay15us();
  }
  else   // 写0
  {
   DQ=0;
   Delay15us();
   Delay15us();
   Delay15us();
   Delay15us();
   DQ=1;
   Delay15us();
  }
 }
}

/*********************************************************
函数:DS18B20_ReadTemp(void)
输入:无;
输出:有;
说明:读取温度值
*********************************************************/
int DS18B20_ReadTemp(void)
{
 uchar j;
 int b,temp=0; 

 DS18B20_ReSet();     // 产生复位脉
 DS18B20_WriteByte(0xcc);   // 忽略ROM指令(只接 1 个传感器,无需序列号)
 DS18B20_WriteByte(0x44);   // 启动温度转换指令

 DS18B20_ReSet();     // 产生 复位脉
 DS18B20_WriteByte(0xcc);   // 忽略 ROM 指令
 DS18B20_WriteByte(0xbe);   // 读取 温度指令(读 暂存器 指令)

 for(j=0;j<16;j++)     // 读取 温度数量 (16次循环)
 {      
  DQ=0;       // 拉低 总线;
  _nop_();      // 保持最少 1us; 
  _nop_();
  DQ=1;       // 释放 总线;
  Delay15us();     // 等待 15us; 
  b=DQ;       // 采集 总线 电压 保存 到 变量 b; 
  Delay15us();
  Delay15us();     // 等待 45 us; 
  Delay15us();
  
  b=b<<j;       // 注意:b 是一个 单 1 bit 的 值(0,或1)
  temp=temp|b;
 }
 
 temp=temp*0.0625*10;    // 合成温度值并放大10倍   0.0625 是精度;    
 return (temp);      // 返回检测到的温度值
}

 

联系我们

联系人:客服在线

手机:全工:13903011251

电话:李R:13530006400

邮箱:729986191@qq.com

地址: GUANGDONG PROVINCE

用手机扫描二维码关闭
二维码