设计总方框图
(末尾附文件)

原理图:

控制系统的功能
基于单片机洗衣机通过控制系统设定洗衣程序在洗涤脱水桶内自动完成注水、洗涤、漂洗、排水和脱水全过程。洗衣时控制系统打开进水电磁阀开始注水;当洗涤脱水桶内的水位达到系统设定值时单片机发送一个低电平通知控制系统关闭进水电磁阀,同时启动电机洗衣。电机在系统的控制下进行正转、停、反转通过传动带动波轮执行洗涤程序;当洗涤时间终了,控制系统切断电机电路打开排水电磁阀开始排水;然后再次注水,洗衣机进入漂洗状态,完成漂洗程序后,开始排水,同时排水电磁阀的动作并且松开为脱水程序作好准备;排水结束后系统控制电机单方向高速运转完成脱水程序;当脱水程序终了系统控制排水电磁阀和电机断电,排水阀复位,同时蜂鸣器奏响,通知用户整个洗衣程序结束。

该电路主要组成部件是由AT89C52单片机、指示灯、电动机、蜂鸣器、电控水龙头、LED显示灯、及4只按键组成。其组成如图3.1所示。电动机有两个控制端,一端控制电动机正转且该端与P.3 2相连,另一端控制电动机的反转且该端与P3.3相连。电控水龙头共两个,一个为进水水龙头且受P1.4的控制,另一个为排水水龙头而受P1.5的控制,当电控水龙头的控制端为“0”时水龙头打开,当电控水龙头的控制端为“1”时水龙头关闭。显示器是由思维数码管组成,有P1口控制段码,由P1.0到P1.4控制位码。蜂鸣器有由P3.0控制,当P3.0输出为“0”时蜂鸣器发声。本系统采用12M的晶体振荡器定时器0的设置为每隔50ms产生一次中断。

电源电路
单片机系统电源部分的电气原理图如图3.2所示。市电220V经过变压器T变压为12V交流电,再通过4只二极管全桥整流,经过电容C4、C6滤波得到光滑的直流电压后,经过三端稳压管(7805)稳压得到稳定的+5V电压给各器件供电。

部分代码:


#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "ADC0832.C" unsigned char as; //水位,保存
sbit k1=P1^0;//进水阀控制端口
sbit k2=P1^1;//排水阀控制端口
sbit k3=P1^2;//电机控制继电器一号
sbit k4=P1^3;//电机控制继电器2号
sbit led1=P2^0;//浸泡洗指示灯
sbit led2=P2^1;//速洗指示灯
sbit led3=P2^2;//标准洗指示灯
sbit led4=P2^3;//脱水指示灯
sbit led5=P2^4;//烘干指示灯
sbit s1=P3^2;//数码管显示第一位公共端
sbit s2=P3^3;//数码管第二位显示控制公共端
sbit k5=P3^0;//烘干电机sbit ks1=P3^4;//洗衣机电源开关
sbit ks2=P3^5;//洗衣机模式选择
sbit ks3=P3^6;//启动按键sbit kk1=P3^1;//洗涤完报警unsigned int i,i1,i2,i3,i4;  //用于全局时钟定义
unsigned char sf;         //电机,正反转标志位
unsigned char q[]={20,40,80,5,20};//五个模式显示时间
unsigned char q6[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//共阴数码管码表
/*------------------------------------------------定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{TMOD |= 0x01;        TH0=(65535-50000)/256;    // 50ms*20=1000ms=1s   TL0=(65535-50000)%256;EA=1;            //总中断打开ET0=1;           //定时器中断打开
// TR0=1;           //定时器开关打开
}
void delay(unsigned int t){while(t--);}
void a1(){switch(as){        case 1:if(0xbe<Get_CHx_AD_Value(0)) //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;  case 2:if(0x9e<Get_CHx_AD_Value(0))    //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 3:if(0x91<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 4:if(0x8a<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 5:if(0x81<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break; case 6:if(0x6e<Get_CHx_AD_Value(0)) //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 7:if(0x61<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 8:if(0x55<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 9:if(0x44<Get_CHx_AD_Value(0))  //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;case 10:if(0x34<Get_CHx_AD_Value(0)) //   10*25 =250{TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}break;    }
//   if(as*25<Get_CHx_AD_Value(0))   //   10*25 =250
//   {TR0=1;k1=1;}else{TR0=0;k1=0;k2=k3=k4=k5=1;sf=0;}//SendByte(Get_CHx_AD_Value(0));}
void a2(){  //    SendByte(Get_CHx_AD_Value(0));if(Get_CHx_AD_Value(0)<0xe0){TR0=1;}elseTR0=0;}
/*------------------------------------------------主程序
------------------------------------------------*/
//void InitUART  (void)
//{
//
//    SCON  = 0x50;                // SCON: 模式 1, 8-bit UART, 使能接收
//    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
//    TH1   = 0xF3;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz
//    TR1   = 1;                  // TR1:  timer 1 打开
//    EA    = 1;                  //打开总中断
//    //ES    = 1;                  //打开串口中断
//}
//void SendByte(unsigned char dat)
//{
// SBUF = dat;
// while(!TI);
//      TI = 0;
//
//}
void main()
{unsigned int xc1,xc2,xc3; //XC1用于计算模式unsigned int sd=0;   //蜂鸣器循环次数报警ks1=ks2=ks3=1;       //案件给高电平Init_Timer0();//定时器初始化//InitUART ();xc2=xc3=15;while(1){    //  SendByte(Get_CHx_AD_Value(0));if(ks1==0){ delay(20000);   //按键延时去抖xc2=xc3=15;while(ks1==0);//等待按键释放while(1){ stop: //跳转介质为if(ks2==0){delay(20000);while(ks2==0);xc1++;  //每次进入模式选择+if(xc1==6){xc1=1;}//当循环到6重新,跳动到第一个switch(xc1)      //判断进入点亮相应,LED{case 1:led1=0;led2=led3=led4=led5=1;break; //点亮之后直接退出case 2:led2=0;led1=led3=led4=led5=1;break;case 3:led3=0;led2=led1=led4=led5=1;break;case 4:led4=0;led2=led3=led1=led5=1;break;case 5:led5=0;led2=led3=led4=led1=1;break;}xc2=q[xc1-1]/10;//显示时间转换         25/10;xc3=q[xc1-1]%10;//显示时间转换          25%10;//if(xc1==5){xc1=0;}}if(ks3==0)    //判断,是否启动按键按下{delay(20000); //延时去抖switch(xc1)//判断案件为哪一个模式,并,把时间给定时器{         //如果都不是,则为零case 1:i2=20;i3=0;break;    case 2:i2=40;i3=0;break;case 3:i2=80;i3=0;break;case 4:i2=5;i3=0;break;case 5:i2=20;i3=0;break;        }if(i2==0) //判断如果启动时时间为零,则进入设置为模式{ while(1) //死循环,一直在设置水位{ if(ks3==0)    //帮,启动按键再次按下时水加{delay(20000);//简单延时去抖as++;       //,变量加if(as==11)as=1; //最高水位设置为10当再次达到11位变为1while(ks3==0);  //等待按键释放}s1=0;s2=1;//打开第一个数码管P0=q6[as/10]; //进行数据处理并打印delay(10);   //进行延时稳定P0=0x00;    //萧影s1=1;s2=0;P0=q6[as%10];delay(10);P0=0x00;if(ks1==0){delay(20000);while(ks1==0);goto stop;}//如果当开关按下时跳转到前面,开机状态}}while(ks3==0);  //判断案件释放TR0=1;           //打开定时器进行计数while(1)   //死循环,用于判断整个流程完成{s1=0;s2=1;    //数码管显示用于打印定时器时间P0=q6[i2/10];delay(10);P0=0x00;s1=1;s2=0;P0=q6[i2%10];delay(10);P0=0x00;switch(xc1)  //判断模式{case 1:switch(i3){            case 0:a1();break;case 1:k1=k2=k5=1;sf=1;break;case 7:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 8:k3=0;k1=k2=k4=k5=1;sf=0;break;case 9:a1();break;case 10:k1=k2=k5=1;sf=1;break;case 14:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 15:k3=0;k1=k2=k4=k5=1;sf=0;break;}break;case 2:switch(i3){case 0:a1();break;case 1:k1=k2=k5=1;sf=1;break;case 15:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 16:k3=0;k1=k2=k4=k5=1;sf=0;break;case 17:a1();break;case 18:k1=k2=k5=1;sf=1;break;case 30:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 31:k3=0;k1=k2=k4=k5=1;sf=0;break;}break;case 3:switch(i3){case 0:a1();break;case 1:k1=k2=k5=k3=k4=1;break;case 40:k1=k2=k5=1;sf=1;break;case 55:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 56:k3=0;k1=k2=k4=k5=1;sf=0;break;case 57:a1();break;case 58:k1=k2=k5=1;sf=1;break;case 70:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 71:k3=0;k1=k2=k4=k5=1;sf=0;break;}break;case 4:switch(i3){case 0:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 1:k3=0;k1=k2=k4=k5=1;sf=0;break;}break;case 5:switch(i3){case 0:k2=0;k1=k3=k4=k5=1;sf=0;a2();break;case 1:k5=0;k1=k2=k4=k3=1;sf=0;break;}break;}if(i2==0){P0=P1=P2=P3=0xff;TR0=0;xc1=xc2=xc3=0;i=i1=i2=i3=i4=0;sf=0;ks1=0;break;}if(ks1==0)break;}}s1=0;s2=1;P0=q6[xc2];delay(10);P0=0x00;s1=1;s2=0;P0=q6[xc3];delay(10);P0=0x00;if(ks1==0){delay(20000);P0=P1=P2=P3=0xff;TR0=0;xc1=xc2=xc3=0;i=i1=i2=i3=i4=0;sf=0;for(sd=5;sd>0;sd--){delay(20000);kk1=1;delay(20000);kk1=0;}kk1=1;break;}}if(i2==0){ks1=1;}while(ks1==0);}else{s1=0;s2=1;P0=q6[16];delay(10);P0=0x00;s1=1;s2=0;P0=q6[16];delay(14);P0=0x00;}
}
}/*------------------------------------------------定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{TH0=(65535-50000)/256;          //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出TL0=(65535-50000)%256;         //50ms*20=1000ms=1s;i++;
if(i==20)
{i=0;  //用于下一次计算if(sf==1){i4++;if(i4==1){k3=1;k4=0;}if(i4==2){k3=0;k4=1;i4=0;}}//{k3=1;k4=0;}i1++;if(i1==5){i1=0;i2--;i3++;}
}
}

.

链接:https://pan.baidu.com/s/1wowj-CkiVshYPAYS7v0eVA
提取码:zi89

.

基于51单片机的全自动洗衣机仿真原理图程序方案设计相关推荐

  1. 洗衣机控制系统c语言编程,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文.doc...

    采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文 深 圳 大 学 本 科 毕 业 论 文(设计) 题目: 基于单片机设计的全自动 洗衣机控制器 姓名: 郑嘉泽 专业: 电子信息工程 学院: ...

  2. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  3. 基于51单片机的全自动洗衣机系统设计-protues原理图、程序(转发)

    摘 要 本文详细介绍了国内洗衣机控制系统的发展现状,发展中所面临的问题.从产品质量.性能及应用方面看洗衣机的差距,同时也详尽的介绍了此次设计中最重要的组成部件单片机的概念.工作原理及设备总体结构.根据 ...

  4. 基于51单片机的全自动洗衣机设计

    硬件方案 全自动洗衣机的电路主要有电源.单片机最小系统.开关检测电路.控制按键输入电路和LED指示电路.继电器和电动机电路. 原理图如图: 仿真图如图: 设计功能 由独立式按键确定功能键,包括&quo ...

  5. 基于51单片机的万年历proteus仿真原理图方案设计

    (末尾附文件) 系统框图 原理图 仿真图 最小系统电路 STC89C52的最小系统如图3-3所示,整个最小系统由三个部分组成,晶振电路部分.复位电路部分.电源电路等三个部分组成. 晶振电路包括2个30 ...

  6. 洗衣机程序c语言代码大全,采用C语言编辑基于51单片机的全自动洗衣机控制系统毕业论文资料.doc...

    深 圳 大 学 本 科 毕 业 论 文(设计) 题目: 基于单片机设计的全自动 洗衣机控制器 姓名: 郑嘉泽 专业: 电子信息工程 学院: 信息工程学院 学号: 2009130099 指导教师: 李霞 ...

  7. 基于51单片机的温度控制proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度及温度范围设定 2.超过温度设定范围将启动加热棒加热或风扇冷却 3.超过设定温度将声光报警 4.按键可设置温 ...

  8. 基于51单片机的全自动洗衣机控制系统仿真设计

    方案设计: 采用单片机设计,以 AT89C51 单片机为核心元件, 由时钟电路. 复位电路. 电源电 CPU 控制模块 电机调速控制模块 显示模块 电源模块 复位模块 时钟模块 控制模块 秒脉冲发生器 ...

  9. 基于51单片机的电子秤proteus仿真设计

    本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...

最新文章

  1. SAP R3 FI 上线 顾问设置教程(一)
  2. 指定一个开始日期和结束日期,算出中间的日期
  3. Mysql 参数最佳实践_MySQL参数调优最佳实践
  4. 文本框灰色文字提示,鼠标点击文字消失
  5. Hbase架构与原理
  6. 2020CCPC绵阳
  7. cocos2dx blender 骨骼动画实现
  8. 阿里巴巴基于 Nacos 实现环境隔离的实践
  9. Gitbook+码云创建自己的文档
  10. NOTEBOOK随笔
  11. php获取视频大小代码怎么写,利用php获得flv视频长度的实例代码
  12. python字符串对齐.format_python字符串格式化之.format
  13. 【JavaEE】CH10 JDBC
  14. 害!!安装电脑系统 分区就那么点事
  15. Puget Systems发布硬件可靠性报告,三星SSD表现低故障率
  16. ELK 收集 Docker 日志
  17. 表格里加横线一分为二_我告诉你excel表格分割线一分为二
  18. 中国(西部)云计算中心投产,将成西部规模最大数据中心
  19. 如何使用python画一个爱心
  20. [转]网站整合Ucenter详细流程

热门文章

  1. 小辣记【野火stm32自学笔记】点灯仪式
  2. MKS SKIPR V1.0 使用说明书
  3. 报错解决:Before you can run VMware, several modules must be compiled ...
  4. android手机短信转发+隐藏应用程序图片+开机自启
  5. nCode:DesignLife案例教程十一
  6. CASIA手写体数据集HWDB1.0 gnt和dgrl格式解析
  7. 实景三维如何助力智能应急?
  8. C4D致富经典入门到精通(十)
  9. MATLAB GUI界面
  10. Flutter初体验