文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者

一、功能简介

本项目使用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. 1、基于51单片机智能水杯系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 针对低碳.环保生活 ...

  2. 34、基于51单片机智能垃圾桶系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 随着现代化进程的日 ...

  3. Proteus仿真51单片机生日快乐音乐播放器

    实验名称:基于51单片机音乐播放器 实验目的: 声音的音调不同是因为声音的频率不同造成的.那么,就可以通过单片机发送不同频率的脉冲信号给蜂鸣器,来达到让蜂鸣器发出不同音调声音的目的.不同频率的脉冲信号 ...

  4. 使用proteus仿真51单片机来实现十字路口红绿灯

    一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...

  5. 基于wifi控制的51单片机智能照明控制系统设计

    一.硬件方案 本设计主要由51单片机+最小系统+LCD1602液晶显示模块+GY-30亮度传感器模块+ESP-M1 wifi模块+LED照明灯电路++DS1302时钟电路+按键模块:如图: 二.设计功 ...

  6. Proteus仿真--51单片机最小系统

    1.单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路.时钟电路.复位电路. 下面着重介绍时钟 电路和复位电路. 1)时钟电路 单片机工作时,从取指令到译码 ...

  7. proteus仿真-51单片机定时器程序

    定时器0初始化和定时器中断函数 void Timer0Init() {TMOD|=0x01;//0000 0001,最后2位-工作方式的选择,这里选择16位定时器'01'TH0 = (65536-10 ...

  8. 基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)

    资料编号:134 视频讲解: 134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控芯片,可以采集当前的温湿度,并且LCD1602 ...

  9. 基于51单片机智能农业大棚恒温恒湿Proteus仿真

    资料编号:134  下面是相关功能视频演示: 134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控芯片,可以采集当前的温湿度,并 ...

最新文章

  1. php最常见代码,PHP常见算法合集代码实例
  2. python简单还是c简单_Python与C的简单比较(Python3.0)
  3. MYSQL-使用mysqldump创建数据库快照
  4. 2019/Province_C_C++_A/B/数列求值
  5. Python 判断语句 if else
  6. 蓝桥杯大赛青少年创意编程C++ 资料集
  7. C语言头文件#includestdlib.h的作用
  8. android sqlite数据库死锁,SQLite也可能出现死锁。
  9. 【空间分析-文章学习笔记】1 基于卫星数据反演及空间分析方法对由pm2.5引导的中国男性肺癌的发病率的预测
  10. 400毫米降水线每年150公里北移
  11. 【算法笔记HDU4825】Xor Sum(01字典树模版)
  12. Springboot中拦截器的使用
  13. 计算机开机pin,电脑开机时忘记pin密码怎么办?
  14. 微信小程序PNG图片去白底
  15. Avid Sibelius一款免费学习五线谱的强大软件
  16. Deep Learning学习笔记(5)——AlphaGo
  17. XXXXX was compiled with optimization - stepping may behave oddly; variables may not be available.
  18. 手机麦克风权限在哪里开启_手机麦克风权限怎么设置
  19. vue2打包兼容ie11白屏报错问题汇总
  20. (转)2010年最不能错过的101个网站

热门文章

  1. 基于可持久化内存-AEP的KV存储引擎
  2. 【转载】凹凸贴图、法线贴图、置换贴图
  3. 不知道这样可不可以得积分
  4. JavaScript While循环
  5. StarUML使用简明教程
  6. 电话营销机器人具体是怎么运行的呢?
  7. Python 高级可视化库Plotly express使用教程
  8. pycharm中安装ctypes模块
  9. AI2021下载Illustrator2021最新下载AI最新下载安装1分钟看完就会
  10. java实现12306查票_[转]java抓取12306信息实现火车余票查询示例firefox