DS18B20,是一款强大的测温传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点,所以是开发中必不可少的一个芯片,为了方便大家上手
DS18B20温度传感器是DALLAS公司生产的1-wire式单总线器件,具有线路简单,体积小的特点,用它组成的温度测量系统线路非常简单,只要求一个端口即可实现通信。温度测量范围在-55℃~+125℃之间,分辨率可以从9~12位选择,内部还有温度上、下限报警设置。每个DS18B20芯片都有唯一的序列号,所以可以利用多个DS18B20同时连接在同一条总线上,组成多点测温系统。但最多只能连接8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
DS18B20 的初始化:
根据 DS18B20 的通讯协议,主机(单片机)控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位操作,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放,当 DS18B20 收到信号后等待 16~60 微秒左右,后发出 60~240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。
(1) 先将数据线 DQ 置高电平“1”。
(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)
(3) 数据线拉到低电平“0”。
(4) 延时 750 微秒(该时间的时间范围可以从 480 到 960 微秒)。
(5) 数据线拉到高电平“1”。
(6) 延时等待(如果初始化成功则在 15 到 60 微妙时间之内产生一个由 DS18B20 所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7) 若 CPU 读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要 480 微秒。
(8) 将数据线再次拉高到高电平“1”后结束。
初始化程序如下:
uchar Init_DS18B20()
{
uchar status; //status 为 DS18B20 返回的状态
DQ = 1;
Delay(8);
DQ = 0;
Delay(90);
DQ = 1;
Delay(8);
status=DQ;
Delay(100);
DQ = 1;
return status;
}
DS18B20 应用举例(一)
如下图所示:DQ 通过 4.7K 上拉电阻外接正电源(由于单总线为开漏所以需要外接一个 4.7K 的上拉电阻),并连接单片机 P3.3 口。
本例中,1602LCD 显示 DS18B20 所测量的外部温度,调节 DS18B20 模拟改变外界温度时,新的温度将刷新显示在 LCD 上