嵌入式 > 技术百科 > 详情

单片机驱动温感的18B20.h文件

发布时间:2020-10-21 发布时间:
|
   DS18B20是世界上第一个单线通讯的12位二进制数字温度传感器。工作电压从3.0~5.5V,测量温度范围从-55℃~125℃,具有最高±0.0625℃的分辨率。

    DS18B20数字温度传感器封装后可应用于多种场合。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
    利用单片机完全可以读取DS18B20所测量到的二进制数字温度,测温步骤:1、复位;2、跳过读序列号命令(总线只有一个DS18B20);3、启动温度转换;4、延时;5、读取温度;6、处理测量到的二进制数据;7、显示。
    为方便调用我封装为了一个18b20.h文件下载地址:http://www.51hei.com/f/18b20h.rar 可以任意调用.
    下面是18B20.h程序:

sbit  DQ=P3^3;
void delay_50us(uint t)
{
 unsigned char j;
 for(;t>0;t--)  
  for(j=19;j>0;j--);
}

void delay_8us(uint t)
{
 while(--t);
}

void delay_3us()
{
 ;
 ;
}
 
void write_ds18b20(uchar value)
{
 uchar i=0;
 for(i=0;i<8;i++)
 {
  DQ=1;
  delay_3us();
  DQ=0;
  delay_8us(2);
  if (value & 0x01) DQ=1; //
  delay_50us(1); 
  delay_8us(2);
  value>>=1;
 }
 DQ=1; //
}

uchar read_ds18b20(void)
{
 uchar i=0;
 uchar value = 0;
 for (i=0;i<8;i++)
 {
  value>>=1;
  DQ=0;// DQ_L;
  delay_3us();
  DQ=1; //
  delay_8us(2);
  if(DQ==1) value|=0x80;
  delay_8us(6); 
 }
 DQ=1;
 return value;
}

void rest_ds18b20(void)
{
 rest:delay_3us();
 delay_3us();
 DQ=1;
 delay_3us();
 DQ=0;
 delay_50us(11);
 DQ=1;
 delay_8us(5);
 if(DQ==1)
  return;
 delay_50us(2); 
 if(DQ==1)
  return;
 else
  goto rest;
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用于MAX7456随屏显示器SPI