### DS18B20 数字温度传感器详解 #### 一、DS18B20 简介 DS18B20 是一款由 DALLAS 半导体公司生产的单线数字温度传感器,这款传感器是业界首款支持“一线总线”(1-Wire)接口的温度传感器。其独特的设计使得用户能够方便地搭建温度监测网络,并且具有极高的灵活性和性价比。 #### 二、DS18B20 的特性与优势 ##### 1. **一线总线接口** DS18B20 支持一线总线接口,这意味着可以通过单一的数据线进行通信,无需复杂的布线,极大地简化了安装和维护的过程。 ##### 2. **广泛的温度测量范围** DS18B20 可以在 -55°C 至 +125°C 的范围内进行精确的温度测量。在 -10°C 至 +85°C 的范围内,精度可以达到 ±0.5°C,非常适用于多种工业和消费电子产品的温度监测场景。 ##### 3. **高精度和可编程分辨率** 用户可以根据需要设置 DS18B20 的分辨率,最高可达 12 位(精度 ±0.5°C),最低为 9 位。这种可编程性使得 DS18B20 能够适应不同的应用需求。 ##### 4. **内置 EEPROM 存储** DS18B20 内置了 EEPROM 存储器,用于存储用户的设置参数,例如报警温度阈值和分辨率设置,这些设置即使在断电后仍然保持不变。 ##### 5. **64 位 ROM 地址** 每个 DS18B20 都有一个唯一的 64 位 ROM 地址,确保在网络中每个传感器都可以被唯一识别。 #### 三、DS18B20 内部结构 DS18B20 的内部结构主要包括: - **64 位光刻 ROM**:存储每个传感器的唯一地址。 - **温度传感器**:负责温度的检测。 - **温度报警触发器 TH 和 TL**:用于设置温度的上下限报警值。 - **高速暂存器**:用于临时存储温度测量结果和其他数据。 #### 四、DS18B20 数据处理 DS18B20 的温度数据以 12 位二进制形式存储,其中最高位表示符号位,其余位表示数值。对于正温度,只需将数值乘以 0.0625 得到实际温度;对于负温度,则需要先对数值取反加 1 后再乘以 0.0625 来获得实际温度。 #### 五、DS18B20 控制方法 DS18B20 的控制方法包括初始化、ROM 操作命令和存储器操作命令。其中,初始化是对 DS18B20 进行通信的前提;ROM 操作命令用于识别网络中的传感器;存储器操作命令则用于执行温度测量等具体功能。 #### 六、DS18B20 与单片机的连接 DS18B20 与单片机的连接方式有两种: 1. **外部供电**:VCC 接外部电源,GND 接地,I/O 与单片机 I/O 线相连。 2. **寄生电源供电**:UDD 接地,GND 接地,I/O 与单片机 I/O 线相连。无论哪种方式,I/O 口线都需要接一个大约 5kΩ 的上拉电阻。 #### 七、DS18B20 的 C51 程序示例 下面给出一个简化的 C51 程序示例,用于演示如何与 DS18B20 进行基本的交互。 ```c #include <AT89X52.H> #include <INTRINS.H> // 定义显示相关的代码 unsigned char code_display_bit[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; unsigned char code_display_code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00, 0x40}; unsigned char dot_code[32] = {0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 38, 41, 44, 48, 50, 53, 56, 59, 63, 66, 69, 72, 75, 78, 81, 84, 88, 91, 94, 97}; // 以下为 DS18B20 的相关操作函数和主程序逻辑 ``` ### 总结 DS18B20 是一款功能强大、使用灵活的数字温度传感器,它的一线总线接口使其成为构建复杂温度监测网络的理想选择。通过简单的编程,可以轻松实现温度监测和报警等功能,非常适合应用于各种环境和过程控制系统中。
- zhoumingyigege2015-05-02谢谢了,正是需要的
- tiane_v2015-02-05挺好的正好需要呢。
- 小黑不白2019-12-10挺好的正好需要呢。
- ChuckieZhu2021-01-30刚刚下载,我说句公道话。 代码能不能用再说,我还没测试,感觉像是不知道从哪里复制的,自己都没测试。特别是C语言,函数声明里的命名有空格(比如Void write command to ds18b20,在文档的第8页。不信你自己下载看看)?你敢说你测试过?汇编语言我也不用,所以不知道对不对,但是C语言的错误太明显了。 C语言那么多代码,一个注释都没,我说你厉害还是垃圾呢?
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 每周质量安全排查报告.docx
- 排水报装接入申请表.docx
- 评估报告公示公众意见表.doc
- 评审、登记备案情况表.docx
- 墙板隐蔽前监理检查记录.docx
- 抢救室、输液室周带教计划表.docx
- 人防工程主体结构验收前监理人员检查记录表.docx
- 人防工程竣工验收前监理人员检查记录.docx
- 人防门框及临战封堵框常规数据检查表.docx
- 人防门扇常规数据检查表.docx
- 社区工作者岗位表.docx
- 涉及消防的建筑材料、构配件和设备的进场试验报告汇总表.docx
- 涉及消防的各分部分项工程消防查验结果表.docx
- 十级伤残鉴定标准表.docx
- 市标化优良工地检查自评表(施工、监理企业用表).docx
- 输液结束(拔针)流程表.docx