基于51单片机智能可控洗衣机设计

引言

目前我国的洗衣机的种类有很多,现在农村大部分的洗衣机类型都是半自动的,既耽误时间又耗费体力;随着全自动洗衣机的问世,人们对洗衣机的关注也越来越多,现在的全自动洗衣机的功能有进水、洗涤、排水、漂洗、脱水、排水等几大功能。随着人们生活水平的提高,人们对于洗衣机的要求越来越高,这就要求设计者们设计出更人性、更方便、更快捷的洗衣机。让洗衣服这项难于逃避的家务劳动,不再成为一种负担。

随着加入世贸组织,很多的国内外强势品牌加入,研究新的技术开发新的产品,洗衣机行业将爆发新一轮的以“绿色环保”、“节水节能”为主题的大战,而技术制高点则是未来的竞争焦点。在国内,由于水资源的缺乏以及水费有所提高,因此节水型的洗衣机在国内比较畅销,而用水量较大的洗衣机则可能会被淘汰。对这种现状,我国的洗衣机生产商对于洗衣机的设计做出调整,向市场推出一批节能型全自动洗衣机。虽然全自动洗衣机有它的优势,但是对于大部分农村人来说,全自动洗衣机仍是奢侈品,所以半自动洗衣机仍然有它自己的市场,这就要求设计者考虑到更多的方面去设计洗衣机。

目前全自动洗衣机的控制功能都是由单片机实现的,单片机易于操作,体积小,价格低因此受到广泛的应用,所以此设计也是在单片机的基础上设计的,具有很强的实用性。本次设计以AT89C51单片机为核心,在此基础上增加外围电路,以确保洗衣机的正常运行。本次设计主要包括硬件设计,仿真设计,和程序编写。硬件设计包括电源电路、单片机最小系统电路、按键电路、倒计时电路、电机驱动电路、显示报警电路;仿真设计主要包括电机控制电路、蜂鸣报警电路、显示电路、按键控制电路和指示电路;程序的编写主要有洗涤程序、漂洗程序、脱水程序。与此同时还介绍了与洗衣机有关的一些常见的电子元器件的基本功能。

第1章 绪 论

1.1课堂开发背景

有人说,科技的进步是因为人类的懒造成的,是的,因为人们懒得走路,所以有了自行车、电动车、汽车;因为人们懒得烧火,所以有了各类的电饭锅;因为人们懒得洗衣服,所以有了洗衣机。人们的生活水平不断提高,科技不断进步,洗衣机的品种和功能层出不穷。现在的洗衣机已经越来越智能化,人们只需按几个键就可以将衣服晾出去了。随着科技的进步我相信在不久的将来我们一定可以发明出更先进更便捷的洗衣机。也许到时我们只需说一句话,或者一个口哨,洗衣机就可以按着制定的程序完成各种操作了,等我们一觉醒来,衣服已经挂在晾衣绳上了。

1.2 设计的目的和意义

目前我国的洗衣机的种类有很多,现在农村大部分的洗衣机类型都是半自动的,既耽误时间又耗费体力;随着全自动洗衣机的问世,人们对洗衣机的关注也越来越多,现在的全自动洗衣机的功能有进水、洗涤、排水、漂洗、脱水、排水等几大功能。随着人们生活水平的提高,人们对于洗衣机的要求越来越高,这就要求设计者们设计出更人性、更方便、更快捷的洗衣机。虽然此次设计并没有将洗衣机的作用全部设计出来,但重要的是将自己在课堂上学的东西运用到实际中来,让我们看到自己所学的知识并不只是纸上谈兵。

1.3 国内外现状及水平

1. 洗衣机的分类

普通洗衣机。其洗涤、漂洗、脱水等功能均须手工转换。

半自动洗衣机。它能在洗涤、漂洗、脱水等功能之间,实现某两个功能的自动转换。

全自动洗衣机。它能自动实现洗涤、漂洗、脱水等所有功能。

2. 全自动洗衣机在国内外的现状及水平

全自动洗衣机的种类有很多,根据结构不同可分为波轮式全自动洗衣机(也叫套桶式全自动洗衣机)、滚筒式全自动洗衣机和搅拌式全自动洗衣机三大类。因为滚筒式机的价格高于波轮式机,所以波轮式机仍受到普遍欢迎;搅拌式洗衣机目前还没有进入我国市场。目前我国的洗衣机仍然存在很多的缺陷,有待设计者去设计出更人性化的洗衣机。在我国,农村人口较多,而农村人使用全自动洗衣机的人数寥寥无几,不仅因为它的价格昂贵,还因为农村自来水的不方便。相信在不久的将来,全自动洗衣机一定会完全代替半自动洗衣机。

现在已经有的洗衣机厂家设计出来便携式洗衣机轻巧、体积小。还有的商家设计出远程控制的洗衣机,方便控制。怎么样?是不是眼花缭乱了呢?我相信将来的洗衣机一定会朝着更方便、更节能、更人性化的方向发展。

第2章 设计方案

2.1 设计任务

1.主要内容:设计一个用单片机控制的洗衣机控制器。以单片机为核心,扩展必要的外围电路,设计一个洗衣机的控制器。

2.主要功能:

1)标准洗涤:洗涤十二分钟;漂洗六分钟,三次,脱水三分钟。(在此次设计中为了便于观察结果,时间有所调整)

2)有启动/暂停按钮控制:按菜单键,再按菜单选择键,选择所需要的功能,工作时,按停止键停止。

3)有脱水功能。

4)有指示功能:进水时进水指示灯亮;洗涤时洗涤指示灯亮;排水时排水指示灯亮;漂洗时漂洗指示灯亮;脱水时脱水指示灯亮。

2.2 洗衣机的设计方案

本系统实现了对洗衣机整个洗衣过程的控制,包括按键的输入、进水、洗涤、漂洗、排水和脱水等阶段。控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。单片机控制系统负责控制洗衣机的工作过程,主要由AT89C51单片机、2位共阳数码管、按键、蜂鸣器、LED指示灯组成;外部硬件电路有继电器、三极管、电动机、步进电机驱动组成。

2.2.1 按键

洗衣机面板上有4个按钮K1、K2、K3、K4。

K1为菜单键,在按K4键时,需先按下K1键,防止误操作。

K2为开始键,用于启动洗衣机。

K3用于停止。

K4为菜单选择键,用于选择用户所需的功能。

2.2.2 洗衣程序

⑴洗涤过程

通电后,若不选择洗衣周期,则洗衣机从洗涤过程开始。进入洗涤过程,首先进水,进水指示灯亮,开始向洗衣机供水,当到达要求时间时,停止进水;电机M接通,带动波轮旋转,形成洗衣水流。电机M是一个正反转电机,可以形成往返水流,有利于洗涤衣物。

⑵漂洗过程

与洗涤过程操作相同,只是时间短一些。

⑶脱水过程

洗涤或漂洗过程结束后,电机M停止转动,开始排水。排水完毕,电机开始正转,带动内桶高速旋转,甩干衣物。

2.2.3 设计总方框图

图2.2.3设计总方框图

2.3 控制系统的功能

基于单片机的全自动洗衣机设计通过程序的控制来自动完成注水、洗涤、漂洗、排水和脱水全过程。洗衣时控制系统控制洗衣机开始注水;当注水定时到,启动电机洗衣。电机在系统的控制下进行正转、停、反转通过传动带动波轮执行洗涤程序;当洗涤时间终了,控制系统控制洗衣机开始排水;然后再次注水,洗衣机进入漂洗状态,完成漂洗程序(通常为3次漂洗)后,开始排水;排水结束后系统控制电机单方向高速运转完成脱水程序;当脱水程序终了蜂鸣器奏响,通知用户整个洗衣程序结束。

第3章 仿真设计

3.1控制系统的电路组成

该电路主要组成部件是由AT89S51单片机、指示灯、电动机、蜂鸣器、LED显示灯、及4只按键组成。其组成如图3.1所示。电动机有两个控制端,一端控制电动机正转且该端与P2.0相连,另一端控制电动机的反转且该端与P2.1相连。显示器共有两只P1.2控制高位显示器,P1.3控制低位显示器。蜂鸣器有由P0.7控制,当P0.7输出为“0”时蜂鸣器发声。本系统采用12M的晶体振荡器定时器0的设置为每隔100ms产生一次中断。

图3.1控制系统的电路组成图

3.2 电机控制电路

电机控制电路如图3.2.1所示,其中包括步进电机驱动芯片L298。

L298是SGS-THOMSON Microelectronics所出产的是双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动两个二相和一个四相步进电机,内含两个H-Bridge的高电压、低电流双全桥式驱动器,接受标准TTL逻辑准位信号可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压,此芯片可直接由单片机的IO端口来提供模拟时序信号。

L298内部逻辑图如图3.2.2所示,外形图如图3.2.3所示,引脚如图3.2.4所示。

L298的引脚中PIN1和PIN15可与电流帧测用电阻连接来控制负载电路;OUT1

和OUT2,OUT3和OUT4之间分别接两个步进电机;input1—input4输入控制电位来控制电机的正反转;enable则控制电机停转。

3.3蜂鸣器报警电路

用蜂鸣器模拟结束报警电路,与单片机的P0.7口相连,当P0.7口为低电平时蜂鸣器报警,用三极管驱动蜂鸣器。如图3.3所示。

 

***************************头文件***********************/ 
#include <reg52.h> 
#include <intrins.h> 
/************************数据类型宏定义******************/ 
#define uchar unsigned char 
#define uint unsigned int 
/***********************使能、禁止宏定义*****************/ 
#define Enable(); EA=1; 
#define Disable();EA=0; 
/**********************电机控制宏定义********************/ 
#define ZHENGZHUAN 0 
#define STOP 1 
#define FANZHUAN 2 
#define ZhengZhuan(); PIN_Motor_A = 0; PIN_Motor_B = 1; 
#define Stop(); PIN_Motor_A = 1; PIN_Motor_B = 1; 
#define FanZhuan(); PIN_Motor_A = 1; PIN_Motor_B = 0; 
/*******************暂停、继续控制宏定义*****************/ 
#define ZanTing(); ET0 = 0; ET1 = 0; Stop(); 
#define JiXu(); ET0 = 1; ET1 = 1; 
#define flag_Ok  (flag_XiDi||flag_TuoShui) 
/*************************管脚定义***********************/ 
#define lcd P0     //液晶数据口

sbit PIN_JinShui = P2^2; //进水
sbit PIN_PaiShui = P2^3; //排水
sbit PIN_Motor_A = P2^4; //电机脚A 
sbit PIN_Motor_B = P2^5; //电机脚B 
sbit K_SEL_ChengXu = P1^5; //选择程序键 
sbit qiangruo = P1^6; //水量选择 
sbit shuiwei1 = P3^6; // 水位监测
sbit p32 = P3^2; //   启动/暂停
sbit rs=P1^1;	   //液晶控制引脚
sbit en=P1^2;
sbit SPK = P2^0; //报警喇叭
/*************************数据定义***********************/ 
uchar flag_SEL_ChengXu; //默认为标准程序, 
 
bit flag_Run; //运行标志,1为运行 
bit flag_XiDi; //置洗涤标志 
bit flag_TuoShui; //脱水标志
bit flag_PiaoXi;  //漂洗标志  
bit flag_SEl_QiangRuo; //默认为强洗,1为弱洗 

uchar _50ms; //每50ms加一次的变量 
uint s,s1; //秒 
uchar k;
int counter1=0,counter2=0,counter3=0;  //电机转速控制
uint T_S; //定时总时间  
int fen,miao;//剩余时间
uint t1,t2,t3;	   //洗涤、漂洗、甩干时间
uchar a=15;  //占空比
uchar mol=0;  //手动模式选择
uint count;
/**************************数组定义********************/
uchar code table0[]="State:          ";

uchar table7[]="00:00";


/*************************延时程序*********************/ 
void Delay_10ms(uint T1) 
{ 
	uint t1,t2; 
	for(t1=0;t1<T1;t1++) 
	for(t2=0;t2<1250;t2++);//10ms 
} 


void delay(uint count)		 //1ms延时
{
   uint x,y;
   for(x=0;x<count;x++)
   for(y=0;y<120;y++);
}
/*************************液晶驱动程序*************************/
void w_cmd(uchar com)		  //lcd1602写命令
{
  rs=0;
  lcd=com;
  en=1;
  delay(5);
  en=0;
}

void w_data(uchar dat)		  //lcd1602读数据
{
  rs=1;
  lcd=dat;
  en=1;
  delay(5);
  en=0;
}

void w_str(uchar *s)       //lcd1602写字符串
{
    while(*s)  w_data(*s++);
}

void lcd_int()		     //lcd1602初始化
{
  en=0;
  w_cmd(0x38);
  w_cmd(0x0c);
  w_cmd(0x06);
  w_cmd(0x01);
  w_cmd(0x80+0x00);
  w_str(table0);
  //w_cmd(0xc0+0x00);
 // w_str(table1);
}


/********************中断初始化程序********************/ 
void ExInt_Init(void) 
{ 
	IT0 = 1; 
	EX0 = 1; 
	IT1 = 1; 
	EX1 = 1; 
} 
/*******************定时器0初始化程序******************/ 
void Timer0_Init(void) //其中没ET0是为以后控制暂停用的 
{ 
	TMOD = TMOD | 0X01; //定时方式1 
	TH0 = 0X3C; //50ms 
	TL0 = 0XB0; 
	TR0 = 1; 
	_50ms = 0; 
	s = 0; 
} 
/*******************定时器1初始化程序******************/ 
void Timer1_Init(void) // 
{ 
	TMOD=TMOD|0x10;
	

 文章借鉴于此纷传

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值