STM32单片机智能电饭煲系统设计方案

发布时间:2023-08-08  

一、功能简介

本项目使用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]<0)sys_ctrl.time[0]=23;

}

}

}

}

//开始工作时,按键控制

else

{

//取消

if(key==KEY1_PRESS)

{

TIM_Cmd(TIM2,DISABLE);

sys_parm_init();

}

}

}

//系统数据获取

void sys_data_get(void)

{

}

//系统数据显示

void sys_data_show(void)

{

u8 buf[8];

//还未开启时,功能选择时,数码管显示对应功能时间

if(sys_ctrl.start==0)

{

//进入功能选择时,数据处理

if(sys_ctrl.fun!=0)

{

//未开启预约,时间显示

if(sys_ctrl.order==0)

{

buf[0]=gsmg_code[sys_ctrl.hour/10];

buf[1]=gsmg_code[sys_ctrl.hour%10];

buf[2]=0x40;

buf[3]=gsmg_code[sys_ctrl.min/10];

buf[4]=gsmg_code[sys_ctrl.min%10];

buf[5]=0x40;

buf[6]=gsmg_code[sys_ctrl.sec/10];

buf[7]=gsmg_code[sys_ctrl.sec%10];

//数码管显示

smg_display(buf,1);

}

//开启预约,数码管显示预约时间

else

{

buf[0]=gsmg_code[sys_ctrl.time[0]/10];

buf[1]=gsmg_code[sys_ctrl.time[0]%10];

buf[2]=0x40;

buf[3]=gsmg_code[sys_ctrl.time[1]/10];

buf[4]=gsmg_code[sys_ctrl.time[1]%10];

buf[5]=0x40;

buf[6]=gsmg_code[sys_ctrl.time[2]/10];

buf[7]=gsmg_code[sys_ctrl.time[2]%10];

//数码管显示

smg_display(buf,1);

}

}

}

//开启后,时间显示

else

{

//未开启预约,时间显示

if(sys_ctrl.order==0)

{

buf[0]=gsmg_code[sys_ctrl.hour/10];

buf[1]=gsmg_code[sys_ctrl.hour%10];

buf[2]=0x40;

buf[3]=gsmg_code[sys_ctrl.min/10];

buf[4]=gsmg_code[sys_ctrl.min%10];

buf[5]=0x40;

buf[6]=gsmg_code[sys_ctrl.sec/10];

buf[7]=gsmg_code[sys_ctrl.sec%10];

//数码管显示

smg_display(buf,1);

}

//已开启预约,显示预约时间

else

{

buf[0]=gsmg_code[sys_ctrl.time[0]/10];

buf[1]=gsmg_code[sys_ctrl.time[0]%10];

buf[2]=0x40;

buf[3]=gsmg_code[sys_ctrl.time[1]/10];

buf[4]=gsmg_code[sys_ctrl.time[1]%10];

buf[5]=0x40;

buf[6]=gsmg_code[sys_ctrl.time[2]/10];

buf[7]=gsmg_code[sys_ctrl.time[2]%10];

//数码管显示

smg_display(buf,1);

}

}

}

//系统功能控制

void sys_fun_ctrl(void)

{

}

//应用控制系统

void appdemo_show(void)

{

KEY_Init();

smg_init();

BEEP_Init();

ctrl_pin_init();

TIM2_Init(500-1,71);//定时10ms

sys_parm_init();//系统参数初始化

while(1)

{

sys_data_set();//系统数据设置

sys_data_get();//系统数据获取

sys_data_show();//系统数据显示

sys_fun_ctrl();//系统功能控制

}

}

/*******************************************************************************

  • 函 数 名 : TIM2_IRQHandler

  • 函数功能 : TIM2中断函数

  • 输 入 : 无

  • 输 出 : 无

*******************************************************************************/

void TIM2_IRQHandler(void)

{

static u8 i=0;

if(TIM_GetITStatus(TIM2,TIM_IT_Update))

{

i++;

if(i>=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);

}

三、实验现象

图片

图片

图片

图片


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    数据采集系统,可以提升电饭锅行业的产品研发和测试水平,使企业借助系统研究和开发新型电饭锅,加快研发速度、推进高端技术研发,提升产品技术含量和质量,助力电饭煲产业的转型升级有重要意义[2]。   1 智能电饭煲......
    融合嵌入式技术和无线通讯技术,不仅实现了煮饭的远程智能化控制,同时保证了煮饭的良好口感。   1 全自动电饭煲的工作原理   设计的电饭煲在未工作时处于待机状态,当SIM900A模块接收到用户手机发来的短信或GPRS......
    选一口好锅,吃一口好饭; 对于经常自己下厨的消费者而言,日常生活早已离不开电饭锅,其也算得上是家中必备的厨房电器。在经历了早期的探索和混乱之后,高端电饭煲从传统功能的单一化到现在逐渐普及的智能......
    WTK6900H语音识别芯片在电饭煲的应用;传统的电饭煲大多数使用按键的方式进行操作,有部分厂家已经开始尝试开发语音识别控制的电饭煲,利用声控的方式进行与机器交互,智能语音控制的电饭煲,可以......
    中微爱芯16键触摸芯片AIP5916应用于电饭煲;在当下生活中,电饭煲的功能越来越丰富,一些常用的功能例如煮饭、保温、BB粥等通常都用一键启动的方式,给使用者提供了极大的方便。中微爱芯16个触......
    NRK3301语音识别芯片在电饭煲的应用方案;智能语音控制的电饭煲,可以直接用语音操控,无需联网,无需下载APP您就可以通过语音与电饭煲进行互动。 智能语音控制可操控电饭煲的启动、用时设定、预约......
    外媒:日本松下计划在今年6月将电饭煲生产线移至中国杭州;1月6日,据环球时报综合日经新闻、彭博社等媒体报道,日本(Panasonic)计划在今年6月,将电饭煲生产线移至中国杭州。本文......
    豆浆机=九阳 今天的九阳不只有豆浆机,“太空科技”新品发布会颠覆认知;我们为什么要买有涂层的电饭煲?我们为什么要买比电钻还刺耳的破壁机?我们为什么要买加热速度慢、口感又“干巴巴”的空气炸锅?因为......
    你知道日常生活中哪些电器会用到R型电源变压器吗?;日常生活中我们随处可见的电器设备都会用到R型电源变压器,小到手机充电器、电视机、空调、电饭煲等,大到电梯、自动化设备、工厂机床、医疗器械、矿用......
    新增HT66F3184 / HT66F3194成员,分别为HT66F3185与HT66F3195的精简版,能为客户提供多元化的产品规格选择。此产品非常适用于各式家电产品,例如:咖啡机、电热水壶、电茶炉、电饭煲......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>