DS18B20温度传感器与51单片机编程实战

需积分: 3 0 下载量 23 浏览量 更新于2024-09-26 1 收藏 6KB TXT 举报
"这篇资源是关于使用51单片机进行18B20温度传感器编程的教程,其中包含了初始化、通信、读取温度等关键步骤。代码示例使用了汇编和C语言,同时也涉及到了显示部分的处理。" 在51单片机编程中,DS18B20是一款常用的数字温度传感器,它能够提供高精度的温度测量数据。该资源主要讲解了如何基于51单片机与18B20芯片进行交互,包括以下几个核心知识点: 1. **头文件引用**:代码中包含了`<reg52.h>`、`<absacc.h>`、`<intrins.h>`和`<math.h>`等头文件,用于访问51单片机的寄存器、定义位操作以及包含数学函数。 2. **定义宏**:`#define uint unsigned int`和`#define uchar unsigned char`分别定义了无符号整型和无符号字符型的别名,简化代码阅读。 3. **数据结构**:`uchar codetable[]`是一个字符数组,用于存储7段数码管的编码,便于显示数字。 4. **函数声明**:如`void display(uchar,uchar,uchar)`、`void delay_led(uint z)`和`void init_led()`等,这些函数用于数码管显示、延时和LED初始化。 5. **变量声明**:如`sbit dula=P2^6;`和`sbit wela=P2^7;`定义了P2口的位操作,`uchar temp[2]`用于存储DS18B20返回的温度值,`uint value`用于中间计算,`ucharsn1...sn8`用于存储DS18B20的序列号。 6. **DS18B20操作**:`void ow_reset(void)`实现了一线总线的复位操作,`void Read_Temperature(void)`负责读取温度数据,`void write_byte(char)`和`uint read_byte(void)`则实现了写入和读取一线总线的数据。 7. **时间管理**:`void tmstart(void)`可能是一个启动定时器的函数,用于控制DS18B20的通信时序。 8. **转换和显示**:`void zhuanhuan()`可能是数据转换函数,将读取到的温度值进行处理,`void display(uchar,uchar,uchar)`用于将处理后的温度数据显示在数码管上。 9. **延迟函数**:`void delay_18B20(uint)`提供了不同时间尺度的延时,这对于与DS18B20通信中的定时操作至关重要。 10. **错误处理**:`void baojing()`可能是错误报警函数,当传感器读取或通信出现问题时触发。 在实际应用中,开发人员需要理解每个函数的用途,并根据实际需求进行调整,以确保DS18B20能正确地与51单片机通信并获取准确的温度数据。这个资源对于初学者来说,是一份很好的学习资料,涵盖了18B20与51单片机配合工作的基本流程。