DS18B20温度传感器程序解析与初始化

0 下载量 195 浏览量 更新于2024-09-04 收藏 55KB PDF 举报
"本文详细介绍了如何编写和理解DS18B20测温程序,适合初学者入门学习。" DS18B20是一款数字温度传感器,它可以直接输出数字信号,无需额外的ADC转换器。在微控制器如8051系列中,可以方便地与DS18B20进行通信来获取温度数据。以下是对DS18B20测温程序的详细解析: 首先,程序中包含了必要的头文件`reg52.h`和`intrins.h`,前者提供了8051系列微控制器的寄存器定义,后者则包含了一些内联汇编函数。 接着,定义了几个数据类型和引脚定义。`uchar`代表无符号字符型,`uint`代表无符号整型。`DQ`、`dula`和`wela`分别被定义为P2口的第2、6、7位,它们用于控制DS18B20的数据接口以及数码管的显示。 `temp`变量用来存储读取到的温度值。`table`和`table1`数组是用于数码管显示的字符代码表,分别对应不带小数点和带小数点的十进制数字。 程序中的`delay`函数是一个简单的延时函数,适用于12MHz晶振的系统。这个函数通过循环减法实现延时,误差在5us左右。根据参数的不同,可以实现不同时间长度的延时。 `Init_Ds18b20`函数是DS18B20的初始化函数。在这个函数中,首先将DQ引脚设置为高电平,然后通过拉低DQ引脚并保持一定时间来发送复位脉冲。这个过程对DS18B20进行初始化,准备它接收后续的命令。 未在摘要中给出的程序部分通常会包含与DS18B20通信的具体指令序列,例如启动一次温度测量、读取温度数据、处理温度数据并将其显示在数码管上等步骤。这些步骤可能包括: 1. 发送“开始转换”命令,让DS18B20开始测量温度。 2. 等待一段时间,允许DS18B20完成温度测量(通常需要约750ms)。 3. 发送读取温度数据的命令,然后读取DS18B20返回的16位数据(其中9位是温度值,其余位是校验信息)。 4. 解析读取到的温度数据,可能需要考虑温度传感器的分辨率和负数表示方式(例如,9位二进制补码)。 5. 将温度值转换为人类可读的格式(如摄氏度),并用之前定义的数码管显示代码表显示在数码管上。 由于摘要中没有提供完整的程序,上述步骤只能基于常见的DS18B20操作流程推测。实际的程序实现会包含这些步骤的详细代码。 DS18B20测温程序的编写涉及与传感器的通信协议、数据解析以及显示输出等多个环节。通过学习和理解这个程序,开发者可以掌握如何在嵌入式系统中集成温度测量功能。