基于51单片机的全自动洗衣机控制系统-protues仿真

引言

本文将详细介绍如何使用STC89C51单片机设计并实现一个全自动洗衣机控制系统。该系统具备多种洗涤模式、水位检测、电机控制等功能,并通过LCD1602显示屏提供用户界面。我们将从硬件设计、软件实现和系统仿真三个方面进行全面讲解。仿真电路

系统硬件设计

1. 核心硬件组成

  • 主控芯片:STC89C51单片机

  • 显示模块:LCD1602液晶显示屏

  • 输入设备:按键矩阵(启动/停止、模式选择等)

  • 执行机构

    • 继电器控制(进水阀、排水阀)

    • 直流电机(正反转控制)

  • 传感器

    • 水位检测传感器

    • 门开关检测

2. 硬件接口分配

// 继电器控制
sbit relay4 = P3^7;

// 蜂鸣器
sbit beep = P2^0;

// 按键接口
sbit open = P1^0;   // 开机
sbit stop = P1^1;   // 暂停
sbit close = P1^2;  // 关门检测
sbit ye = P1^3;     // 洗衣液检测
sbit set = P1^4;    // 模式设置
sbit gao = P1^5;    // 高水位检测
sbit state = P1^6;  // 启动

// 洗衣机功能控制
sbit xidi = P1^7;   // 洗涤
sbit piaoxi = P3^7; // 漂洗
sbit tuoshui = P3^6;// 脱水

// 电机控制
sbit IN0_1 = P2^3;  // 方向控制
sbit IN1_1 = P2^4;  // 方向控制
sbit E_1 = P2^5;    // 使能端

// 状态指示灯
sbit LED1 = P3^0;   // 模式1指示
sbit LED2 = P3^1;   // 模式2指示
// ...其他LED指示灯

软件设计与实现

1. 系统初始化

void init() {
    TMOD = 0x11;    // 设置定时器0和1为工作方式1
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    TH1 = (65536-50000)/256;
    TL1 = (65536-50000)%256;
    EA = 1;         // 开总中断
    ET0 = 1;        // 开定时器0中断
    ET1 = 1;        // 开定时器1中断
}

2. 电机控制逻辑

系统实现了电机的正转、反转和停止控制:


void Motor_cw() {  // 正转
    IN0_1 = 1;
    IN1_1 = 0;
    E_1 = 0;
    Delay_mous(speed1);
    E_1 = 1;
    Delay_moms(speed2);    
}

void Motor_acw() {  // 反转
    IN0_1 = 0;
    IN1_1 = 1;
    E_1 = 0;
    Delay_mous(speed1);
    E_1 = 1;
    Delay_moms(speed2);    
}

void Motor_stop() {
    E_1 = 0;
}

3. 洗涤模式实现

系统提供了5种洗涤模式:

  1. 棉质洗

  2. 羊毛洗

  3. 混合洗

  4. 快速洗

  5. 仅脱水

每种模式有不同的洗涤时间、漂洗时间和脱水时间参数:


// 棉质洗模式示例
if(setn == 0) {
    speed1 = 1000;
    speed2 = 1;
    TR0 = 1;
    
    // 洗涤阶段
    if(flag_bu == 0) {
        xidi = 0; piaoxi = 1; tuoshui = 1;
        if(sec < 12) {
            // 显示洗涤倒计时
        } else {
            flag_bu = 1; sec = 0;
        }
    }
    
    // 漂洗阶段
    if(flag_bu == 1) {
        xidi = 1; piaoxi = 0; tuoshui = 1;
        if(sec < 12) {
            // 显示漂洗倒计时
        } else {
            flag_bu = 2; sec = 0;
        }
    }
    
    // 脱水阶段
    if(flag_bu == 2) {
        xidi = 1; piaoxi = 1; tuoshui = 0;
        if(sec < 12) {
            // 显示脱水倒计时
        } else {
            flag_bu = 3; sec = 0;
        }
    }
}

4. 水位检测与控制

系统通过水位传感器检测水位,并在LCD上实时显示:


if(level < 100 && setn != 5) {
    buzz = 1;
    TR1 = 1;
    lcd_write_char(13,0,(level+1)/100+0x30);
    lcd_write_char(14,0,(level+1)%100/10+0x30);
    lcd_write_char(15,0,(level+1)%10+0x30);
}
level = num2;

5. 定时器中断服务程序

系统使用两个定时器分别处理洗涤计时和水位检测:


void time0() interrupt 1 {
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    num++;
    if(num == 20) {
        num = 0;
        sec++;
    }
}

void time1() interrupt 3 {
    TH1 = (65536-50000)/256;
    TL1 = (65536-50000)%256;
    num2++;
}

系统仿真与测试

1. Proteus仿真电路

在Proteus中搭建的仿真电路包括:

  • STC89C51单片机

  • LCD1602显示模块

  • 按键输入电路

  • 电机驱动电路

  • 水位传感器模拟电路

系统资料获取:

 关于资料获取https://mp.weixin.qq.com/s/Fg01-3V5TZkKY5XVp4M6Hw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值