DS18B20温度传感器串口读取
时间: 2023-09-18 21:11:34 浏览: 53
DS18B20温度传感器使用的是一线数字接口,可以通过连接到单片机的串口来读取温度数据。下面是一个示例代码,可以通过串口读取DS18B20传感器的温度数据:
```c
#include <OneWire.h>
OneWire ds(2); // 2为单线数字接口的引脚
void setup() {
Serial.begin(9600);
}
void loop() {
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
if ( addr[0] != 0x28) {
Serial.println("Device is not a DS18B20 family device.");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
delay(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
float celsius = (float)raw / 16.0;
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" C");
delay(1000);
}
```
在这个示例代码中,我们使用了OneWire库来与DS18B20温度传感器进行通信。我们首先搜索传感器的地址,然后进行一些校验,确保我们正在与一个DS18B20传感器进行通信。
接着,我们发送了一个温度转换命令,并等待1秒钟,以确保传感器完成了温度转换。然后,我们从传感器读取温度数据,并将其转换为摄氏度表示。
最后,我们通过串口输出温度值,并延迟1秒钟。你需要将这个程序上传到你的单片机中,并将串口连接到计算机上以查看温度数据。