51单片机驱动DS18B20数字温度传感器读写与控制示例
4星 · 超过85%的资源 需积分: 10 48 浏览量
更新于2024-11-16
收藏 4KB TXT 举报
本资源是一份基于51单片机(一种常用的嵌入式微控制器)的数字温度传感器DS18B20控制程序。DS18B20是一款一次性编程的数字温度传感器,常用于精确测量环境温度。该程序包括多个关键函数,如`delay`、`Reset`、`read_bit`、`write_bit`、`write_byte`、`read_byte`、`Get_temp`以及LED显示函数`Display_LED`。
1. **Delay函数** (`delay(unsigned int N)`): 提供了一个简单的延时函数,通过循环结构实现计时,用于确保后续操作的时间间隔满足DS18B20通信协议的时序要求。
2. **Reset函数** (`Reset()`): 用于复位DS18B20设备,包括拉低DQ线(数据线)到地,保持至少480us到960us的时间,然后置高DQ线并等待响应。这个函数返回`deceive_ready`信号,表示传感器是否准备好接收新的命令。
3. **读写位操作**:
- `read_bit(void)` 和 `write_bit(unsigned char bitval)`:分别用于读取和写入DS18B20的单个比特。`read_bit`会控制时序以读取传感器状态,而`write_bit`则在写入高电平时进行适当的延迟。
4. **字节操作**:
- `write_byte(unsigned char val)` 和 `read_byte(void)`:负责将一个字节值发送到或从DS18B20接收,它们通过位操作来逐位发送和接收数据,确保通信的正确性。
5. **获取温度值** (`Get_temp(void)`): 这是核心部分,首先复位传感器,然后发送跳过ROM命令,启动温度转换,接着读取温度寄存器,将低8位和高8位温度值存储到`TMPL`和`TMPH`变量中。
6. **LED显示** (`Display_LED(unsigned int num)`): 用于将数字温度值转换为LED数码管显示的两位十进制数值。
7. **主函数** (`main()`): 永久循环,不断调用`Get_temp()`获取温度值,然后更新LED显示。
整个程序通过精确控制时序和数据传输,实现了对DS18B20温度传感器的读取和数据处理,从而实现单片机对环境温度的监控和实时反馈。这个程序对于学习和实践嵌入式系统中的硬件接口以及数据采集非常有帮助。
2132 浏览量
3560 浏览量
2022-11-30 上传
点击了解资源详情
414 浏览量
104 浏览量
155 浏览量
865 浏览量
2144 浏览量
ytdfrog
- 粉丝: 0
- 资源: 3
最新资源
- 基于Cordova + Framework7 + React + Webpack构建混合App.zip
- CoronaGame_front
- 无线传感网络节点能耗模型.zip
- 蓝色扁平化商务工作汇报图表下载PPT模板
- ember-bootstrap-controls:一个Ember组件库,它使用Bootstrap4表单并输入样式和html
- PWABuilder-CLI:用于应用程序生成的Node.js工具
- XY轴点焊机_三菱伺服_
- 毕业设计,基于人脸识别的智能家居控制系统.zip
- rust-reference-book:中文版的Rust参考
- assignment-problem:匈牙利方法的分配问题
- 微立体建筑行业工作汇报图表大全PPT模板
- 电脑使用时间管理 ManicTime-4.3.rar
- firebase-firestore-lite:浏览器的轻量级云Firestore库
- bouquins:calibre 电子书管理器的 Web 前端
- MFC中修改Button控件字体、字体大小、背景色、背景图片
- Baymin是一个基于Android系统开发的可以用于语音聊天的智能机器人,它能够陪你聊天,帮你查天气,查路线、车票.zip