【51单片机】【protues仿真】基于51单片机全自动洗衣机系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

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;

}

}

五、实验现象

演示视频:

相关推荐
mount_myj6 分钟前
填数【C语言】
c语言
三品吉他手会点灯24 分钟前
C语言学习笔记 - 4.C概述 - C的特点
c语言·笔记·学习
波特率11520031 分钟前
单片机启动流程以STM32举例
stm32·单片机·嵌入式硬件·嵌入式·嵌入式软件
WeeJot嵌入式33 分钟前
【串口】STM32串口DMA模式与收发不定长数据
stm32·单片机·嵌入式硬件
LCG元41 分钟前
STM32实战:基于STM32F103的看门狗(IWDG/WWDG)应用与系统复位
stm32·单片机·嵌入式硬件
ytttr87342 分钟前
STM32 USB HID 源码方案
stm32·单片机·嵌入式硬件
她说彩礼65万1 小时前
C语言 函数指针
c语言·开发语言·算法
算法鑫探1 小时前
贪心算法(C 语言实现)及经典应用
c语言·数据结构·算法·贪心算法
C语言小火车1 小时前
嵌入式实习面试问题:那个动态内存是怎么样分配的?
c语言·开发语言·c++·嵌入式硬件·面试
拾光Ծ1 小时前
【Linux系统编程】深入理解命名管道(Named Pipe):从原理到实战的完整指南
linux·c语言·linux系统编程·进程间通信·ipc·命名管道