用arduino写一个DS18B20读取温度显示在LCD1602上
时间: 2023-03-25 15:02:34 浏览: 151
可以使用以下代码实现:
#include <OneWire.h>
#include <LiquidCrystal.h>
// 定义 DS18B20 引脚
#define ONE_WIRE_BUS 2
// 初始化 OneWire 对象
OneWire oneWire(ONE_WIRE_BUS);
// 定义 DS18B20 地址
byte addr[8];
// 初始化 LiquidCrystal 对象
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// 初始化串口
Serial.begin(960);
// 初始化 LCD
lcd.begin(16, 2);
// 搜索 DS18B20 地址
if (!oneWire.search(addr)) {
Serial.println("No more addresses.");
oneWire.reset_search();
delay(250);
return;
}
// 配置 DS18B20 分辨率
oneWire.reset();
oneWire.select(addr);
oneWire.write(x4E);
oneWire.write(x00);
oneWire.write(x1F);
oneWire.reset();
oneWire.select(addr);
oneWire.write(x48);
oneWire.reset();
}
void loop() {
// 发送温度转换命令
oneWire.reset();
oneWire.select(addr);
oneWire.write(x44);
// 等待转换完成
delay(750);
// 读取温度
oneWire.reset();
oneWire.select(addr);
oneWire.write(xBE);
byte data[9];
for (byte i = ; i < 9; i++) {
data[i] = oneWire.read();
}
int16_t raw = (data[1] << 8) | data[];
float temp = (float)raw / 16.;
// 显示温度
lcd.setCursor(, );
lcd.print("Temperature:");
lcd.setCursor(, 1);
lcd.print(temp);
lcd.print(" C");
// 输出温度到串口
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
// 等待一段时间
delay(100);
}
阅读全文