网站大量收购独家精品文档,联系QQ:2885784924

DS18B20的温度采集.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DS18B20的温度采集

“盛群杯”单片机大赛设计报告 温度读取部分: 采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2 所示 。 DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果 2.2.1 温度采集部分设计 本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。 图2.2.1 DS18B20测温电路 (1)DSI8B20的测温功能的实现: 其测温电路的实现是依靠单片机软件的编程上。 当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5℃/LSB形式表示。温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应。 表2.2.1 DS18B20温度值格式表 LS Byte MS Byte S S S S S (2)、DSl820工作过程中的协议 初始化 - RoM操作命令 - 存储器操作命令- 处理数据 ① 初始化 单总线上的所有处理均从初始化开始 ② ROM操作命令  总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如表2.2.2所示 表2.2.2 ROM操作命令表 指令 代码 Read ROM(读ROM) 33H Match ROM(匹配ROM) 55H Skip ROM(跳过ROM] CCH Search ROM(搜索ROM) F0H Alarm search(告警搜索) ECH ③ 存储器操作命令如表2.2.3所示 表2.2.3 存储器操作命令表 指令 代码 Write Scratchpad(写暂存存储器)? 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad(复制暂存存储器)? 48H Convert Temperature(温度变换) 44H Recall EPROM(重新调出) B8H Read Power supply(读电源)? B4H (3)温度转换算法及分析 由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位是用来保存温度的正负(标志为S的bit11~bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 ~ bit10)。其中低字节(LS Byte)的低4位来保存温度的小数位(bit0 ~ bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。 算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。 读取DS18B20温度模块子程序 每次对DA18B20操作时多要按造DS18B20工作过程中的协议进行。 初始化- RoM操作命令- 存储器操作命令- 处理数据 程序流程图如图3.1.1所示。 3.2 数据处理子程序 由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档