新闻中心

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

单片机·DS18B20温度传感器

作者: 时间:2016-11-24 来源:网络 收藏
一、DS18B20的特点
1.“一线总线”数字化温度传感器。(一线掌握好时序,比较简单)
2. 3~5V宽电压工作范围
3. 分辨9-12位可调
二、DS18B20的正确接线




面对着扁平的那一面,左负右正,一旦接反就有可能烧毁,也是温度显示85°C的原因。
且只有一根I/O线,注意读写时序 。
三、DS18B20时序介绍
1)复位

输入
t0-t1时刻:复位脉冲 480-960us ;
t1-t2时刻:释放总线 15-60us ;
检测
t2-t3时刻:虚线部分由DS18B20控制,60-240us低电平则表示复位成功,否则失败 ;
t3-t4时刻:释放总线
2)写操作

写0时序
输入
t0-15us:保持低电平,输入0;
检测
15-60us:检测i/o是否为低电平 ;
输入间隔>1us
写1时序
输入
t0-15us:拉高电平,输入1;
检测
15-60us:检测i/o是否为高电平
输入间隔>1us
3)读操作

t0-t1:保持4us低电平
t1-15us:DS18B20或者上拉电阻起作用,低电平或者高电平读出
15us-60us:释放总线
三、DS18B20的温度
1.DS18B20的温度格式表
一共是16位,我们用前5位表示符号位,后11位表示数值
2.DS18B20的温度数据表


125℃/2000 = 0.0625
当符号位为0时,表示正数,0.0625*hex得到温度的值 ;
当符号位为1时,表示负数,将所得到的(数值取反+1)*0.0625得到温度的值;
四、程序
1.启动温度转换
1)复位DS18B20;
2)发出Skip Rom命令(CCH)【仅适用于只有一个DS18B20】 ;
3)发出convert命令(44H)
2.读取温度
1)复位DS18B20;
2)发出Skip Rom命令(CCH);
3)发出convert命令(BEH);
4)读2字节的温度 ;
5)温度格式转换 ;
程序
main.h
# ifndef _MAIN_H_
# define _MAIN_H_
# include
# include
sbit DQ = P3^2 ;
sbit RS = P1^0 ;
sbit RW = P1^1 ;
sbit EN = P1^5 ;
sbit BUSY = P0^7;
typedef unsigned char uint8 ;
typedef unsigned int uint16 ;
typedef int int16 ;
#define nops() {_nop_();_nop_();_nop_();_nop_();}
#endif
main.c
# include "main.h"
void delay(uint16 n)
{
while(n--) ;
}
上一页 1 2 下一页

评论


技术专区

关闭