基于51单片机智能可控洗衣机控制系统设计

目录
设计课题:全自动洗衣机 1
二、设计任务书 1
1、题目 1
2、设计要求 2
三、主要技术指标和说明 2
摘 要 2
(5)各种操作和洗衣机的运行状态均用LED显示. 2
一、设计任务与要求 3
(3) 通过“K3”键控制洗衣机运行、暂停和解除报警功能。 3
(1) 开机默认状态为标准方式、强洗。 3
(3) 在进水和脱水过程中,相应的指示灯亮,继电器吸合。 3
二、 方案设计与论证 3
三、 硬件电路设计 3
(1) 电动机驱动模块电路设计 4
(2) 电源模块电路设计 4
(3) 控制按键 4
(4) 进水阀和排水阀控制继电器 4
五、 调试与分析 6
1、软件调试: 6
2、硬件调试: 6
六、 总结 6
七、 程序代码: 6
二、设计任务书
1、题目
全自动洗衣机
2、设计要求
请参照主要技术指标和说明完成本次设计。
画出硬件连接电路图,说明各个控制信号的作用。
画出程序流程图,编写程序,硬件连接调试,直至正确。
编写设计报告。
三、主要技术指标和说明
● 由独立式按键确定功能键,包括“标准”、“经济”、“单独”、“排水”、“强洗”、“弱洗”等等;
● 排水与进水由时间控制;
● 开机默认状态为标准方式、强洗;
● 在洗涤和漂洗过程中,电动机正转一次,反转一次,连续运行;
● 在进水和脱水过程中,相应指示灯亮,继电器吸合;
● 当在执行某个步骤时,只有“K3”键有效,按下暂停,再按下恢复运行。

#include<reg52.h>
	#define uchar unsigned char
	#define uint unsigned int
	uchar num=0,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0,flag=0,flag1=0,flag4=0,flag5=0,circle=0;
	sbit ledbiaozhun=P1^0; //LED指示灯
	sbit ledjingji  =P1^1;
	sbit leddandu   =P1^2;
	sbit ledpaishui =P1^3;
	sbit ledqiangxi =P1^4;
	sbit ledruoxi   =P1^5;
	sbit ledxidi    =P1^6;
	sbit ledpiaoxi  =P1^7;
	sbit ledtuoshui =P2^0;
	
	sbit sshuiwei   =P3^6; //水位开关
	sbit sgai       =P3^7; //盖开关
	sbit paishui=P2^3; //排水阀控制
	sbit jinshui=P2^2; //进水阀控制
	
	sbit U2=P2^4;
	sbit U3=P2^5;
	sbit k1=P3^0;  // 步进改变"标准、经济、单独、排水"四种方式
	sbit k2=P3^1;  //强洗、弱洗
	sbit k3=P3^2;  //运行、暂停和解除报替功能
	void init()
	{
		uchar a=0,b=0,c=0;
		TMOD=0x01;		       //T0工作于方式1
		TH0=(65536-50000)/256; //定时时间50ms
		TL0=(65536-50000)%256;
		EA=1;				   //开总中断
		ET0=1;				   //开T0中断
		TR0=0;				   //关闭T0
		EX0=1;				   //开外部中断0
		IT0=1;				   //外部中断0边沿触发方式
		U2=1;				   //电机停转
		U3=1;
		P0=0xff;
	}
	void delayms(uint xms) //延时
	{
		uint i,j;
		for(i=xms;i>0;i--)
			for(j=110;j>0;j--);
	}
	
	void key()		//控制按键
	{
		circle=1;
		if(k1==0)		//标准、经济、单独、排水按下
		{
			delayms(10); //延时消抖
			if(k1==0)	 //再判
			{
				num++;	 //K1按下次数加1
				if(num==4)
					num=0;	//等于4,按下次数清0
				while(!k1);	//等待按键释放
			}
		}
		
		if(k2==0)				//强弱选择
		{
			delayms(10);   //延时消抖
			if(k2==0)	   //再判
			{
				num1++;	 //按下次数加1
				if(num1==2)
					num1=0;	//等于2,按下次数清0
				while(!k2);	//等待按键释放
			}
		}
	}
	
	void qiang()			  //强
	{
		if(flag4==0)  //电机正转
		{	
			U2=0;
			U3=1;
		}
	
		if(flag4==1)  //电机反转
		{
			U2=1;
			U3=0;
		}	
	}
	void ruo()			//弱
	{
		if(flag5==0) //电机正转
		{	
			U2=0;
			U3=1;
		}
	
		if(flag5==1) //电机反转
		{
			U2=1;
			U3=0;
		}
	}
	
	void qbiaozhun()			//强标准
	{
		/*******洗涤********/
			num=0;
			num1=0;
			ledbiaozhun=0;//标准洗LED亮
			ledqiangxi=0; //强洗LED亮
			jinshui=0;	  //打开进水阀
			ledxidi=1;    //洗涤
			ledpiaoxi=1;  //漂洗LED亮
			ledtuoshui=1; //脱水LED亮
			delayms(5000);//水位监测
			jinshui=1; //关闭进水阀
			ledxidi=0;
			flag1=1;	//	
			TR0=1;	    //启动定时器T0
			while(flag==0)//flag为洗涤次数标志位
			{ 	
				if(flag==0&&num2==1)
				{	 
					TR0=1;
					flag1=1; //
					qiang();
				}
				if(flag==0&&num2==2)
				{
					TR0=0; //关闭定时器T0
					U2=1;  //电机停止
					U3=1;
				}
			};
			//漂洗
			U2=1;
			U3=1;					
			TR0=0;
			flag1=0;
			paishui=0; //排水
			ledtuoshui=1;
			ledpiaoxi=1;
			ledxidi=1;
			delayms(5000);
			paishui=1;	//关闭排水
			delayms(100);
			jinshui=0;	//打开进水
			delayms(5000);
			jinshui=1;	 //关闭进水
			ledpiaoxi=0;
			flag1=2;
			TR0=1;
			num3=0;
			num4=0;
			while(flag==1)
			{
				if(flag==1&&num2==1)//强漂洗
				{	 
					TR0=1;
					flag1=2;
					qiang();
				}
				if(flag==1&&num2==2)//暂停强漂洗
				{
					TR0=0;
					U2=1;
					U3=1;
				}
			};
			//漂洗
			U2=1;
			U3=1;
			TR0=0;
			flag1=0;
			paishui=0;
			ledtuoshui=1;
			ledpiaoxi=0;
			delayms(5000);
			paishui=1;
			delayms(100);
			jinshui=0;
			delayms(5000);
			jinshui=1;
			flag1=2;
			TR0=1;
			num3=0;
			num4=0;
			 
			while(flag==2)
			{
			 	if(flag==2&&num2==1)
				{	 
					TR0=1;
					flag1=2;
					qiang();
				}
				if(flag==2&&num2==2)
				{
					TR0=0;
					U2=1;
					U3=1;
				}
			 }	;
			//脱水
			U2=1;
			U3=1;
			TR0=0;
			flag1=0;
			paishui=0;//打开排水
			ledtuoshui=0;
			ledpiaoxi=1;
			while(sgai);
			paishui=1;
			delayms(1000);
			flag1=3;
			TR0=1;
			num3=0;
			num4=0;
			while(flag==3)
			{
				if(flag==3&&num2==1)
				{
					TR0=1;
					U2=0;
					U3=1;
					flag1=3;
				}
				if(flag==3&&num2==2)
				{
					TR0=0;
					U2=1;
					U3=1;
				}
			};
			ledtuoshui=1;
			U2=1;
			U3=1;
			flag1=0;			
	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/130039903