目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

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;
    }
}

五、实验现象

演示视频:

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐