DS18B20数据采集程序代码
时间: 2023-09-03 10:12:53 浏览: 97
以下是基于Arduino平台的DS18B20温度传感器数据采集程序代码示例:
```
#include <OneWire.h> //引用OneWire库
#define ONE_WIRE_BUS 2 //定义DS18B20信号引脚为2
OneWire oneWire(ONE_WIRE_BUS); //初始化OneWire类
byte addr[8]; //定义8位地址数组
float temperature; //定义温度变量
void setup() {
Serial.begin(9600); //初始化串口,波特率为9600
if (!oneWire.search(addr)) { //搜索DS18B20
Serial.println("No more addresses.");
oneWire.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7]) { //校验地址是否正确
Serial.println("CRC is not valid!");
return;
}
if (addr[0] != 0x28) { //判断是否为DS18B20
Serial.println("Device is not a DS18B20!");
return;
}
oneWire.reset(); //重置
oneWire.select(addr); //选择DS18B20
oneWire.write(0x44, 1); //开始温度转换
}
void loop() {
oneWire.reset(); //重置
oneWire.select(addr); //选择DS18B20
oneWire.write(0xBE); //读取温度
byte data[12];
for (byte i = 0; i < 9; i++) {
data[i] = oneWire.read(); //读取9个字节
}
int16_t raw = (data[1] << 8) | data[0]; //将数据转换为16位整数
if (addr[1] == 0x10) { //判断是否为DS18S20
raw = raw << 3; //调整精度
if (data[7] == 0x10) { //高温位
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else { //DS18B20
byte cfg = (data[4] & 0x60); //获取分辨率
switch (cfg) {
case 0x00: raw = raw & ~7; break; //9位分辨率,转换结果右移3位
case 0x20: raw = raw & ~3; break; //10位分辨率,转换结果右移2位
case 0x40: raw = raw & ~1; break; //11位分辨率,转换结果右移1位
case 0x60: break; //12位分辨率,转换结果无需调整
}
}
temperature = (float)raw / 16.0; //将温度转换为浮点数
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
delay(1000); //每隔1秒采集一次数据
}
```
注意:以上程序仅供参考,具体实现需要根据实际情况进行调整和修改。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)