新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机-温度传感器DS18B20

51单片机-温度传感器DS18B20

作者: 时间:2016-12-02 来源:网络 收藏
温度传感器是各种传感器中最常用的一种,早期使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的阻值也发生线性变化,用处理器采集电阻两端的电压,然后根据某个公式就可以计算出当前环境温度。美国DALLAS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需占用一个I/O端口,无需任何外部元件,直接将环境温度转化成数字信号,以数字码方式串行输出,从而大大简化了传感器与处理器的接口。
DS18B20的三种封装:
DS18B20的内部结构:
它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的。如果要控制多个DS18B20进行温度采集,只要将所有的DS18B20的I/O口全部连接到一起就可以了。在具体操作时,通过读取每个DS18B20内部芯片的序列号来识别。64位光刻ROM中的序列号是出场前被光刻好的,他可以看做该DS18B20的地址序列码。
DS18B20的复位时序:
DS18B20复位,确定其存在: #include <reg52.h>
#define uint unsigned int
uint i;
sbit DQ = P3^3;
sbit bell = P3^4;
void reset(){
DQ = 1; //开始的时候是高脉冲
DQ=0; //然后是低脉冲
i=103;
while(i>0)i--; //低脉冲需要延迟一会儿
DQ=1; //数据线拉高,系统将总线放开,并进入接受状态
i=4;
while(i>0)i--; //延时等待,若初始化成功则在15"60ms内产生一个由
if(DQ == 0){ //DS18B20在检测到总线的上升沿后,等待15"60ms,接着
while(DQ == 0); //在T2时刻发出存在脉冲(低电平)
bell = 0;
}
else
bell = 1;
}
void main(){
reset();
while(1);
}

上一页 1 2 3 4 下一页

评论


技术专区

关闭