基于单片机的智能水瓶温度控制系统

1. 基于单片机的智能水瓶温度控制系统设计

点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081492


1.1 系统功能概述

本系统设计了一种基于单片机控制的智能水瓶温度控制系统,通过温度检测、数码显示、按键调节、档位指示、蜂鸣报警等功能,实现了水温的智能控制和安全保护。系统采用STC89C52单片机作为核心控制器,利用DS18B20数字温度传感器实时监测水温,通过软件逻辑实现自动加热与断电控制,从而保证饮用水温度适宜并防止干烧。

该系统主要实现以下功能:

  1. 温度实时显示:通过两位数码管实时显示当前出水温度。
  2. 功率档位调节:通过按键实现0~9档加热功率设置,用户可根据需求自由调节。
  3. 档位指示功能:设置三颗LED指示灯,显示当前功率档位范围(1-4档亮一灯、5-8档亮两灯、9档亮三灯、0档不亮)。
  4. 温度自动控制:当水温高于65℃时停止加热并蜂鸣报警;温度下降到50℃以下自动恢复加热。
  5. 安全防干烧保护:当内胆温度超过105℃时,系统立即关闭加热电路,防止干烧损坏设备。

该系统结构简单、操作方便、控制精确,适合用于智能家居、保温杯、加热水壶等场景,具有较高的实用价值。


2. 系统电路设计

整个系统硬件设计以STC89C52单片机为核心,主要由以下部分组成:

  1. 单片机最小系统模块
  2. 温度检测模块(DS18B20)
  3. 数码管显示模块
  4. 功率档位指示模块
  5. 按键输入模块
  6. 蜂鸣器报警模块
  7. 加热控制模块
  8. 电源模块

下面对每个模块进行详细介绍。


2.1 单片机最小系统模块

系统采用 STC89C52RC 单片机 作为主控芯片。该单片机基于8051内核,具备8KB Flash存储空间和256B RAM,性能稳定,资源丰富,适合中小型控制系统使用。

最小系统主要包括:

  • 时钟电路:采用12MHz晶振及两个30pF电容,保证单片机稳定运行;

  • 复位电路:由上拉电阻、电容及复位按键组成,确保上电和异常复位可靠;

  • I/O资源分配

    • P0口:数码管段选控制;
    • P2口:数码管位选与LED档位指示;
    • P1口:按键输入与蜂鸣器控制;
    • P3口:温度传感器与加热继电器控制信号输入输出。

单片机负责温度采集、逻辑判断、档位显示和输出控制,是整个系统的核心控制单元。


2.2 温度检测模块(DS18B20)

温度采集部分采用 DS18B20 数字温度传感器,该传感器精度高、抗干扰能力强,并且通过单总线与单片机通信,只需一根数据线即可完成温度读取。

其主要特点包括:

  • 测量范围:-55℃~125℃;
  • 精度:±0.5℃;
  • 输出格式:直接输出数字信号;
  • 通信方式:单总线方式,减少连线复杂度;
  • 供电方式:支持寄生电源模式和独立电源模式。

系统中采用独立电源模式供电,输出的数据通过P3.7端口输入单片机。主程序中定时读取温度值,通过软件延时控制采样周期。


2.3 数码管显示模块

为了直观显示温度和档位信息,系统采用 两位共阴极数码管

显示方式如下:

  • 温度显示模式:默认显示实时水温;
  • 功率档位显示模式:按下"+"或"-"键后短暂显示设定档位;
  • 异常显示模式:当检测到温度传感器错误或超温时,显示"EE"提示。

数码管段选信号连接至P0口,位选信号通过P2口控制。采用动态扫描显示技术,通过高速轮询实现两位数码管交替显示,既节省I/O资源,又能降低功耗。


2.4 功率档位指示模块

为了直观反映加热功率强度,系统设置了三颗LED指示灯,分别对应低、中、高功率范围。控制逻辑如下表所示:

档位范围 指示灯亮起数量 说明
0档 0个 停止加热
1~4档 1个 低功率加热
5~8档 2个 中功率加热
9档 3个 高功率加热

LED通过P2.3、P2.4、P2.5引脚控制,单片机根据档位值动态点亮对应LED灯,实现功率范围可视化显示。


2.5 按键输入模块

系统设计了三个轻触按键,分别为:

  • 电源开关键(S1):控制系统整体工作状态;
  • "+"键(S2):增加功率档位;
  • "-"键(S3):降低功率档位。

按键采用上拉电阻输入设计,按下时输出低电平。程序中通过键值扫描判断按键状态,并设置软件防抖延时,确保操作稳定可靠。

按键逻辑说明:

  • 当系统关闭时,按下电源键可启动系统;
  • 在运行状态下,按"+"键档位依次递增至9档;
  • 按"-"键档位依次递减至0档;
  • 档位调整后数码管短暂显示档位数字,再恢复显示温度。

2.6 蜂鸣器报警模块

蜂鸣器作为提示与报警输出装置,由单片机P1.7口控制。当系统检测到以下情况时蜂鸣器响起:

  1. 出水温度超过65℃,提示用户水温过高;
  2. 内胆温度超过105℃,提示干烧风险;
  3. 传感器故障或通信错误时发出连续报警。

程序中通过PWM信号控制蜂鸣器的鸣叫频率,使报警更加明显。


2.7 加热控制模块

加热部分通过继电器控制电热丝的通断,继电器由NPN三极管驱动。

控制逻辑如下:

  • 当系统检测到温度低于设定范围且电源打开时,继电器吸合,加热器通电;
  • 当温度超过上限或检测到干烧时,继电器立即断开,停止加热;
  • 不同功率档位对应不同占空比的PWM信号,从而实现加热功率控制。

为防止继电器抖动,程序中采用温度滞回算法,即高低阈值分别为65℃与50℃,避免频繁开关。


2.8 电源模块

电源部分采用 LM7805 稳压芯片 将输入12V电压稳定为5V,供单片机及外围电路使用。蜂鸣器和继电器使用12V供电,采用分压与二极管隔离设计,确保电路安全与稳定。


3. 程序设计

系统软件采用 C语言 编写,在 Keil μVision 环境下开发。程序由主控制流程和多个功能模块组成,结构清晰、逻辑合理。主要包括:

  1. 主程序逻辑控制
  2. 温度检测模块程序
  3. 按键检测与档位调节程序
  4. 数码管显示程序
  5. 功率指示与加热控制程序
  6. 报警与安全保护程序

3.1 主程序逻辑控制

主程序实现系统整体运行流程:初始化 → 按键检测 → 温度采集 → 功率控制 → 显示输出 → 报警判断。

循环运行,实时响应用户操作与温度变化。

c 复制代码
#include <reg52.h>
#include "ds18b20.h"

#define uchar unsigned char
#define uint unsigned int

sbit Relay = P3^0;
sbit Buzzer = P1^7;

uchar power_level = 0;
bit system_on = 0;
float water_temp = 0;

void main() {
    Init_System();
    while(1) {
        Key_Scan();
        if(system_on) {
            water_temp = DS18B20_Read();
            Display_Update(water_temp, power_level);
            Control_Logic();
        }
    }
}

3.2 温度检测模块程序

该部分负责从DS18B20获取当前温度值,并返回浮点数结果,程序调用时可直接得到摄氏温度。

c 复制代码
float DS18B20_Read() {
    int temp;
    uchar LSB, MSB;
    DS18B20_Start();
    Write_DS18B20(0xCC);
    Write_DS18B20(0x44);
    DelayMs(750);
    DS18B20_Start();
    Write_DS18B20(0xCC);
    Write_DS18B20(0xBE);
    LSB = Read_DS18B20();
    MSB = Read_DS18B20();
    temp = (MSB << 8) | LSB;
    return temp * 0.0625;
}

3.3 按键检测与档位调节程序

按键模块通过扫描方式检测按键动作,采用延时防抖。根据按键不同执行相应操作。

c 复制代码
void Key_Scan() {
    if(P1_0 == 0) { DelayMs(20); if(P1_0 == 0) system_on = !system_on; }
    if(system_on) {
        if(P1_1 == 0) { DelayMs(20); if(P1_1 == 0 && power_level < 9) power_level++; }
        if(P1_2 == 0) { DelayMs(20); if(P1_2 == 0 && power_level > 0) power_level--; }
    }
}

3.4 数码管显示程序

系统采用动态扫描显示,温度和档位均通过查表显示段码数据。

c 复制代码
void Display_Update(float temp, uchar level) {
    uchar t1 = (int)temp / 10;
    uchar t2 = (int)temp % 10;
    Display_Num(t1, t2);
}

3.5 功率指示与加热控制程序

该部分根据档位控制LED显示及加热强度,同时判断温度范围,防止过热。

c 复制代码
void Control_Logic() {
    if(water_temp > 105) {
        Relay = 0;
        Buzzer = 1;
    } else if(water_temp > 65) {
        Relay = 0;
        Buzzer = 1;
    } else if(water_temp < 50 && system_on) {
        Relay = 1;
        Buzzer = 0;
    } else {
        Relay = 0;
        Buzzer = 0;
    }
    LED_Display(power_level);
}

3.6 报警与安全保护程序

该模块监测异常情况并输出蜂鸣提示,保证系统安全运行。

c 复制代码
void Alarm_Check() {
    if(water_temp > 105) {
        Buzzer = 1;
        Display_Error();
    }
}

4. 系统运行原理与总结

当系统上电后,单片机首先初始化所有模块。用户按下电源键后,系统启动温度检测与加热控制流程。

DS18B20实时采集水温,并将数据传给单片机;单片机根据温度判断当前加热状态并控制继电器通断;用户可通过按键调整功率档位,不同档位对应不同指示灯亮起。

当温度超过65℃时系统自动停止加热并发出报警声,防止烫伤;当温度降至50℃以下时自动恢复加热,维持适宜饮用温度。当检测到内胆温度超过105℃时,系统立即切断电源,防止干烧和设备损坏。

整个系统通过软硬件结合实现了智能温度调节、功率调控与安全保护,具备操作简便、控制精确、安全可靠等优点,具有良好的应用推广前景。

相关推荐
点灯小铭3 小时前
基于单片机的四点位水位控制与报警系统设计
单片机·嵌入式硬件·毕业设计·课程设计
是大强3 小时前
肖特基二极管作用及应用
单片机·嵌入式硬件
计算机毕业设计小帅4 小时前
【2026计算机毕业设计】基于微信小程序的英语在线学习系统
学习·微信小程序·毕业设计·课程设计
是大强4 小时前
stm32 vdd引脚和vss引脚连锡会短路
stm32·单片机·嵌入式硬件
hazy1k4 小时前
K230基础-录放视频
网络·人工智能·stm32·单片机·嵌入式硬件·音视频·k230
李永奉5 小时前
STM32-STM32最小系统板介绍
stm32·单片机·嵌入式硬件
蜀黍@猿7 小时前
【GD32】软件I2C
单片机·嵌入式硬件·mcu
小鱼儿电子7 小时前
18-基于STM32的智能医嘱手环设计与实现
stm32·单片机·物联网·医嘱手环
IT毕设梦工厂9 小时前
大数据毕业设计选题推荐-基于大数据的人体生理指标管理数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·信息可视化·spark·毕业设计·源码·bigdata