C语言实现18B20传感器测温程序详解

需积分: 3 2 下载量 35 浏览量 更新于2024-09-21 收藏 5KB TXT 举报
本资源是一份针对18B20温度传感器的测温程序,使用C语言编写,适用于单片机环境。18B20是一种常用的数字式温度传感器,它通过一根数据线与微控制器通信,提供温度测量功能。该程序主要包括初始化DS18B20传感器、发送复位和初始化命令、读取一Byte数据以及处理延迟等功能。 首先,程序开始部分包含了必要的头文件,如<reg52.h>和<intrins.h>,它们用于定义数据类型和寄存器操作。`uchar`和`uint`分别定义了无符号字符型和无符号整型,`sbit`定义了P2口的两个引脚DQ(数据/时钟)、data和wr(写入)作为与18B20的接口。变量`temp`用于存储温度值。 程序中的`codetable`和`codetable1`数组是用于将18B20返回的二进制温度转换为ASCII码的对照表,这在后续处理温度值时会用到。`delay`函数是一个简单的延时函数,根据传入的时间参数实现不同长度的延时,考虑到时钟频率为12MHz,这个函数对于精确调整18B20通信时间至关重要。 `Init_Ds18b20`函数是关键部分,负责设置和初始化DS18B20传感器。首先使能DQ引脚,然后发送一个高电平复位信号,保持一段时间后变为低电平,等待480us后再次置高,最后给DS18B20一段固定的寻址和响应时间。 `Read_One_Byte`函数用于从传感器读取一个字节的数据,通过循环逐位读取,并在读取过程中清除上一读取状态,确保每次只读取一个新的数据位。这个过程需要精确控制时序,以避免干扰和错误读取。 这个C语言程序的核心在于与18B20传感器的交互,包括正确配置和通信,读取温度数据,并将其转化为可理解的数值。这份代码对于想要在嵌入式系统中利用18B20进行温度测量的开发者来说,提供了实用且基础的实现框架。通过调整和扩展,用户可以进一步添加错误检测、温度补偿或其他自定义功能。