AT89C2051与ds18b20配合的温度计编程详解
35 浏览量
更新于2024-09-01
1
收藏 25KB PDF 举报
本文是一篇详细介绍如何使用AT89C2051单片机配合DS18B20温度传感器设计温度计程序的文章。AT89C2051是一款广泛应用的51系列单片机,而DS18B20是一款数字温度传感器,常用于精确测量环境温度。
首先,文章引入了所需的头文件,如标准库函数定义,以及自定义的变量类型和引脚定义。其中,`ucharcodetable[]`数组用于存储温度显示的ASCII码,`tempe`变量用于暂存温度值,而一组P3引脚被配置为数据线(DQ)、写入使能(p)和读取使能(q、r、s)。
文章的核心部分包括几个函数:
1. `delay1()`:这是一个简单的延时函数,通过嵌套循环实现微秒级的延时,确保通信和数据处理的稳定性。
2. `delay()`:这是更通用的延时函数,接受一个整数参数表示延时的时间。
3. `display()`:此函数负责将温度转换为十进制ASCII码并显示在数码管上。它首先通过`table[]`数组将十位和个位的温度分开显示,然后清零数码管,依次更新每个位,并保持相应的使能状态。
4. `init_ds18b20()`:初始化DS18B20温度传感器,设置通信协议,先拉高DQ线8us,再拉低80us,再拉高8us,读取器件响应,并等待4us,以确保传感器准备好接收命令。
5. `wr_ds18b20()`:此函数用于向DS18B20发送写命令,通过逐位操作数据线来实现。
6. `re_ds18b20()`:这是一个读取函数,用于从DS18B20获取数据,通过连续读取8位,将高位存放在高位,同时根据DQ线的状态调整读取结果。
7. `rd_temperature()`:这个函数是温度读取的核心部分,调用`wr_ds18b20()`发送测量命令,然后通过`re_ds18b20()`获取温度数据,最后解析这些数据以计算出实际的温度值。
整体而言,该程序设计的关键在于单片机与温度传感器之间的有效通信和数据解析,通过这些函数的组合,实现了温度的实时测量和显示。这对于理解和应用单片机技术,尤其是与外设(如温度传感器)集成的设计具有重要的参考价值。通过本文,读者可以学习到如何在硬件连接、软件编程和温度传感原理的结合中,构建一个基本的温度监控系统。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-08-21 上传
2009-07-01 上传
2021-04-16 上传
2024-04-19 上传
weixin_38626080
- 粉丝: 8
- 资源: 973
最新资源
- 2-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- C++ IPHelper IP输入控件
- alcohol-or-gasoline:具有功能的应用程序,根据用户为每种物质输入的价格,使用酒精或汽油是否更有利,请回答用户。 在此应用程序中,全局变量和局部变量的原始类型发生了变化,并且采用了对它们之间建立联系的方法承担全部责任的原则
- 加减法自动生成工具@QT
- fullstack-react-graphql:在后端使用GraphQL和MongoDB在前端使用React.js制作的CRUD应用程序
- 基于Robert交叉梯度的图像锐化.zip
- anoninja
- sparrow:一种c风格的玩具语言,用llvm实现
- 1-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- graphein:蛋白质图库
- CV_MarieLATASTE_V2:CV_MarieLATASTE的第二版
- (修)09-07 罗灿丽(4).zip
- VC++在程序中用代码注册和卸载ocx控件
- riru_storage_redirect:存储隔离(存储重定向)是一个为应用程序提供隔离存储功能的应用程序。 它可以防止设计不当的应用程序使您的存储混乱,并让您控制文件可以访问的文件
- Documentation:用于在我们的官方主页上生成文档的文件
- episode-47:第 47 集 - 使用 Ansible 进行零停机部署(第 44 部分)