DS18B20 C51 温度传感器源代码实现
需积分: 9 142 浏览量
更新于2025-01-03
收藏 69KB PDF 举报
"DS18B20 C51源代码是用于操作DS18B20数字温度传感器的程序,该传感器能够精确测量温度并通过单总线接口与微控制器进行通信。C51是针对8051系列微控制器的编程语言。此代码包含了初始化串行通信、发送数据以及延时函数等关键功能。"
DS18B20是一种流行的数字温度传感器,由 Dallas Semiconductor(现 Maxim Integrated)制造。它能够提供高达9位的分辨率(±0.5°C)或更高精度的温度读数,并具有单线通信协议,这意味着只需要一根数据线就能与微控制器进行双向通信,简化了硬件设计。
在给定的源代码中,可以看到以下几个关键部分:
1. **头文件**:`#include "reg51.h"`、`#include "INTRINS.H"` 和 `#include "LCD.h"` 分别包含了8051寄存器定义、内联函数支持和LCD显示相关的头文件,表明这个程序可能同时用于显示温度数据到LCD屏幕上。
2. **定义**:`sbit TMDAT = P1^7;` 和 `sbit RUN_LED = P1^6;` 定义了P1口的第7位作为DS18B20的数据线,第6位可能用于运行状态的LED指示。
3. **全局变量**:`unsigned char currSensorNo=0;` 用于存储当前传感器的编号,可能在有多个DS18B20并联时使用。数组 `unsigned char code ID[2][8]` 存储了传感器的ROM ID,每个DS18B20都有唯一的8字节ROM,用于识别和寻址。
4. **函数**:
- `serial_initial()` 函数初始化串行通信设置,这里设置TMOD寄存器为模式2(8位UART),SCON设置为方式1(UART),PCON设置为正常模式,然后设置波特率定时器TL1和TH1,并启动定时器1。
- `send()` 函数用于发送数据到DS18B20,接受一个计数和一个数据缓冲区,遍历缓冲区并将每个字节发送出去,等待发送中断标志TI清零后继续发送下一个字节。
- `Delay_ms()` 和 `Delay_count()` 函数提供了延时功能,分别用于毫秒级和更精确的计数级延时。
5. **中断处理**:虽然代码中没有显示,但在实际应用中,可能需要处理串行中断来接收DS18B20的响应和数据。
通过这段源代码,开发者可以了解如何在C51环境下配置8051微控制器与DS18B20传感器的通信,并获取温度数据。在实际项目中,还需要实现解析DS18B20返回的温度数据、错误检查、以及可能的多传感器管理等功能。
151 浏览量
2010-08-08 上传
2021-10-02 上传
574 浏览量
2010-04-06 上传
2022-09-20 上传
yuhua88888
- 粉丝: 0
- 资源: 3
最新资源
- cpp-httplib:仅C ++标头的HTTPHTTPS服务器和客户端库
- 纽约市出租车费用预测:Kaggle竞争,以建立模型来预测纽约市出租车费
- 行业资料-电子功用-半导体结构和形成电容电路元件的方法的介绍分析.rar
- 海康视频在线播放m3u8及调试工具.zip
- e.pozt.it-crx插件
- grunt-xml-sitemap:[已弃用-参见https
- typesense:快速,耐错字的模糊搜索引擎,用于构建令人愉悦的搜索体验:high_voltage::magnifying_glass_tilted_left:
- APPLE皮肤模块3.0(for button)可自定义绘制按钮-易语言
- liangeng.github.io
- 行业资料-电子功用-半导体电路布置及其生产方法的介绍分析.rar
- ApCS2020-21
- hulkbenchmark.github.io:HULK基准测试网站
- 文本菜单 v2.4-易语言
- Raidbots Companion-crx插件
- sample-spring-microservices:不同分支中的许多示例,展示了如何使用Spring Boot,Spring Cloud,Zipkin,Zuul,Eureka,Hystrix,Kubernetes,Elastic Stack和更多工具创建微服务
- 联想lenovo Ideapad Y480网卡驱动程序 v2.1.0.7 官方版