【Proteus仿真】【51单片机】智能电饭煲系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用继电器加热/保温模块、数码管模块、按键模块、LED指示灯、蜂鸣器模块等。
主要功能:
系统运行后,数码管默认不显示,当按下K5键选择功能模式,此时数码管会显示对应模式所需时间,且LED指示灯工作,系统默认有煮饭、煮粥、蒸、煲汤四种功能,还可按下K6键设置预约时间,通过K2和K3键修改时间,当设置好时间后,按下K4键开始,预约时间开始倒计时,当时间达到后,继电器开启加热,在所选功能时间倒计时结束后停止加热,开启保温。若不需要保温,可按下K1键关闭。
主要功能如下:
1、功能:煮饭/煮粥/蒸/煲汤
2、按键:开始/取消/功能/加减/预约
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*///功能指示灯显示
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;//开始指示灯亮TR0=1;//开启定时器RELAY_JR=0;//加热开启RELAY_BW=1;//保温关闭sys_ctrl.insul=0;} }//已开启预约else{//仅当选择好功能模式后,开启有效if(sys_ctrl.fun!=0){sys_ctrl.start=1;TR0=1;//开启定时器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){TR0=0;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 sys_demo(void)
{sys_parm_init();//系统参数初始化time0_init();//定时器初始化while(1){sys_data_set();//系统数据设置sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_fun_ctrl();//系统功能控制 }
}//定时器0中断函数
void time0() interrupt 1
{static u8 i=0;TH0=0XDC; //给定时器赋初值,定时10msTL0=0X00;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)//时间达到{TR0=0;//关闭定时器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;TR0=1;//开启定时器RELAY_JR=0;//加热开启 } }} }}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
【Proteus仿真】【51单片机】智能电饭煲系统设计相关推荐
- 1、基于51单片机智能水杯系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 针对低碳.环保生活 ...
- 34、基于51单片机智能垃圾桶系统设计
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 随着现代化进程的日 ...
- Proteus仿真51单片机生日快乐音乐播放器
实验名称:基于51单片机音乐播放器 实验目的: 声音的音调不同是因为声音的频率不同造成的.那么,就可以通过单片机发送不同频率的脉冲信号给蜂鸣器,来达到让蜂鸣器发出不同音调声音的目的.不同频率的脉冲信号 ...
- 使用proteus仿真51单片机来实现十字路口红绿灯
一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...
- 基于wifi控制的51单片机智能照明控制系统设计
一.硬件方案 本设计主要由51单片机+最小系统+LCD1602液晶显示模块+GY-30亮度传感器模块+ESP-M1 wifi模块+LED照明灯电路++DS1302时钟电路+按键模块:如图: 二.设计功 ...
- Proteus仿真--51单片机最小系统
1.单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路.时钟电路.复位电路. 下面着重介绍时钟 电路和复位电路. 1)时钟电路 单片机工作时,从取指令到译码 ...
- proteus仿真-51单片机定时器程序
定时器0初始化和定时器中断函数 void Timer0Init() {TMOD|=0x01;//0000 0001,最后2位-工作方式的选择,这里选择16位定时器'01'TH0 = (65536-10 ...
- 基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)
资料编号:134 视频讲解: 134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控芯片,可以采集当前的温湿度,并且LCD1602 ...
- 基于51单片机智能农业大棚恒温恒湿Proteus仿真
资料编号:134 下面是相关功能视频演示: 134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控芯片,可以采集当前的温湿度,并 ...
最新文章
- php最常见代码,PHP常见算法合集代码实例
- python简单还是c简单_Python与C的简单比较(Python3.0)
- MYSQL-使用mysqldump创建数据库快照
- 2019/Province_C_C++_A/B/数列求值
- Python 判断语句 if else
- 蓝桥杯大赛青少年创意编程C++ 资料集
- C语言头文件#includestdlib.h的作用
- android sqlite数据库死锁,SQLite也可能出现死锁。
- 【空间分析-文章学习笔记】1 基于卫星数据反演及空间分析方法对由pm2.5引导的中国男性肺癌的发病率的预测
- 400毫米降水线每年150公里北移
- 【算法笔记HDU4825】Xor Sum(01字典树模版)
- Springboot中拦截器的使用
- 计算机开机pin,电脑开机时忘记pin密码怎么办?
- 微信小程序PNG图片去白底
- Avid Sibelius一款免费学习五线谱的强大软件
- Deep Learning学习笔记(5)——AlphaGo
- XXXXX was compiled with optimization - stepping may behave oddly; variables may not be available.
- 手机麦克风权限在哪里开启_手机麦克风权限怎么设置
- vue2打包兼容ie11白屏报错问题汇总
- (转)2010年最不能错过的101个网站