DS18B20温度传感器(单线通讯,严格按照时序图)
特点:
1、电压范围:3.0v~5.5V
2、独特的单线接口,仅需一条串口线即可实现微处理器与DS18B20的双向通讯;
3、支持电组网功能,实现组网多点测温
4、不需要任何外围原件
5、范围-55‘C~+125’C,精度0.5
6、高精度测温,分辨率9~12位
7、速度快,抗干扰能力强
8、不易因电源接反而烧坏
有64位光刻只读存储器
温度存储格式
8位低字节+8位高字节
高字节前五位是字符位:“0”;温度大于0;
“1”;温度小于0,只需将测到的数值取反乘0.0625
测到的温度乘以0.0625即实际温度;
内部包括一个高度的暂存器RAM和一个非易失性的可电擦除的EEPROM
最大转换时间750ms
精度和时间有直接关系
RAM指令表
温度变换 44H
读暂存器 beH
写暂存器 4eH
复制暂存器 48H
……
temp.h
#ifndef _TEMP_H
#define _TEMP_H
#include"reg52.h"
#ifndef uint
#define uint unsigned int
#endif
#ifndef uchar
#define uchar unsigned int
#endif
sbit DSPORT = P3^7;
int Ds18b20readtemp();
#endif
temp.c
#include "temp.h"
//延时1ms
void delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
/*
(1).数据线拉到低电平“0”。
(2).延时480微妙(该时间的时间范围可以从480到960微妙)。
(3).数据线拉到高电平“1”。
(4).延时等待80微妙。如果初始化成功则在15到60微妙时间内产生一个由DS18B20所返回的低电平“0”.根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时判断。
(5).若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(3)步的时间算起)最少要480微妙。
*/