最近设计了一个项目基于单片机的洗碗机系统,与大家分享一下:

一、基本介绍

项目名:洗碗机
项目编号:mcuclub-jj-020
单片机类型:STC89C52
具体功能:
1、清洗过程:加水(5s)——加洗涤剂(3s)——加热(3s)——清洗(10s)——排水(5s)——加水(5s)——清洗(10s)——排水(5s)——加热烘干(3s)——消毒(3s)(6个继电器模拟)
2、通过DS18B20检测温度,若温度高于设定最大阈值,进行声光报警,并结束清洗
3、通过按键设置温度最大值、启停或直接结束清洗
4、通过显示屏显示测量值、当前清洗状态。
扩展功能:通过蓝牙模块将测量数据发送到手机端,并可以控制启停或直接结束清洗

二、51实物图

单片机型号:STC89C52

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

三、51仿真图

仿真软件版本:proteus8.9

电路连线方式:网络标号连线方式

注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样

四、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

五、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

六、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

七、系统框图

本设计以单片机为核心控制器,加上其他模块一起组成此次设计洗碗机的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由三部分组成,第一部分是温度检测模块,通过该模块检测当前的水温;第二部分是按键模块,通过该模块可以切换界面、设置阈值、切换模式等;第三部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是继电器模块,通过六个继电器分别控制加水、加洗涤剂、加热、清洗、排水、消毒;第三部分是声光报警模块,检测到温度大于设置的温度最大值,进行声光报警。除此之外,蓝牙模块既作为输入又作为输出,蓝牙模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令控制继电器的工作及其模式的切换。具体系统框图如图所示。

八、软件设计流程

系统的主流程图如图所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,包括切换界面、设置阈值等,并可以将检测的数据传输到手机,用户也可以通过手机发送控制控制洗碗机是否工作;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取测量值,并通过蓝牙模块将监测的数据传输到手机端,用户也可以通过手机端发送指令,设备根据用户发送的指令执行对应的处理;紧接着进入第三个函数显示函数,该函数显示监测值及阈值;最后进入第四个函数处理函数,温度过高停止工作,步骤0:第一次加水,步骤1:加洗涤剂 ,步骤2:第一次加热,步骤3:第一次清洗,步骤4:第一次排水,步骤3:第二次加水,步骤6:第二次清洗,步骤7:第二次排水,步骤8:第二次加热,步骤9:消毒,结束清洗,等待。

九、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

void Manage_function(void)
{if(flag_display == 0){if(flag_timer_begin == 1)                            //倒计时开始,每1s总时间-1{if(flag_1s == 1){flag_1s = 0;if(time_all != 0)time_all--;}} if(temp_value > temp_max *10)                    //温度过高停止工作{flag_step = 10;flag_begin = 0;if(time_num % 10 == 0){LED = ~LED;BEEP = ~BEEP;}}else{LED = 1;BEEP = 1;}       if(flag_begin == 1)                                       //洗碗机开始{flag_timer_begin = 1;switch(flag_step){case 0:                                                     //步骤0:第一次加水              if(time_all > (time_heat*2 + time_level*1 + time_rinse*2 + time_drain*2 + time_disinfect+time_xidi)){RELAY_JS = 0;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                 }else{flag_step = 1;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;     }break;case 1:                                                      //步骤1:加洗涤剂   if(time_all > (time_heat*2 + time_level*1 + time_rinse*2 + time_drain*2 + time_disinfect))               {                   RELAY_JS = 1;                  RELAY_JXD = 0;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 2;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 2:                                                      //步骤2:第一次加热if(time_all > (time_heat*1 + time_level*1 + time_rinse*2 + time_drain*2 + time_disinfect))             {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 0;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 3;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 3:                                                      //步骤3:第一次清洗if(time_all > (time_heat*1 + time_level*1 + time_rinse*1 + time_drain*2 + time_disinfect))             {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 0;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 4;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 4:                                                      //步骤4:第一次排水if(time_all > (time_heat*1 + time_level*1 + time_rinse*1 + time_drain*1 + time_disinfect))             {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 0;RELAY_XD = 1; }else{flag_step = 5;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 5:                                                      //步骤3:第二次加水if(time_all > (time_heat*1 + time_rinse*1 + time_drain*1 + time_disinfect))             {RELAY_JS = 0;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 6;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break; case 6:                                                     //步骤6:第二次清洗if(time_all > (time_heat*1+ time_drain*1 + time_disinfect))              {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 0;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 7;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;             case 7:                                                     //步骤7:第二次排水if(time_all > (time_heat*1 + time_disinfect))             {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 0;RELAY_XD = 1; }else{flag_step = 8;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 8:                                                      //步骤8:第二次加热if(time_all > (time_disinfect))                {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 0;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1; }else{flag_step = 9;RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 9:                                                      //步骤9:消毒if(time_all > 0)              {RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 0; }else{flag_step = 10;RELAY_JS = 1;                    RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                     }break;case 10:                                                     //步骤10:结束清洗,等待RELAY_JS = 1;                  RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1; time_all = time_heat*2 + time_level*2 + time_rinse*2 + time_drain*2 + time_disinfect+time_xidi;               //总时间=加水时间*2+加热时间*2+清洗时间*2+排水时间*2+消毒时间+洗涤剂时间flag_begin = 0;break;default:break;}}else{RELAY_JS = 1;                 RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;                 flag_timer_begin = 0;  }}else{flag_begin = 0;     LED = 1;BEEP = 1;RELAY_JS = 1;                   RELAY_JXD = 1;RELAY_JR = 1;RELAY_QX = 1;RELAY_PS = 1;RELAY_XD = 1;         }
}

资料请点击跳转到官网下载

【单片机毕业设计】【mcuclub-jj-020】基于单片机的洗碗机的设计相关推荐

  1. 基于单片机的洗碗机控制器

    设计简介: 本设计是基于单片机的洗碗机控制器,主要实现以下功能: LCD1602显示温度.温度最大值以及状态 按键设置温度最大值 洗碗过程:进水-->加热-->排水-->冲洗--&g ...

  2. 【分享】基于单片机嵌入式的家用智能节水淋浴控制器的设计-基于单片机的电子贺卡控制系统设计-基于单片机的倒计时牌控制系统设计-基于单片机的彩灯控制器系统设计-多模式彩灯-单片机的八路路数字电压表控制设计

    1334基于单片机嵌入式的家用智能节水淋浴控制器的设计-全套毕设课设设计资料 三个ds18b20分别采集进水口热水  冷水 和温水的水温,然后分别显示出来,按下开始按键,系统初始化,自动设置出水温度为 ...

  3. 基于51单片机的多功能洗碗机(Protues仿真)

    本项目是以AT89C51最小系统为核心,外接DS18B20温度传感器.OVEN加热棒.LCD1604显示屏.ADC0832模数转换器模拟浊度传感器.L298和MOTOR当电机模块.电机模块用于模拟洗碗 ...

  4. 51单片机智能全自动多功能洗碗机加热放水烘干紫外消毒

    实践制作DIY- GC0089-智能全自动多功能洗碗机一.功能说明: 基于51单片机设计-智能全自动多功能洗碗机 功能介绍: 硬件组成: STC89C52最小系统板 +LCD1602显示器+水位传感器 ...

  5. STM32单片机智能全自动多功能洗碗机加热放水烘干紫外消毒

    实践制作DIY- GC0090-全自动多功能洗碗机 一.功能说明: 基于STM32单片机设计-全自动多功能洗碗机 功能介绍: 硬件组成: STM32F103C系列最小系统板 +LCD1602显示器+水 ...

  6. 电影点评系统论文java_毕业设计(论文)-基于web的电影点评系统分析与设计.docx...

    毕业设计(论文) 论文题目 基于web的电影点评系统分析与设计 thesis Topic Movie reviews system analysis and design based on web A ...

  7. 单片机声光电子琴程序流程图_基于单片机的智能家居控制系统毕业设计

    次毕业设计主要包括硬件端和软件端,硬件端功能如下: 使用 DS1302 模块产生时钟数据并实现时间和日历实时显示: 使用 DS18B20 模块检测周围环境温度并实时显示: 使用烟雾和光敏传感器模块对房 ...

  8. 【设计方案分享】基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-基于单片机乒乓球游戏机控制系统设计-基于单片机温度监测监控报警系统设计-基于单片机矩阵键盘的电子密码锁设计

    820基于单片机温度监测监控报警系统设计-设计资料 温度监测器功能描述: 1.主控芯片用的是51单片机(STC89C51). 2.使用温度传感器DS18b20采集温度. 3.用1602液晶显示显示温度 ...

  9. 基于单片机乒乓球游戏机控制系统设计-基于单片机矩阵键盘的电子密码锁设计-基于单片机温度监测监控报警系统设计-基于单片机钞票自动智能识别系统设计-设计资料【转发分享】

    819基于单片机乒乓球游戏机控制系统设计-设计资料下载 乒乓球游戏机设计任务为: (1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球. (2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移 ...

最新文章

  1. RedHat Enterprise 5.1下OpenLDAP的配置及PAMNSS的配置
  2. 记录一下CUDNN配置
  3. Kali Linux NetHunter教程Kali NetHunter支持的设备和ROMs
  4. Oracle Database的安装与卸载
  5. 【PP操作手册】计划订单转生产订单
  6. 求1~n这n个整数十进制表示中1出现的次数
  7. 英雄帖!移动云首批最有价值专家(MVP)招募开始了!
  8. 【资源下载】《Pytorch模型训练实现教程》(附下载链接)
  9. python基础之内置异常对象
  10. java显示参数,Java中的隐式参数和显示参数实例详解
  11. 报错:/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.29.5/UITableView.m:7943解决方法
  12. 重置winsock目录
  13. 智能语言-中科院分词系统ICTCLAS(NLPIR)
  14. 深度linux清理空间,怎样清理内存缓存
  15. SQL 数据库学习路线推荐
  16. Redhat8.0 安装web consol、可视化管理工具
  17. G. Columns Swaps(并查集)
  18. 算法练习-个人所得税
  19. 10年研发总结和期许
  20. AVR单片机开发2——流水灯及仿真

热门文章

  1. java毕业设计博物馆交流平台Mybatis+系统+数据库+调试部署
  2. 女同事:你居然还在用 try catch 处理异常? 有点Low啊
  3. Stream List 的排序
  4. 直播预告:深度学习驱动下的相机标定技术发展
  5. 真实评测 i7 12700f和i7 12700kf区别 i712700f和i712700kf差多少
  6. 面试官问我有没有分布式系统开发经验,我一脸懵圈…
  7. 新版本的apidoc提交参数格式
  8. 第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
  9. 解析pcap文件并提取其中五元组
  10. python---酒店评价数据分析