基于arduino uno+lcd1602+DS18B20的温度监测系统

系统实测图:

源代码如下(可直接通过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);                // 降低刷新频率,避免屏幕闪烁
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值