1 系统功能介绍
本设计实现了一种 基于 51 单片机的智能加湿器控制系统。随着现代生活水平的提高,人们对居住和办公环境的舒适度要求越来越高,空气湿度和温度的调节逐渐成为家庭和办公自动化的重要组成部分。传统加湿器仅能实现简单的加湿功能,缺乏对环境参数的实时监测和安全防护。本系统在传统加湿器的基础上,加入了 温湿度检测、水位检测、防干烧保护、声光报警、手动和自动模式切换 等功能,提升了设备的智能化和安全性。
系统的主要功能如下:
-
实时监测与显示
- 通过 DHT11 温湿度传感器实时检测环境温度和湿度;
- 通过水位检测电路获取当前水位高度;
- LCD1602 液晶屏显示温度、湿度、水位及工作模式(手动/自动)。
-
手动与自动模式切换
- 手动模式下用户可以通过按键直接控制加湿器工作;
- 自动模式下系统根据阈值自动控制加湿器启停,并进行报警提示。
-
阈值设定功能
- 用户可通过按键设定温度上下限、湿度上下限、水位报警值;
- 设置完成后,系统根据这些阈值进行逻辑判断。
-
报警与安全保护功能
- 当检测到温度超出安全范围时,蜂鸣器和指示灯发出声光报警;
- 当湿度低于下限时,系统报警并自动启动加湿器;
- 当湿度超过上限时,加湿器停止工作,避免空气过湿;
- 当检测到缺水时,立即停止加湿器工作,防止干烧损坏。
-
按键功能
- S1:设置键,进入设置界面;
- S2:加键,数值+1;
- S3:减键,数值-1。
2 系统电路设计
2.1 单片机最小系统
核心控制单元采用 STC89C52RC 单片机,其具备丰富的 I/O 接口资源,能够满足温湿度采集、LCD 显示、继电器控制和按键检测等多任务需求。最小系统包括:
- 单片机 STC89C52RC;
- 晶振电路,采用 11.0592MHz 晶振及两只 30pF 电容;
- 电源电路,提供 +5V 稳定电源;
- 复位电路,确保单片机上电初始化正常。
2.2 温湿度检测模块(DHT11)
DHT11 传感器是一种常见的数字温湿度检测模块:
- 工作电压:3.3V–5V;
- 通信方式:单总线;
- 输出数据:8 位湿度整数+8 位湿度小数+8 位温度整数+8 位温度小数+8 位校验和。
DHT11 与单片机 P3.7 端口相连,通过时序采集协议获取温湿度数据,再进行数据解析。
2.3 水位检测模块
水位检测部分采用简单的水位电极传感器或浮球开关:
- 当水位足够时,传感器输出高电平;
- 当水位不足时,输出低电平。
单片机通过 GPIO 读取该电平状态,结合逻辑控制继电器,从而防止加湿器在缺水状态下工作。
2.4 显示模块(LCD1602)
LCD1602 用于显示环境参数和工作状态,主要显示内容包括:
- 实时温度值;
- 实时湿度值;
- 当前水位状态(正常/缺水);
- 工作模式(手动/自动);
- 当前报警状态。
LCD1602 通过 4 位数据接口模式与单片机相连,节省了 I/O 资源。
2.5 报警模块(蜂鸣器+LED 指示灯)
系统设计了一个有源蜂鸣器和一个红色 LED 灯作为报警输出装置:
- 当系统检测到温度或湿度异常时,蜂鸣器发出声响,LED 灯闪烁,形成声光报警;
- 当故障解除或用户处理完毕后,报警自动停止。
2.6 继电器驱动与加湿器电路
继电器用于控制加湿器电源:
- 单片机输出低电平驱动三极管导通,继电器线圈得电吸合,接通加湿器电源;
- 单片机输出高电平时,继电器断开,加湿器停止工作。
这种方式确保了加湿器工作时的隔离性与安全性。
2.7 按键输入电路
系统设计三个独立按键:
- S1(设置键):进入阈值设定模式;
- S2(加键):数值增加;
- S3(减键):数值减少。
按键采用下拉电阻方式与 GPIO 相连,单片机通过轮询方式或中断方式进行检测。
3 程序设计
3.1 主程序框架
#include <reg52.h>
#include "lcd1602.h"
#include "dht11.h"
#include "relay.h"
#include "key.h"
#include "beep.h"unsigned char mode = 0; // 0=自动模式 1=手动模式
unsigned int temp, humi, water;
unsigned int T_min=15, T_max=35;
unsigned int H_min=40, H_max=70;void main()
{LCD_Init();DHT11_Init();Relay_Init();Beep_Init();Key_Init();while(1){DHT11_Read(&temp,&humi);water = Read_WaterLevel();Display_Info(temp,humi,water,mode);Key_Scan(); // 按键检测Auto_Control(); // 自动控制逻辑}
}
3.2 温湿度采集程序
bit DHT11_Read(unsigned int *t, unsigned int *h)
{unsigned char temp_h, temp_l, humi_h, humi_l, check;// 发送起始信号并接收数据,略*t = temp_h;*h = humi_h;return 1;
}
3.3 水位检测程序
unsigned int Read_WaterLevel(void)
{if(P3 & 0x01) // P3.0 接水位传感器return 1; // 正常elsereturn 0; // 缺水
}
3.4 自动控制逻辑
void Auto_Control(void)
{if(mode == 0) // 自动模式{if(temp < T_min || temp > T_max){Beep_On();LED_On();}else{Beep_Off();LED_Off();}if(humi < H_min && water == 1){Relay_On();Beep_On();}else if(humi >= H_min && humi <= H_max){Relay_On();Beep_Off();}else if(humi > H_max){Relay_Off();}if(water == 0){Relay_Off();Beep_On();}}
}
3.5 按键设置程序
void Key_Scan(void)
{if(S1 == 0) // 设置键{Delay(10);if(S1 == 0){mode = !mode; // 手动/自动切换}}if(S2 == 0) // 加键{Delay(10);if(S2 == 0) { H_min++; }}if(S3 == 0) // 减键{Delay(10);if(S3 == 0) { H_min--; }}
}
3.6 LCD 显示程序
void Display_Info(unsigned int t, unsigned int h, unsigned int w, unsigned char m)
{LCD_ShowString(0,0,"T:");LCD_ShowNum(2,0,t,2);LCD_ShowString(6,0,"H:");LCD_ShowNum(8,0,h,2);LCD_ShowString(0,1,"W:");if(w) LCD_ShowString(2,1,"OK");else LCD_ShowString(2,1,"LOW");if(m==0) LCD_ShowString(8,1,"AUTO");else LCD_ShowString(8,1,"MANU");
}
4 总结
本设计基于 51 单片机,构建了一个具有 温湿度检测、水位检测、防干烧保护、手动/自动模式切换、声光报警、LCD 显示 等多功能的智能加湿器系统。其优点主要体现在以下几个方面:
- 安全性高:通过水位检测与自动停机机制,有效防止干烧;
- 智能化强:支持阈值设定和自动模式,使设备能根据环境变化自动调节;
- 交互性好:LCD1602 实时显示参数,按键方便用户设置,报警提示直观;
- 扩展性强:可进一步增加 WiFi 模块,实现远程监控与控制。
该设计不仅能满足家庭生活中的空气湿度调节需求,还可应用于实验室、仓储等场合,具有较高的实用价值和推广意义。