系统实测图:

源代码如下(可直接通过Arduino IDE传到开发板):
// 引入所需库文件
#include <OneWire.h> // 单总线通信协议库
#include <DallasTemperature.h> // DS18B20传感器库
#include <LiquidCrystal.h> // LCD1602驱动库
// 配置DS18B20传感器引脚
#define ONE_WIRE_BUS 11 // 温度传感器数据线连接的数字引脚11
// 初始化单总线协议实例
OneWire oneWire(ONE_WIRE_BUS); // 创建OneWire实例,用于与传感器通信
// 将单总线协议传递给Dallas Temperature库
DallasTemperature sensors(&oneWire); // 使用DallasTemperature库处理传感器数据
// 配置LCD1602引脚参数(根据实际接线修改)
const int rs = 12, en = 2, d0 = 3, d1 = 4, d2 = 5, d3 = 6, d4 = 7, d5 = 8, d6 = 9, d7 = 10; // 数据引脚D0-D7接3-10
// 创建LiquidCrystal实例(8位模式)
LiquidCrystal lcd(rs, en, d0, d1, d2, d3, d4, d5, d6, d7); // 初始化LCD对象
void setup() {
//Serial.begin(115200); // 提高串口速率用于调试
//pinMode(ONE_WIRE_BUS, INPUT_PULLUP); // 启用内部上拉电阻(关键修复)
// 初始化温度传感器
sensors.begin(); // 启动DS18B20传感器通信
// 设置LCD显示行列数(1602为16列2行)
lcd.begin(16, 2); // 初始化LCD,设置显示尺寸为16x2
// 显示初始信息
lcd.print("Temperature:"); // 在第一行显示固定标题
}
void loop() {
// 发送温度读取请求
sensors.requestTemperatures(); // 向传感器发送温度转换命令
// 获取温度值(假设使用第一个设备)
float temp = sensors.getTempCByIndex(0); // 获取索引0的传感器摄氏温度值
// 设置光标到第二行第一个位置
lcd.setCursor(0, 1); // 参数为列(0-15)、行(0-1)
// 清除第二行旧数据(覆盖16个字符宽度)
lcd.print(" "); // 写入16个空格清除残留字符
// 重新定位光标并显示温度
lcd.setCursor(0, 1); // 再次定位到第二行起始位置
lcd.print(temp, 1); // 显示温度值,保留1位小数
lcd.write(0xDF); // 显示°符号(ASCII码223)
lcd.print("C"); // 添加温度单位
// 延时2秒后刷新数据
delay(2000); // 降低刷新频率,避免屏幕闪烁
}
2206

被折叠的 条评论
为什么被折叠?



