51单片机DS18B20温度传感器程序解析
5星 · 超过95%的资源 需积分: 6 89 浏览量
更新于2024-09-20
收藏 3KB TXT 举报
该资源是一个基于51单片机的DS18B20温度传感器的子程序,用于读取并显示温度数据。程序中包含了必要的定义、函数声明和主函数实现,允许用户通过DS18B20与51单片机进行通信,获取温度值,并将结果显示在7段显示器上。
程序主要知识点:
1. **DS18B20**:这是一个数字温度传感器,可以提供精确的温度测量,支持一线总线(1-Wire)通信协议。在这个程序中,它通过sbit DQ=P1^7与单片机连接。
2. **头文件**:程序使用了`REG52.H`,这是51系列单片机的标准寄存器定义头文件;`math.h`通常包含数学函数,但在这个程序中未使用;`INTRINS.H`包含51单片机的内联汇编函数。
3. **定义和变量**:程序定义了多个位定义(如seg1-seg3用于7段显示器控制),以及一些全局变量(temp, flag_get, count, num, minute, second等)来存储温度值和其他状态信息。
4. **函数声明**:包括`delay1()`, `ReadTemperature()`, `Init_DS18B20()`, `ReadOneChar()`, `WriteOneChar()` 和 `delay()`。这些函数分别负责延时、初始化DS18B20、读取一个字符、写入一个字符以及主循环中的延时操作。
5. **7段显示器编码**:`codetab`数组包含了7段显示器显示数字0-9的编码,用于将温度值转化为7段显示器可以理解的格式。
6. **主函数**:`main()`函数是程序的入口点,其中设置了定时器配置(用于生成延时)和中断设置,初始化DS18B20,然后进入一个无限循环,不断读取温度,更新并显示在7段显示器上。
7. **通信过程**:通过`ReadTemperature()`函数,程序与DS18B20进行通信,获取温度值。`ReadOneChar()`和`WriteOneChar()`函数可能用于DS18B20的一线总线协议交互,读取或写入数据。
8. **延时函数**:`delay1()`和`delay()`函数提供了不同级别的延时功能,对于实时性要求不高的系统,通常使用这种方式实现简单的延时。
9. **温度显示**:读取到的温度值被转换为ASCII字符并存储在`str[]`数组中,然后通过`tab[]`查找对应的7段码,以便在7段显示器上正确显示。
10. **硬件配合**:为了更好地理解和使用此程序,建议配合电路原理图“DY_mini80.pdf”一起学习,这个图会展示DS18B20如何连接到51单片机以及其他硬件组件的布局。
这个程序适合初学者了解和学习如何使用51单片机与DS18B20温度传感器的交互,以及如何将读取的数据在7段显示器上进行显示。同时,通过程序可以学习到基本的C语言编程技巧,如变量定义、函数调用、位操作以及中断系统在单片机应用中的使用。
2012-07-17 上传
2014-03-31 上传
2012-12-24 上传
2012-03-07 上传
2010-07-12 上传
2010-04-19 上传
2011-05-04 上传
2010-04-26 上传
2011-04-15 上传
veron123456
- 粉丝: 0
- 资源: 7
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析