收藏 分享(赏)

ds18b20温度采集.doc

上传人:eukav 文档编号:12411890 上传时间:2021-12-12 格式:DOC 页数:4 大小:72.50KB
下载 相关 举报
ds18b20温度采集.doc_第1页
第1页 / 共4页
ds18b20温度采集.doc_第2页
第2页 / 共4页
ds18b20温度采集.doc_第3页
第3页 / 共4页
ds18b20温度采集.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、“盛群杯”单片机大赛设计报告温度读取部分:采用数字温度传感器 DS18B20。DS18B20 为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图 1.2.2 所示 。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。并且从 DS18B20读出的信息或写入 DS18B20的信息仅需要一根口线(单线接口)读写,因而使用 DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果2.2.1 温度采集部分设计本系统采用半导

2、体温度传感器作为敏感元件。传感器我们采用了 DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20 应用广泛,性能可以满足题目的设计要求。DS18B20 的测温电路如图 2.2.1所示。图 2.2.1 DS18B20测温电路(1)DSI8B20 的测温功能的实现:其测温电路的实现是依靠单片机软件的编程上。 当 DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16位带符号扩展的二进制补码形式存储在高速暂存存储器的 0,1 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在

3、后,数据格式以 0062 5LSB 形式表示。温度值格式如表 2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位 S=0时,直接将二进制位转换为十进制;当 S=1时,先将补码变换为原码,再计算十进制值。DSI8B20 完成温度转换后,就把测得的温度值与 TH 做比较,若 TTH或 T RoM 操作命令 - 存储器操作命令- 处理数据 初始化 单总线上的所有处理均从初始化开始 ROM操作命令 总线主机检测到 DSl820的存在便可以发出 ROM操作命令之一这些命令如表 2.2.2所示表 2.2.2 ROM 操作命令表指令 代码Read ROM(读 ROM) 33HMatch ROM(匹

4、配 ROM) 55HSkip ROM(跳过 ROM CCHSearch ROM(搜索 ROM) F0HAlarm search(告警搜索 ) ECH 存储器操作命令如表 2.2.3所示表 2.2.3 存储器操作命令表指令 代码Write Scratchpad(写暂存存储器) 4EHRead Scratchpad(读暂存存储器) BEHCopy Scratchpad(复制暂存存储器 ) 48HConvert Temperature(温度变换 ) 44HRecall EPROM(重新调出) B8HRead Power supply(读电源) B4H(3)温度转换算法及分析由于 DS18B20转换后

5、的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高 5位是用来保存温度的正负(标志为 S的 bit11bit15) ,高字节(MS Byte)低 3位和低字节来保存温度值(bit0 bit10) 。其中低字节(LS Byte)的低 4位来保存温度的小数位(bit0 bit 3) 。由于本程序采用的是 0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以 0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了 0.1度。算法核心:首先程序判断温度是否是零下,如果是,则 DS18B20保存的是温度的

6、补码值,需要对其低 8位(LS Byte)取反加一变成原码。处理过后把 DS18B20的温度 Copy到单片机的 RAM中,里面已经是温度值的 Hex码了,然后转换 Hex码到 BCD码,分别把小数位,个位,十位的 BCD码存入 RAM中。3.1 读取 DS18B20温度模块子程序每次对 DA18B20操作时多要按造 DS18B20工作过程中的协议进行。初始化- RoM 操作命令- 存储器操作命令- 处理数据 程序流程图如图 3.1.1所示。3.2 数据处理子程序由于 DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是 0.0625的精度,小数部分的值,可以用

7、后四位代表的实际数值乘以 0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了 0.1度。首先程序判断温度是否是零下,如果是,则 DS18B20保存的是温度的补码值,需要对其低 8位(LS Byte)取反加一变成原码。处理过后把 DS18B20的温度 Copy到单片机的RAM中,里面已经是温度值的 Hex码了,然后转换 Hex码到 BCD码,分别把小数位,个位,十位的 BCD码存入 RAM中。数据处理子程序流程图如图 3.2.1所示。开始开始初始化DS18B20 存在?ROM 操作命令存储操作命令读取温度值返回是否图 3.1.1

8、读取 DS18B20温度子程序流程图温度传输调试过程:开始时初始化成功,从机有应答。但在读取温度时数据读出全为 0xff ,说明从机没回应,或说从机没发数据到总线上,认为传输时序有问题,因为使用的命令是没问题的开始时通信只能一次成功,第二次即出错。第二次初始化失败数据传输有问题,读出的数据为 0x50,0x05重新修改时序延时后,能得到正确的温度数据,但正确的温度读数是在断点设置的情况下,得到的。在全速运行时,却无法通信,即从机没发数据到总线或从机就没接收数据。大致判断情况为温度转换没完成。因为温度转换过程中,不响应总线,向总线发数据,延长时间继续调试。但延长时间过长,编译器死机。经过调整温度获取正确。采取的方案为使用定时器,在开启温度,过一段时间,再去读取温度。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑环境 > 建筑资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报