1. 系统总体功能设计
点击链接下载资料:https://download.csdn.net/download/m0_51061483/91956674
本系统《基于单片机的便携式温湿度检测烘干机设计》以单片机为核心控制单元,旨在实现便携式衣物快速烘干与智能化安全控制。系统通过实时采集温湿度信息,自动调节电热丝与风扇的运行状态,使得烘干过程既高效又安全。同时,用户可通过矩阵键盘输入所需参数,如烘干时间、目标温度与湿度阈值等,并可在液晶显示屏上实时查看系统运行状态。整个系统实现了从数据采集、逻辑处理到执行输出的全流程自动化。
系统的主要功能包括:
- 实时检测烘干袋内温度与湿度;
- 根据检测结果自动调节加热与通风;
- 用户可设定目标参数与定时时间;
- 超过安全阈值时自动断电保护;
- 液晶屏动态显示当前温湿度与剩余时间;
- 系统体积小、功耗低,便于携带与使用。
系统的整体框架分为硬件电路设计与软件程序设计两部分,硬件电路负责信号采集与控制执行,软件程序负责逻辑判断、数据处理与人机交互,实现智能化烘干控制。
2. 系统电路设计
系统电路以单片机为核心,围绕温湿度检测模块、加热风扇控制模块、矩阵键盘输入模块、液晶显示模块、电源与保护模块等构建完整的控制系统。每个功能模块相互协作,确保系统能够稳定、准确、可靠地运行。
2.1 单片机最小系统设计
本系统选用STC89C52单片机作为主控芯片。该单片机具有8KB Flash存储空间、512B RAM、32个I/O口以及3个定时器/计数器,完全满足烘干机的控制需求。
单片机最小系统由以下部分构成:
- 时钟电路:采用12MHz晶振和两只30pF电容组成稳定的时钟源;
- 复位电路:通过电容+电阻+按键组成的上电复位电路,确保系统通电后能够正常初始化;
- 电源输入:单片机采用5V直流电源供电,通过DC-DC降压模块或线性稳压芯片(如7805)从主电源12V转换而来。
该部分电路是系统的控制核心,负责协调各模块工作,并根据传感器数据作出实时决策。
2.2 温湿度检测模块设计
温湿度检测模块是烘干机的关键感知单元,用于检测烘干环境的温度与湿度变化。本系统采用DHT11数字温湿度传感器。
DHT11具有以下特点:
- 测温范围:0~50℃;
- 测湿范围:20%~90%RH;
- 数字信号输出,抗干扰能力强;
- 通信方式为单总线,易于与单片机连接。
DHT11通过数据线与单片机的一个I/O口(如P2.0)相连,单片机通过时序协议采集其数据。由于DHT11输出为串行数据,单片机在程序中需实现起始信号与数据读取过程,并将温湿度值进行解析与显示。
在系统运行过程中,DHT11会周期性地检测烘干袋内部的温湿度。当温度低于设定阈值时,系统启动加热;当湿度高时,风扇加速运行以增强空气流动。
2.3 加热与风扇驱动模块设计
加热与通风模块是烘干机的执行部分,用于实现快速烘干。系统采用电热丝加热元件 与直流电机驱动风扇的组合方式。
由于单片机I/O口输出电流有限(一般小于20mA),无法直接驱动高功率负载,因此系统引入继电器驱动电路 和三极管控制电路:
- 单片机输出控制信号至三极管基极(如9013或8050);
- 三极管导通后驱动继电器线圈;
- 继电器吸合后闭合主电路,控制电热丝或电机通电;
- 当温度或湿度达到设定值时,单片机发出关闭信号,继电器断开电路。
该模块保证了大功率器件与控制电路之间的隔离,提高了系统的安全性与可靠性。
2.4 矩阵键盘输入模块设计
为了实现参数设置与模式选择,本系统采用4×4矩阵键盘作为人机交互输入设备。矩阵键盘通过8根线(4行+4列)与单片机的I/O口连接,如P1口。
键盘的功能定义如下:
- 数字键:用于输入时间与阈值;
- 功能键:"确认"、"取消"、"模式"、"启动/停止";
- 每个按键触发中断或查询检测,系统根据输入执行相应操作。
矩阵键盘通过行列扫描法实现按键检测,单片机周期性输出行信号并读取列电平状态,判断按下的按键位置,实现多功能输入。
2.5 液晶显示模块设计
为方便用户查看烘干状态,本系统采用LCD1602液晶显示模块。LCD1602可显示两行字符,每行16个字符,足以显示温湿度信息与剩余时间。
显示内容示例:
Temp: 35.6C Humi: 45%
Time: 08:30 Run...
LCD1602通过8位或4位总线方式与单片机连接,系统采用4位数据总线模式以节省I/O口。液晶模块由程序定期刷新,显示当前温湿度数据、设定参数及烘干状态。
2.6 电源与保护电路设计
系统供电部分采用12V直流电源,分别为单片机、继电器、电热丝与风扇提供稳定电压:
- 单片机供电:12V经稳压芯片7805降压至5V;
- 风扇与加热器供电:直接使用12V主电源;
- 保护电路:在电源输入端加入自恢复保险丝与二极管防反接保护;
- 散热与电流保护:对电热丝电路增加热敏电阻与温控保险丝,防止过热。
该电源系统设计保证了设备的安全运行,并有效延长系统寿命。
3. 系统程序设计
程序设计是整个系统的逻辑核心,负责协调各模块的工作流程,实现数据采集、逻辑判断、执行控制与人机交互等功能。程序采用模块化结构设计,便于后期调试与扩展。
3.1 主程序设计
主程序负责系统初始化、模块调用及主循环调度。初始化部分包括端口配置、定时器初始化、液晶初始化、DHT11初始化、键盘初始化等。主循环则不断采集温湿度数据,刷新显示,并根据用户输入与设定参数执行控制。
主程序框架如下:
c
#include <reg52.h>
#include "lcd1602.h"
#include "dht11.h"
#include "key.h"
#include "relay.h"
float temperature, humidity;
unsigned int dry_time;
void main()
{
LCD_Init();
DHT11_Init();
Key_Init();
Relay_Init();
LCD_ShowString(0,0,"Smart Dryer");
delay_ms(1000);
LCD_Clear();
while(1)
{
DHT11_Read(&temperature,&humidity);
LCD_ShowFloat(0,0,"Temp:",temperature);
LCD_ShowFloat(0,1,"Humi:",humidity);
LCD_ShowNum(10,1,dry_time,3);
Key_Scan();
Control_Process();
delay_ms(500);
}
}
主循环中调用DHT11_Read()
函数采集数据,LCD_ShowFloat()
负责数据显示,Key_Scan()
处理用户输入,Control_Process()
根据当前状态执行控制逻辑。
3.2 温湿度检测程序设计
DHT11的通信协议为单总线方式,主机先发出起始信号,随后DHT11响应并依次输出40位数据(16位湿度+16位温度+8位校验)。
核心读取程序如下:
c
void DHT11_Read(float *temp, float *humi)
{
unsigned char buf[5];
unsigned char i, j;
DHT11_Start();
if(DHT11_Check() == 0)
{
for(i=0;i<5;i++)
{
buf[i]=0;
for(j=0;j<8;j++)
{
while(!DATA);
delay_us(30);
if(DATA) buf[i]|=(0x80>>j);
while(DATA);
}
}
if(buf[4]==buf[0]+buf[1]+buf[2]+buf[3])
{
*humi=buf[0]+buf[1]*0.1;
*temp=buf[2]+buf[3]*0.1;
}
}
}
该函数完成从DHT11读取温湿度并进行校验的全过程,保证数据精确可靠。
3.3 加热与风扇控制程序设计
控制逻辑根据检测到的温湿度值与用户设定阈值自动调节电热丝与风扇的运行状态:
c
void Control_Process()
{
if(temperature < set_temp && humidity > set_humi)
{
Heater_On();
Fan_On();
}
else if(temperature >= set_temp && humidity <= set_humi)
{
Heater_Off();
Fan_Off();
}
else if(temperature > set_temp)
{
Heater_Off();
Fan_On();
}
}
逻辑说明:
- 温度低、湿度高:加热与风扇同时开启;
- 达到目标温度、湿度后关闭;
- 若温度过高则立即关闭加热,仅保留风扇散热。
3.4 矩阵键盘输入程序设计
矩阵键盘采用行列扫描方式检测按键:
c
unsigned char Key_Scan()
{
unsigned char key_val=0xFF;
unsigned char row,col;
for(row=0;row<4;row++)
{
P1 = ~(0x10<<row);
col = P1 & 0x0F;
if(col != 0x0F)
{
delay_ms(10);
if((P1 & 0x0F) != 0x0F)
{
key_val = row*4 + (3 - (col & 0x0F));
while((P1 & 0x0F) != 0x0F);
}
}
}
return key_val;
}
检测到按键后,根据按键编号执行相应操作,如调整时间、温湿度阈值、启动或停止烘干程序。
3.5 液晶显示程序设计
液晶显示模块用于显示系统状态与检测数据,程序通过调用LCD1602驱动函数完成字符显示与刷新:
c
void LCD_ShowFloat(unsigned char x, unsigned char y, char *title, float value)
{
char buf[10];
LCD_ShowString(x, y, title);
sprintf(buf, "%.1f", value);
LCD_ShowString(x + strlen(title), y, buf);
}
该函数可在任意坐标位置显示浮点型温湿度数据,保证信息实时更新。
3.6 定时控制与安全保护设计
系统内置定时功能,当设定时间到达或温湿度超出安全阈值时,自动关闭电源。
c
void Timer_Process()
{
if(run_flag)
{
dry_time--;
if(dry_time==0)
{
Relay_Off();
run_flag=0;
LCD_ShowString(0,1,"Done!");
}
}
}
此外,在温度超过安全上限(如70℃)时,程序立即执行保护:
c
if(temperature > 70.0)
{
Heater_Off();
Fan_On();
LCD_ShowString(0,1,"Overheat!");
}
4. 系统运行与功能实现
当系统通电后,单片机自动初始化并进入主程序循环。用户可通过矩阵键盘设置烘干时间与目标温湿度值。液晶屏实时显示设定参数与当前检测值。当系统运行时:
- 若温度低于设定值且湿度较高,则电热丝与风扇协同工作;
- 当湿度逐渐下降、温度上升到目标值时,系统自动关闭加热并进入保温状态;
- 到达定时时间或检测异常时,系统自动停止工作并显示提示信息。
整个烘干过程实现了温湿度的动态控制与安全保护,使烘干更加高效、节能、安全。
5. 总结
本系统通过STC89C52单片机为核心,集成温湿度检测、智能控制、定时保护及人机交互于一体,实现了便携式烘干设备的智能化设计。硬件电路结构紧凑、可靠,软件程序逻辑清晰、稳定。系统不仅能满足家庭与户外的快速衣物烘干需求,还具备扩展潜力,可加入蓝牙远程控制或自动调节算法,进一步提升智能化水平。