DS18B20 C51 温度传感器源代码实现

需积分: 9 20 下载量 142 浏览量 更新于2025-01-03 收藏 69KB PDF 举报
"DS18B20 C51源代码是用于操作DS18B20数字温度传感器的程序,该传感器能够精确测量温度并通过单总线接口与微控制器进行通信。C51是针对8051系列微控制器的编程语言。此代码包含了初始化串行通信、发送数据以及延时函数等关键功能。" DS18B20是一种流行的数字温度传感器,由 Dallas Semiconductor(现 Maxim Integrated)制造。它能够提供高达9位的分辨率(±0.5°C)或更高精度的温度读数,并具有单线通信协议,这意味着只需要一根数据线就能与微控制器进行双向通信,简化了硬件设计。 在给定的源代码中,可以看到以下几个关键部分: 1. **头文件**:`#include "reg51.h"`、`#include "INTRINS.H"` 和 `#include "LCD.h"` 分别包含了8051寄存器定义、内联函数支持和LCD显示相关的头文件,表明这个程序可能同时用于显示温度数据到LCD屏幕上。 2. **定义**:`sbit TMDAT = P1^7;` 和 `sbit RUN_LED = P1^6;` 定义了P1口的第7位作为DS18B20的数据线,第6位可能用于运行状态的LED指示。 3. **全局变量**:`unsigned char currSensorNo=0;` 用于存储当前传感器的编号,可能在有多个DS18B20并联时使用。数组 `unsigned char code ID[2][8]` 存储了传感器的ROM ID,每个DS18B20都有唯一的8字节ROM,用于识别和寻址。 4. **函数**: - `serial_initial()` 函数初始化串行通信设置,这里设置TMOD寄存器为模式2(8位UART),SCON设置为方式1(UART),PCON设置为正常模式,然后设置波特率定时器TL1和TH1,并启动定时器1。 - `send()` 函数用于发送数据到DS18B20,接受一个计数和一个数据缓冲区,遍历缓冲区并将每个字节发送出去,等待发送中断标志TI清零后继续发送下一个字节。 - `Delay_ms()` 和 `Delay_count()` 函数提供了延时功能,分别用于毫秒级和更精确的计数级延时。 5. **中断处理**:虽然代码中没有显示,但在实际应用中,可能需要处理串行中断来接收DS18B20的响应和数据。 通过这段源代码,开发者可以了解如何在C51环境下配置8051微控制器与DS18B20传感器的通信,并获取温度数据。在实际项目中,还需要实现解析DS18B20返回的温度数据、错误检查、以及可能的多传感器管理等功能。