单总线DS18B20搜索与通信命令实现
4星 · 超过85%的资源 需积分: 9 88 浏览量
更新于2024-11-02
收藏 4KB TXT 举报
本文档描述了如何在单总线上搜索多个DS18B20温度传感器的操作,提供了相应的命令定义和基本的IO操作函数。DS18B20是一种常用的数字温度传感器,它可以直接通过单总线(1-Wire)接口与微控制器通信,进行数据传输。
在单总线协议中,多个DS18B20可以通过一根数据线与微控制器进行通信,这极大地节省了硬件资源。以下是一些关键知识点:
1. **单总线协议**:单总线协议是一种低速、低功耗、低成本的通信协议,只需要一根数据线即可实现双向通信。每个DS18B20设备都有一个唯一的64位ROM地址,允许在同一条线上连接多个设备。
2. **DS18B20命令**:
- `skiprom_cmd1820`:跳过ROM命令,用于与已知地址的设备通信,无需进行ROM搜索。
- `rdrom_cmd1820`:读取ROM命令,用于识别总线上的设备并获取其ROM地址。
- `search_cmd1820`:搜索命令,用于在总线上查找新的DS18B20设备。
- `matchrom_cmd1820`:匹配ROM命令,用于指定一个特定的ROM地址,确保只与该设备通信。
- `convert_cmd1820`:转换命令,启动DS18B20的温度转换过程。
- `wrscrar_cmd1820`:写存储器命令,向DS18B20的用户可写寄存器写入数据。
- `rdscrat_cmd1820`:读存储器命令,从DS18B20的用户可读寄存器读取数据。
- `copyscrat_cmd1820`:复制存储器命令,用于将DS18B20的寄存器内容复制到另一个位置。
- `callscrat_cmd1820`:调用存储器命令,执行DS18B20内部的程序。
3. **IO操作函数**:
- `reset_1820`:初始化单总线,发送复位脉冲,使所有设备进入等待状态。
- `wr_bit1820`:写入单总线的位数据,通过控制DQ引脚实现数据的0或1状态。
- `delay_10us` 和 `delay_ms`:延迟函数,用于满足单总线协议的时序要求。
4. **变量和宏定义**:
- `uchar` 和 `uint`:无符号字符和无符号整型,用于存储数据。
- `ON0` 和 `OFF1`:定义常量,用于设置逻辑状态。
- `TRUE` 和 `FALSE`:布尔值,表示逻辑真和假。
- `scrabuf` 和 `ROM_NO`:缓冲区,用于存储DS18B20的寄存器数据和ROM地址。
- `last_discr_index` 和 `last_fam_discr_index`:记录搜索过程中发现的设备索引。
5. **搜索流程**:
在搜索DS18B20设备时,通常会先进行复位操作,然后发送搜索命令,通过比较设备的ROM地址来找到目标设备。这些命令和宏定义简化了这个过程,使得编写单总线通信的代码更加简洁。
通过这些函数和命令,开发者可以构建一个能够搜索、识别和控制单总线上多个DS18B20的系统,从而实现温度监测和其他相关应用。
2018-08-15 上传
2015-12-10 上传
2021-09-10 上传
2014-06-16 上传
2021-09-10 上传
2021-10-15 上传
2021-10-10 上传
2022-07-06 上传
yangbowx111
- 粉丝: 0
- 资源: 1
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常