DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域。轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。汽车空调、冰箱、冷柜、以及中低温干燥箱等。供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制。
DS18B20的使用
1.启动温度转化的步骤:复位、发出跳过ROM命令(CCH)、发出启动温度转换命令(44H)。
2.DS18B20的使用代码如下:(仅供参考)
#include <reg52.h>
#include "./delay/delay.h"
#include <intrins.h>
#include <stdio.h>
#include "./lcd/lcd.h"
sbit ds = P1^0;
bit ack = 0;
void ds_reset()
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200); //480~960us
ds = 1; //free ds
delay_us(30);
if(0 == ds)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(200);
}
void ds_send_byte(unsigned char byte)
{
unsigned char i;
for(i = 0; i < 8; i++)
{
ds = 0;
nop_();
nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
ds = 1;
}
delay_us(30);
}
bit ds_read_bit()
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}
unsigned char ds_read_byte()
{
unsigned char i,j,k;
for(i = 0; i < 8; i++)
{
j = ds_read_bit();
k = (j << 7) | (k >> 1); //j = j << 7;k = k >> 1; k = k + j;
}
return k;
}
void main()
{
unsigned char a;
unsigned int temp,b;
float wendu;
unsigned char disbuf[20];
lcd_init();
// ds1302_write_time();
// ds1302_write_data();
// ds1302_write_week();
while(1)
{
ds_reset();
ds_send_byte(0xcc);
ds_send_byte(0x44);
ds_reset();
ds_send_byte(0xcc);
ds_send_byte(0xbe);
a = ds_read_byte();
b = ds_read_byte();
temp = (b << 8) | a;
wendu =(float)temp * 0.0625;
sprintf(disbuf," %7.3f",wendu);
lcd_dis_str(0,0,disbuf);
// ds1302_read_time();
// ds1302_read_data();
// ds1302_read_week();
}
}