单片机DS18B20温度测量程序详解

0 下载量 40 浏览量 更新于2024-09-03 收藏 40KB PDF 举报
本文将详细介绍如何使用单片机与DS18B20温度传感器进行通信,以实现精确的温度测量。DS18B20是一款数字式温度传感器,它能将环境温度转换成数字信号,并通过一根总线连接到微控制器(如单片机)上进行读取。本文涉及的主要知识点包括: 1. **硬件连接**: - 首先,需要将DS18B20的三根引脚连接到单片机:数据线(DQ)、电源线(VCC)和地线(GND)。数据线通常接至单片机的I/O口,以便于数据传输。 2. **头文件引入**: - 包括`iom16v.h`、`macros.h`、`18B20.h`和`disp.h`,这些头文件可能包含了定义数据类型、宏和函数的必要组件,如`uint`、`uchar`,以及用于处理温度数据的特定库函数。 3. **延迟函数**: - 提供了一个名为`s_1ms`的函数,用于在4MHz晶振下实现1ms的延时,这对于稳定数据读取和处理过程至关重要。 4. **主函数`main()`**: - 在主循环中,首先设置IO口的输出模式并进行适当延时,接着进行DS18B20的复位操作。 - 使用`ds1820_start()`启动温度测量,然后读取温度值(`wendu`),并通过`ds1820_fh()`判断是否成功获取数据。 - 成功时,温度值经过处理(取反加1,除以16,四舍五入后取整),然后按百位(shi)、十位(ge)和个位(xiao)分段显示,通过`display()`函数驱动外部显示器或LCD模块。 - 如果读取失败,说明可能存在错误或传感器未初始化,此时会直接处理温度值,同样进行数值处理和显示。 5. **温度传感器操作**: - `ds1820_reset()`和`ds1820_start()`是DS18B20的关键函数,分别用于复位传感器和开始温度测量。测量过程中,DS18B20会在总线上发送一系列的命令来获取温度值。 6. **温度数值处理**: - 温度值通常是以16位的补码形式存储,需要通过特定的算法进行转换和格式化,确保显示的温度是两位小数的整数。 通过阅读和理解这个程序,学习者可以掌握使用DS18B20进行温度测量的基本步骤,了解单片机控制传感器并与之交互的编程技巧,这对于初学者来说是基础且实用的技能。此外,这也有助于理解数字温度传感器的工作原理,以及如何将其应用于实际的硬件项目中。