欢迎来到天天文库
浏览记录
ID:38222571
大小:72.50 KB
页数:4页
时间:2019-05-28
《ds18b20温度采集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、“盛群杯”单片机大赛设计报告温度读取部分:采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2所示。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果2.
2、2.1 温度采集部分设计本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。图2.2.1DS18B20测温电路(1)DSI8B20的测温功能的实现:其测温电路的实现是依靠单片机软件的编程上。当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储
3、器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与TH做比较,若T>TH或TRo
4、M操作命令->存储器操作命令->处理数据①初始化单总线上的所有处理均从初始化开始②ROM操作命令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如表2.2.2所示表2.2.2ROM操作命令表指令代码ReadROM(读ROM)33HMatchROM(匹配ROM)55HSkipROM(跳过ROM]CCHSearchROM(搜索ROM)F0HAlarmsearch(告警搜索)ECH③存储器操作命令如表2.2.3所示表2.2.3存储器操作命令表指令代码WriteScratchpad(写暂存存储器) 4EHReadScratc
5、hpad(读暂存存储器)BEHCopyScratchpad(复制暂存存储器) 48HConvertTemperature(温度变换)44HRecallEPROM(重新调出)B8HReadPowersupply(读电源) B4H(3)温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MSByte)高5位是用来保存温度的正负(标志为S的bit11~bit15),高字节(MSByte)低3位和低字节来保存温度值(bit0~bit10)。其中低字节(LSByte)的低4位来保存温度的小数位(bit
6、0~bit3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSByte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。3.1读取DS18B20
7、温度模块子程序每次对DA18B20操作时多要按造DS18B20工作过程中的协议进行。初始化->RoM操作命令->存储器操作命令->处理数据程序流程图如图3.1.1所示。3.2 数据处理子程序由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需
8、要对其低8位(LSByte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BC
此文档下载收益归作者所有