51单片机与DS1820温度传感器交互

需积分: 0 1 下载量 165 浏览量 更新于2024-07-13 收藏 1.85MB PPT 举报
"该资源是关于C51单片机的第12讲,主题是温度传感器,特别是Dallas公司的数字温度传感器DS1820(也称为DS18B20)。课程涵盖了温度传感器的基本概念,接口方式,性能指标,以及DS18B20的内部结构和工作原理。此外,还提供了相关的数据定义和延时函数的示例代码。" 在C51单片机编程中,数据定义是至关重要的,它帮助我们规范地声明和使用变量。在这个课件中,我们看到了如下数据定义: 1. `#include <reg52.h>` 和 `#include <stdio.h>`:这两行是包含头文件的指令,`reg52.h`包含了51系列单片机的特殊功能寄存器定义,而`stdio.h`提供了标准输入输出函数,如`printf`。 2. `#define`关键字用于创建宏定义,例如`uchar`和`uint`分别定义了无符号字符型和无符号整型的别名,便于代码阅读。`sbit ds=P2^3;`定义了一个位变量ds,它连接到P2口的第3位,作为温度传感器信号线。 3. `uchar code table[11]`是一个查表数组,存储了ASCII码对应的7段数码管显示值,用于将数字转换为LED显示。`uchar LED[8]`则定义了一个8位的数组,可能用于控制LED显示。 4. `void delay(uint z)`是延时函数,通过嵌套循环实现一定时间的延迟。在实际应用中,这种简单的延时方法可能不够精确,但在教学环境中足够说明基本概念。 DS18B20温度传感器是 Dallas 公司生产的一款数字温度传感器,其特点包括: - 单总线接口:仅需一个端口与微控制器通信,支持双向数据传输。 - 直接数字输出:能将温度转换为串行数字信号,简化了处理过程。 - 三引脚设计:VDD(电源)、GND(接地)和DQ(数据线)。 - 多点温度检测:同一总线上可挂接多个传感器。 - 自供电模式:在高电平时,传感器可为内部电容充电,供低电平使用。 - 工作温度范围:-55℃至+125℃,精度±0.5℃(在特定范围内)。 - 测量时间:约200毫秒。 DS18B20的内部结构包括64位ROM(包含唯一的地址),单线端口,电源检测,存储器,控制逻辑和温度传感器。其工作原理基于两个振荡器:低温度系数振荡器和高温度系数振荡器,通过计数器和斜坡累加器计算温度变化。每个温度增量都会更新温度寄存器,预置数由斜坡累加器提供,根据温度进行调整。 在实际应用中,每个DS18B20都有一个64位的光刻ROM地址,使得在同一总线上可以区分多个传感器,确保了数据通信的准确性和唯一性。这些地址包含产品类型、序列号和CRC校验码,确保了设备的可靠性和身份验证。