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

}

}

五、实验现象

演示视频:

相关推荐
Mingze03143 小时前
C语言四大排序算法实战
c语言·数据结构·学习·算法·排序算法
hazy1k3 小时前
51单片机基础-静态数码管显示
stm32·单片机·嵌入式硬件·51单片机
小龙报4 小时前
《彻底理解C语言指针全攻略(3)》
c语言·开发语言·windows·git·创业创新·学习方法·visual studio
bu_shuo4 小时前
单片机中经常定义的结构体解读
单片机·嵌入式硬件
00后程序员张4 小时前
Windows 安全分割利器:strtok_s () 详解
windows·单片机·安全
小莞尔5 小时前
【51单片机】【protues仿真】基于51单片机矩阵电子琴系统
单片机·嵌入式硬件
很㗊5 小时前
C与C++---指针、引用、结构体及内存管理
c语言·开发语言
蜀黍@猿5 小时前
【GD32】软、硬件I2C对比
单片机·嵌入式硬件·mcu
@小张要努力5 小时前
STM32学习记录-0.1 STM32外设
stm32·嵌入式硬件·学习