C51单片机实现DS18B20多点温度检测系统

5星 · 超过95%的资源 需积分: 9 20 下载量 41 浏览量 更新于2024-10-09 1 收藏 18KB DOCX 举报
"基于C51单片机的1WIRE多点DS18B20温度检测系统利用DS18B20传感器进行温度测量,并通过单总线(1-Wire)通信协议与C51单片机交互。系统能够实现对多个DS18B20传感器的温度数据采集,每个传感器都有唯一的64位序列号,允许在同一条总线上连接多个设备。" 在DS18B20温度检测系统中,DS18B20是一款集成了温度传感器、数字信号处理器和存储器的智能传感器。它能够提供9位至12位的数字温度读数,并且具有内置的温度转换功能和可编程的分辨率设置。该传感器具有非常高的精度,适用于各种环境监测应用。 C51单片机是Microchip Technology公司生产的8051系列兼容微控制器,广泛应用于嵌入式系统设计。在本系统中,C51负责处理与DS18B20的通信,发送和接收数据,以及控制系统的其他功能。C51单片机通过P0.7口模拟1-Wire总线,实现与DS18B20的通信。 1-Wire通信协议是一种简单的串行通信协议,只需要一根线(加上电源线)就能完成数据传输,非常适合连接多个DS18B20传感器。系统中定义了一系列DS18B20的命令代码,如: 1. `s18B20_READ_ROM`:读取传感器的ROM信息,用于识别和寻址特定的DS18B20。 2. `s18B20_MATCH_ROM`:匹配特定ROM,用于与指定的传感器通信。 3. `s18B20_SKIP_ROM`:跳过ROM匹配,用于向总线上所有设备发送广播命令。 4. `s18B20_SEARCH_ROM`:搜索总线上的DS18B20,用于发现新添加或重置的传感器。 5. `s18B20_ALARM_SEARCH`:报警搜索,查找温度超出预设范围的传感器。 6. `s18B20_WRITE_SCRATCHPAD`:写入暂存寄存器,可以设置温度阈值等参数。 7. `s18B20_READ_SCRATCHPAD`:读取暂存寄存器,获取温度值和其他配置信息。 8. `s18B20_COPY_SCRATCHPAD`:将暂存寄存器的数据复制到永久存储区域。 9. `s18B20_CONVERT_T`:启动温度转换,传感器开始测量温度。 10. `s18B20_RECALL_E2`:重新调出E2PROM的数据,用于恢复传感器的配置信息。 在程序中,还提供了延时函数`delay_us`和`delay_ms`,用于控制通信过程中的时间间隔,确保协议的正确执行。`delay_us`函数根据晶振频率(22.1184MHz)计算合适的循环次数来实现微秒级别的延时,而`delay_ms`函数则用于毫秒级的延时。 温度小数部分的处理采用查表法,`editab`数组包含了温度转换后小数部分的映射,这种做法简化了代码并提高了计算效率。当DS18B20返回的温度数据需要转换为带有小数点的温度值时,可以通过查表快速得到相应的小数部分。 这个系统通过C51单片机和1-Wire协议实现了对多个DS18B20传感器的温度监控,提供了灵活的配置和精确的温度测量能力,是智能家居、工业自动化等领域理想的温度测量解决方案。