一、基本介绍
项目名:基于单片机智能衣柜设计
项目编号:mcuclub-dz-680
单片机:STC89C52
功能简介:
1、通过DHT11检测衣柜内温湿度,当湿度大于设置最大值,进行风扇通风除湿;
2、通过DS1302获取当前时间,并能定时进行衣柜内紫外线消毒;
3、通过光照检测模块检测当前柜门开关状态;
4、衣柜门状态打开时,消毒灯关闭,LED照明灯自动打开,消毒时间内,柜门关闭进行消毒;
5、通过按键修改时间、设置消毒灯打开和关闭时间、设置湿度阈值
6、通过LCD1602显示时间、温湿度值、衣柜门状态
7、通过蓝牙将检测温湿度、时间、柜门状态、控制消毒灯、风扇、照明灯、可以设置参数阈值
二、资料总览
实物资料
三、32单片机部分资料展示
1、实物图展示
单片机型号:STM32F103C8T6
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。
2、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构图
3、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
四、系统框图
绘制软件:VISIO
五、部分程序展示
软件版本:keil5
注意:逻辑程序和驱动程序分开,分布于main.c和其他.c文件
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
if(display_num == 0) //测量界面
{
if(humi_value > humi_max*10) //湿度大于设置最大值,打开风扇
{
FAN = 0;
flag_humi = 0;
}
else
{
if(flag_humi == 0)
{
FAN = 1;
}
}
time_cnt = ds1302_buf[4] * 60+ ds1302_buf[5]; //获取当前时间,单位分钟
if(time_hour_begin*60+time_minute_begin > time_hour_end*60+time_minute_end) //开始时间>结束时间
{
if((time_hour_end*60+time_minute_end <= time_cnt) && (time_cnt < time_hour_begin*60+time_minute_begin)) //当前时间不在设置的时间内
{
flag_alarm = 0;
}
else
{
flag_alarm = 1;
}
}
else if(time_hour_begin*60+time_minute_begin < time_hour_end*60+time_minute_end) //开始时间<结束时间
{
if((time_hour_begin*60+time_minute_begin <= time_cnt) && (time_cnt < time_hour_end*60+time_minute_end)) //当前时间在设置的时间内
{
flag_alarm = 1;
}
else
{
flag_alarm = 0;
}
}
else
{
flag_alarm = 0;
}
if(LIGHT == 1) //如果衣柜门是关闭的,关照明灯
{
LED_ZM = 1;
flag_zm = 0;
if(flag_alarm == 1) //如果在定时时间之内,开消毒
{
if(flag_xd == 0)
{
LED_XD = 0;
}
}
else //如果在定时时间之外,关消毒
{
if(flag_xd == 0) //判断是否是人为打开消毒灯
{
LED_XD = 1;
}
}
}
else //如果衣柜门是打开的,关消毒
{
if(flag_zm == 0)
{
LED_ZM = 0;
}
LED_XD = 1;
flag_xd = 0;
}
}
else //设置界面:关闭正在运行的灯和风扇
{
FAN = 1;
LED_ZM = 1;
LED_XD = 1;
}
}