首页 温度传感器DS18B20的驱动方法

温度传感器DS18B20的驱动方法

举报
开通vip

温度传感器DS18B20的驱动方法 温度传感器 DS18B20 的驱动方法 在这一小节中将对DS18B20 温度传感器进行介绍,包括其功能、结构、驱动方法等内 容。 (1)DS18B20 温度传感器简介 DS18B20 数字温度计提供 9 位到 12 位(可配置)的温度读取,指示设备上的温度。数 据信息是通过一线接口(1­Wire Interface),即只需要一条线就可以把很多DS18B20 连接到 中央处理器上。同时,用以读取数据和温度转换的电源也可以通过数据线来提供,而无需外 部电源。由于每一个DS18B20 内部都有一个唯一的...

温度传感器DS18B20的驱动方法
温度传感器 DS18B20 的驱动方法 在这一小节中将对DS18B20 温度传感器进行介绍,包括其功能、结构、驱动方法等内 容。 (1)DS18B20 温度传感器简介 DS18B20 数字温度计提供 9 位到 12 位(可配置)的温度读取,指示设备上的温度。数 据信息是通过一线接口(1­Wire Interface),即只需要一条线就可以把很多DS18B20 连接到 中央处理器上。同时,用以读取数据和温度转换的电源也可以通过数据线来提供,而无需外 部电源。由于每一个DS18B20 内部都有一个唯一的序列号,所以多个DS18B20 可以同时存 在于一线总线上。这样就可以把多个温度传感器放置于不同的位置。可以广泛应用于环境控 制,建筑物、设备或机器内部温度的测量及进程监控与控制。 DS18B20 的引脚定义: 引脚功能详细描述: (在 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中没有提到的引脚可以不接。) 8PIN SOIC TO92 符号 描述 5 1 GND 地 4 2 DQ 数据输入输出 3 3 VDD 可选的电源输入 (2)DS18B20 的硬件结构及功能详述 DS18B20 的硬件结构请看如下框图: 通过对配置寄存器进行配置,可以使其工作在 9 位~12 位四种模式下。以下是配 置寄存器的功能介绍: D4~D0 总为 1,D7 总为 0。 R1,R0:工作模式选择。各位工作模式下,温度测量所需时间不同。 如下表所示: 配置寄存器位于 SCRATCHPAD 寄存器组中,此寄存器组的定义如下: D7 D6 D5 D4 D3 D2 D1 D0 0 R1 R0 1 1 1 1 1 SCRATCHPAD 字节偏移 测量所得温度的低位 0 测量所得温度的高位 1 用户设定温度上限 2 用户设定温度下限 3 R1 R0 工作模式 最大的测量时间 0 0 9 位 93.75 ms 0 1 10 位 187.5 ms 1 0 11 位 375.0 ms 1 1 12 位 750.0 ms 其中第一个与第二个字节就是测量所得的温度的数量,乘以相应工作模式下的分辨 率就是所要求的温度值。 以 12 位模式为例,予以说明: 上电后默认值为+85 摄氏度。 (3)DS18B20 的驱动方法: 这里将对一线接口时序进行介绍,一线接口对时间比较敏感,下面的例程运行于 22.1184 的外部振荡频率下。其中使用的延时函数在此振荡频率下的实测延时时间约为:(参 数×5+8)us。 1)初始化 初始化时序图如下: 配置寄存器 4 保留 5 保留 6 保留 7 八位循环冗余校验码 8 温度(摄氏度) 数字输出(二进制) 数字输出(十六进制) +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H +25.0625 0000 0001 1001 0001 0191H +10.125 0000 0000 1010 0010 00A2H +0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H ­0.5 1111 1111 1111 1000 FFF8H ­10.125 1111 1111 0101 1110 FF5EH ­25.0625 1111 1110 0110 1111 FF6FH ­55 1111 1100 1001 0000 FC90H //初始化函数 Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ 复位 Ldelay(8); //稍做延时 DQ = 0; //单片机将 DQ 拉低 Ldelay(100); //精确延时 大于 480us DQ = 1; //拉高总线 Ldelay(14); x=DQ; //稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 Ldelay(20); } 2)写一个字节 写 1: 写 0: //写一个字节 WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i­­) { DQ = 0; DQ = dat&0x01; Ldelay(5); DQ = 1; dat>>=1; } } 3)读取一个字节 //读一个字节 unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i­­) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; Ldelay(4); } return(dat); } 4)读取温度 测量所得的温度位于 SCRATCHPAD 寄存器组前两个字节,读取过程中涉及到 三个命令。 //读取温度 unsigned int ReadTemperature() { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Ldelay(1000); Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 WriteOneChar(0xBE); //读取温度寄存器等(共可读 9 个寄存器) 前两 个就是温度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; 命令码 功能描述 CCH 跳过对 ROM 的读取 44H 开始温度测量 BEH 读取 SCRATCHPAD 寄存器组 t=t|a; tt=t*0.0625; t=tt*100; return(t); } 以上介绍了DS18B20 温度传感器的基本驱动方法。在进行单总线多点测量时,根据每 个 DS18B20 内 ROM 中固化的序列号对某一个传感器选中。程序中直接跳过了ROM 信息的 读取,如果不跳过,则读出来的就是序列号信息,共64 位,格式如下表所示。 8­BIT CRC 校验码 48­BIT 序列号 8­BIT 家族号(28H)
本文档为【温度传感器DS18B20的驱动方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_941224
暂无简介~
格式:pdf
大小:197KB
软件:PDF阅读器
页数:7
分类:互联网
上传时间:2011-02-25
浏览量:22