DS18B20温度传感器程序实测分享

需积分: 0 0 下载量 146 浏览量 更新于2024-09-14 收藏 14KB DOCX 举报
"DS18B20温度采集程序是一个基于单片机的软件实现,用于读取DS18B20数字温度传感器的数据。该程序已经过测试并被证明是有效的,但根据不同的硬件电路配置,连接DS18B20的端口可能需要进行调整。" 该程序的核心知识点包括: 1. **DS18B20温度传感器**:DS18B20是一种数字温度传感器,它可以提供精确的温度测量,并且可以直接与微控制器通过单线接口通信。它能够存储唯一的64位序列号,使得在多个传感器同时连接到同一数据线上也能区分它们。 2. **单片机编程**:程序使用C语言编写,针对特定型号的单片机(可能是51系列,因为包含了`<reg52.h>`头文件),用于控制DS18B20并与之通信。程序中的`#define`语句定义了一些常量和寄存器地址,以简化代码。 3. **单线通信**:DS18B20与单片机之间采用单线通信协议,即所有数据交换都通过一个数据线完成,这需要精确的时序控制。在代码中,`DQ`被定义为单片机的P3^5口,表示DS18B20的数据线连接。 4. **函数声明**:程序包含了多个函数,如`delay()`用于延时,`wait()`用于等待,`send_command()`用于发送命令到DS18B20,`send_data()`用于发送数据,`ds18b20rst()`用于复位DS18B20,`ds18b20rd()`用于读取DS18B20的数据,`ds18b20wr()`用于写入数据,`read_temp()`用于读取温度,以及`ds1820disp()`用于显示温度值。 5. **时序操作**:`delay_18B20(unsigned int i)`和`wait()`函数是用于确保满足DS18B20通信所需的最小延迟时间,这是单线通信中至关重要的部分,因为数据的传输和接收依赖于精确的时间间隔。 6. **数据处理**:程序中有变量`avalue`用于存储温度值,`tflag`用于判断温度正负。`read_temp()`函数负责从DS18B20读取温度数据,而`ds1820disp(uint tvalue)`则负责将温度值显示出来。 7. **1602 LCD显示屏支持**:虽然主要涉及DS18B20的温度采集,但程序中还包含对1602液晶显示屏的命令发送函数`send_command(uint command)`,表明程序也支持将温度结果显示在LCD屏幕上。 这个程序实现了通过单片机控制DS18B20温度传感器读取温度,并将结果显示的功能,同时也具备与1602 LCD屏幕的兼容性,适合在需要实时温度监控的嵌入式系统中使用。不过,具体的应用可能需要根据实际硬件环境进行适当的修改和调整。