DS18B20单总线多点测温系统实现及代码解析

4星 · 超过85%的资源 需积分: 9 62 下载量 41 浏览量 更新于2024-07-30 5 收藏 22KB DOCX 举报
"DS18B20单总线多点式测温系统是一个基于DS18B20传感器的温度测量解决方案,该系统能够通过单总线接口连接多个传感器,实现分布式温度检测。文中提供的内容是针对这个系统的两个程序,帮助用户更好地理解和应用。其中一个程序段展示了如何在液晶屏上显示测量到的温度值。" 在这个系统中,DS18B20传感器是关键组件,它具有数字输出功能,能够在一根线上同时连接多个传感器,大大简化了硬件布线。每个DS18B20都能独立测量温度,并将结果通过单总线传输给微控制器。单总线的特点是只需要一根数据线,加上电源线和地线,即可实现数据通信,非常适合于资源有限的嵌入式系统。 程序段中展示的代码是用于处理DS18B20传感器数据并显示在1602液晶屏上的部分。首先,`#include<reg51.h>`和`#include<xuanze.h>`引入了必要的头文件,`reg51.h`通常包含51系列单片机的寄存器定义,而`xuanze.h`可能包含了与单总线通信相关的函数声明。`unsignedintshu[]`数组存储了0-9的ASCII码,用于转换温度值的十进制数字到字符显示。 `flcd_1602()`函数初始化液晶屏并写入温度数据。`init(0x80)`等语句设置液晶屏的控制命令,如设置显示位置、开启显示、清屏等。`write_data()`函数用于向液晶屏写入数据,如温度单位符号、"is:"等提示文本以及实际的温度值。 温度值`t`被转换为适合显示的格式。如果温度值为负,代码会处理负号的显示。例如,当`t/1000`不为0时,表示温度值的百位不为0,此时会显示负号(ASCII码为0x2D)和百位数字。否则,若温度值小于100,会显示一个负号前的填充字符(ASCII码为0xFE),然后显示十位数字。 通过这个程序,我们可以了解到DS18B20单总线多点式测温系统的数据处理流程,包括读取传感器数据、转换温度值、以及在液晶屏上直观呈现这些信息的方法。这样的系统广泛应用于环境监测、智能家居、工业自动化等领域,提供了一种高效、经济的温度测量方案。