AT89C2051与ds18b20配合的温度计编程详解

3 下载量 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()`获取温度数据,最后解析这些数据以计算出实际的温度值。 整体而言,该程序设计的关键在于单片机与温度传感器之间的有效通信和数据解析,通过这些函数的组合,实现了温度的实时测量和显示。这对于理解和应用单片机技术,尤其是与外设(如温度传感器)集成的设计具有重要的参考价值。通过本文,读者可以学习到如何在硬件连接、软件编程和温度传感原理的结合中,构建一个基本的温度监控系统。
weixin_38626080
  • 粉丝: 8
  • 资源: 973
上传资源 快速赚钱