一、功能简介
本项目使用proteus8.12仿真stm32单片机控制器,使用继电器加热/保温模块、数码管模块、按键模块、led指示灯、蜂鸣器模块等。
主要功能:
系统运行后,数码管默认不显示,当按下k5键选择功能模式,此时数码管会显示对应模式所需时间,且led指示灯工作,系统默认有煮饭、煮粥、蒸、煲汤四种功能,还可按下k6键设置预约时间,通过k2和k3键修改时间,当设置好时间后,按下k4键开始,预约时间开始倒计时,当时间达到后,继电器开启加热,在所选功能时间倒计时结束后停止加热,开启保温。若不需要保温,可按下k1键关闭。
主要功能如下:
(1)功能:煮饭、煮粥、蒸、煲汤;
(2)按键:开始、取消、功能、加减、预约;
二、软件设计
//功能指示灯显示
void _fun_led_show(u8 sta)
{
switch(sta)
{
case 1://煮饭
led_zf=0;led_zz=1;led_z=1;led_bt=1;
break;
case 2://煮粥
led_zf=1;led_zz=0;led_z=1;led_bt=1;
break;
case 3://蒸
led_zf=1;led_zz=1;led_z=0;led_bt=1;
break;
case 4://煲汤
led_zf=1;led_zz=1;led_z=1;led_bt=0;
break;
}
}
//功能选择时间初始化
void _fun_time_init(u8 fun)
{
switch(fun)
{
case 1://煮饭
sys_ctrl.hour=0;sys_ctrl.min=0;sys_ctrl.sec=10;
break;
case 2://煮粥
sys_ctrl.hour=0;sys_ctrl.min=0;sys_ctrl.sec=7;
break;
case 3://蒸
sys_ctrl.hour=0;sys_ctrl.min=0;sys_ctrl.sec=5;
break;
case 4://煲汤
sys_ctrl.hour=0;sys_ctrl.min=0;sys_ctrl.sec=4;
break;
}
}
//系统数据设置
void sys_data_set(void)
{
u8 key=0;
key=key_scan(0);
//还未开启时,按键控制
if(sys_ctrl.start==0)
{
//功能选择
if(key==key5_press)
{
sys_ctrl.fun++;
if(sys_ctrl.fun>4)sys_ctrl.fun=1;
_fun_led_show(sys_ctrl.fun);//功能指示灯显示
_fun_time_init(sys_ctrl.fun);//设置初始时间
}
//开始工作
else if(key==key4_press)
{
//未开启预约
if(sys_ctrl.order==0)
{
//仅当选择好功能模式后,开启有效
if(sys_ctrl.fun!=0)
{
sys_ctrl.start=1;
led_ks=0;//开始指示灯亮
tim_cmd(tim2,enable);//开启定时器
relay_jr=0;//加热开启
relay_bw=1;//保温关闭
sys_ctrl.insul=0;
}
}
//已开启预约
else
{
//仅当选择好功能模式后,开启有效
if(sys_ctrl.fun!=0)
{
sys_ctrl.start=1;
tim_cmd(tim2,enable);//开启定时器
relay_bw=1;//保温关闭
sys_ctrl.insul=0;
}
}
}
//保温/取消
else if(key==key1_press)
{
//还未开启预约,保温
if(sys_ctrl.order==0)
{
sys_ctrl.insul=!sys_ctrl.insul;
relay_bw=!relay_bw;
}
//已开启预约,取消
else
{
sys_ctrl.order=0;
led_yy=1;
}
}
//预约
else if(key==key6_press)
{
//已选择好功能模式,可以开始预约时间
if(sys_ctrl.fun!=0)
{
sys_ctrl.order=1;
led_yy=0;
}
}
//加
else if(key==key2_press)
{
//已开启预约,可以设置时间
if(sys_ctrl.order==1)
{
sys_ctrl.time[1]+=30;//加30分钟
if(sys_ctrl.time[1]>=60)
{
sys_ctrl.time[1]=0;
sys_ctrl.time[0]++;//加1小时
if(sys_ctrl.time[0]>23)sys_ctrl.time[0]=0;
}
}
}
//减
else if(key==key3_press)
{
//已开启预约,可以设置时间
if(sys_ctrl.order==1)
{
sys_ctrl.time[1]-=30;//减30分钟
if(sys_ctrl.time[1]<0)
{
sys_ctrl.time[1]=30;
sys_ctrl.time[0]--;//减1小时
if(sys_ctrl.time[0]=100)//1s到达
{
i=0;
//未开启预约,倒计时
if(sys_ctrl.order==0)
{
sys_ctrl.sec--;
if(sys_ctrl.sec<0)
{
sys_ctrl.sec=59;
sys_ctrl.min--;
if(sys_ctrl.min<0)
{
sys_ctrl.min=59;
sys_ctrl.hour--;
if(sys_ctrl.hour<=0)
sys_ctrl.hour=0;
}
}
else if(sys_ctrl.sec==0)
{
if(sys_ctrl.min==0)
{
if(sys_ctrl.hour==0)//时间达到
{
tim_cmd(tim2,disable);//关闭定时器
sys_parm_init();
sys_ctrl.okflag=1;
sys_ctrl.insul=1;//保温标记
relay_bw=0;//保温开启
beep=0;//蜂鸣器提示
delay_ms(1000);
beep=1;
}
}
}
}
//已开启预约,倒计时
else
{
sys_ctrl.time[2]--;
if(sys_ctrl.time[2]<0)
{
sys_ctrl.time[2]=59;
sys_ctrl.time[1]--;
if(sys_ctrl.time[1]<0)
{
sys_ctrl.time[1]=59;
sys_ctrl.time[0]--;
if(sys_ctrl.time[0]<=0)
sys_ctrl.time[0]=0;
}
}
else if(sys_ctrl.time[2]==0)
{
if(sys_ctrl.time[1]==0)
{
if(sys_ctrl.time[0]==0)//时间达到
{
sys_ctrl.order=0;
sys_ctrl.okflag=0;
sys_ctrl.time[0]=0;sys_ctrl.time[1]=0;sys_ctrl.time[2]=0;
led_ks=0;led_yy=1;//开始指示灯亮
sys_ctrl.okflag=1;
sys_ctrl.start=1;
tim_cmd(tim2,enable);//开启定时器
relay_jr=0;//加热开启
}
}
}
}
}
}
tim_clearitpendingbit(tim2,tim_it_update);
}
三、实验现象
Konqueror/embedded向ARM-Linux平台
IOT技术的5大验证和挑战
今年全球 5G 手机渗透率有望达 18%
2018让特斯拉真正意义上成为车企 为传统车厂定义互联网公司
无绳吸尘器哪个牌子好?看完本篇科普文再买不迟
STM32单片机智能电饭煲系统设计方案
主机通过发送设备地址后由应答位确定该设备是否存在
新能源车自燃事件接连发生,新能源车为何会如此敏感
小米6亮银版颜值对比HTCU11,四曲面玻璃镜面VS扭曲电镀伪镜面
航盛致力于成为世界级、国际化的汽车电子领军企业
5G毫米波产业的新风口在哪里?
汽车电动化加速汽车芯片迎重大发展,昂科烧录机持续为汽车芯片赋能
HPC网络的发展与RoCE的诞生
深入浅出地介绍集成、Bagging、随机森林、特征重要性
区块链的起源与发展是怎样的
美科学家研发出一款具有触觉感应系统的鞋子
燧原科技致力于搭建国内开源开放的算力产业生态
高压断路器灭弧介质种类
电位器式传感器结构图解,电位器式电阻传感器结构原理图解
PCB制板过孔大小怎样来选择