目录
一、主要功能
1、LED灯显示对应模式、挡位、运行状态
2、按键选择模式、强度、启动
3、模式:标准、经济、单独、排水
4、强度:强洗、弱洗
5、过程:洗涤、漂洗、脱水
二、使用步骤
基于51单片机的全自动洗衣机控制系统设计方案,整合了传感器控制、流程管理和人机交互模块。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、电机模块
4、蜂鸣器模块
5、继电器模块
6、限位开关模块
6、水位传感器模块
四、软件设计
#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;
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 rdandu() //弱单独
{
num=0;
num1=0;
ledruoxi=0;
ledxidi=0;
leddandu=0;
jinshui=0; //打开进水阀,进水
delayms(5000);
jinshui=1;
flag1=1;
TR0=1; //启动定时器T0
while(flag==0)
{
if(flag==0&&num2==1) //弱单独洗
{
TR0=1;
flag1=1;
ruo();
}
if(flag==0&&num2==2)//弱单独洗暂停
{
TR0=0;
U2=1;
U3=1;
}
};
flag1=0;
U2=1;
U3=1;
}
void dpaishui()
{
num=0;
num1=0;
ledpaishui=0;
ledtuoshui=0;
jinshui=1;
paishui=0;
delayms(3000);
while(sgai);
delayms(3000);
flag1=3;
TR0=1;
num3=0;
num4=0;
while(flag==0)
{
if(flag==0&&num2==1) //脱水
{
TR0=1;
flag1=3;
U2=0;
U3=1;
}
if(flag==0&&num2==2)//暂停脱水
{
TR0=0;
U2=1;
U3=1;
}
};
U2=1;
U3=1;
flag1=0;
ledtuoshui=1;
paishui=1; ////排水阀关闭
}
void main()
{
init();
while(1)
{
key(); //键扫描
if((num1==0&&num==0)&&circle==1) //标准 强洗
{
ledruoxi=1; //关闭弱洗LED
ledpaishui=1; //关闭排水LED
ledbiaozhun=0;//强标准LED亮
ledqiangxi=0; //强洗LED亮
if(num2==1)
{
qbiaozhun(); //强标准洗
}
if(num2>1) //K3键按下次数为2,暂停洗涤
{
;
}
circle=0;
}
if(num1==0&&num==1) //经济 强洗
{
ledruoxi=1;
ledbiaozhun=1;
ledqiangxi=0;
ledjingji=0;
if(num2==1)
{
qjingji(); //强经济洗
ledjingji=1;
}
circle=0;
}
if(num1==0&&num==2) //单独 强洗
{
ledruoxi=1;
ledjingji=1;
ledqiangxi=0;
leddandu=0;
if(num2==1)
{
qdandu(); //强单独洗
leddandu=1;
}
circle=0;
}
if(num1==0&&num==3)
{
ledruoxi=1; //排水 强洗
leddandu=1;
ledqiangxi=0;
ledpaishui=0;
if(num2==1)
{
dpaishui(); //单排水
ledpaishui=1;
}
circle=0;
}
if(num1==1&&num==0) //弱 标准
{
ledqiangxi=1;
ledpaishui=1;
ledruoxi=0;
ledbiaozhun=0;
if(num2==1)
{
rbiaozhun(); //弱标准洗
ledruoxi=1;
}
circle=0;
}
if(num1==1&&num==1) //弱经济
{
ledqiangxi=1;
ledbiaozhun=1;
ledruoxi=0;
ledjingji=0;
if(num2==1)
{
rjingji();
ledruoxi=1;
ledjingji=1;
}
circle=0;
}
if(num1==1&&num==2)
{
ledqiangxi=1;
ledjingji=1;
ledruoxi=0;
leddandu=0;
if(num2==1)
{
rdandu();
ledruoxi=1;
leddandu=1;
}
circle=0;
}
if(num1==1&&num==3)
{
ledqiangxi=1;
leddandu=1;
ledruoxi=0;
ledpaishui=0;
if(num2==1)
{
dpaishui();
ledpaishui=1;
}
circle=0;
}
num2=0;
}
}
五、实验现象
演示视频: