DS18B20温度传感器与51单片机编程实战
需积分: 3 8 浏览量
更新于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单片机配合工作的基本流程。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-03 上传
2015-12-24 上传
2022-06-09 上传
2014-02-27 上传
2021-09-30 上传
2021-09-30 上传
ADU_UDA
- 粉丝: 0
- 资源: 1