基于单片机的洗衣机设计说明_第1页
基于单片机的洗衣机设计说明_第2页
基于单片机的洗衣机设计说明_第3页
基于单片机的洗衣机设计说明_第4页
基于单片机的洗衣机设计说明_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..单片机原理及系统课程设计评语:考勤10分守纪10分过程30分设计报告30分答辩20分总成绩〔100分专业:自动控制班级:__学号:指导XX交通大学自动化与电气工程学院2014年1月12日基于AT89C51单片机的全自动洗衣机设计1设计目的及要求1.1设计目的洗衣机已成为人们日常生活中必不可少的一部分,但是传统的基于继电器的控制,已不能满足人们对洗衣机的要求。因此设计了基于单片机的洗衣机控制电路系统,由单片机控制实现洗衣机的各项功能。单片机的体积小,控制功能灵活,因此,设计出基于单片机的全自动洗衣机控制电路系统具有很强的实用性。由于个人能力有限,所设计的洗衣机比前沿科技产品要差很远。所以这次课程设计的主要目的在于通过亲手操作,查找资料,培养自己的分析设计能力,把这学期课程中零散的知识进行整合,将理论的知识联系到实际的生活中,在实例中深入理解一些理论知识,并从中有所收获。1.2设计要求模拟全自动洗衣机工作过程。以电机替代洗衣机电机。显示洗衣机工作的状态〔进水、浸泡、洗衣、脱水、结束。显示工作剩余时间〔洗衣程序可自定义,时间精度:秒。洗衣时交替正、反转。2设计方案及原理2.1设计方案利用AT89C51单片机的P0,P1,P2,P3串行口的输入输出功能,控制数码管、电动机、发光二极管的工作状态,进而模拟洗衣机的基本工作过程。洗衣机的主要工作过程是:进水—洗涤—漂洗—换水—漂洗—换水—漂洗—换水—脱水—结束。上述工作过程中,包含三个过程:洗涤过程、漂洗过程、脱水过程。<1>洗涤过程:放好待洗物,启动开关,进水阀通电,向洗衣机供水,供水结束后,洗涤电动机接通电源,通过电机不停的正转、反转,形成洗涤水对洗涤物产生强烈的翻滚作用;同时衣物之间、衣物与四周桶壁之间产生互相摩擦和撞击力,达到洗涤衣物的目的。<2>漂洗过程:漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电机动作是完全相同的。<3>脱水过程:漂洗过程结束后,电动机停止转动,排水阀通电,打开排水阀门排水。当排水到一定程度,满足安全条件时,脱水电动机接通,电机带动脱水桶高速旋转,利用离心力把衣服上的水从桶壁的小眼里甩出。全部洗衣工作完成后,结束指示的LED灯点亮,表示衣物已经洗好,洗衣机就会自动停止工作。2.2设计原理系统设计包括晶振和复位模块,电机驱动模块,LED显示模块,按键控制模块以及数码管显示模块五部分。利用AT89C51单片机芯片,芯片左排引脚外接晶振和复位电路,通过74LS245锁存器连接至数码管,控制数码管稳定显示。右排引脚外接电机驱动电路和各开关以及LED灯。通过人工按压相应的开关,接通电机驱动电路相应的接线端子,实现电机正反转以及LED显示。总体设计原理框图如图1所示。图1系统原理框图通过对开关的操作实现选择想要进行的任何操作。当选择好模式后进入该模式。该模式的参数已装入在单片机中,在单片机中程序的控制下进行工作。程序实现的主要功能是洗涤,漂洗和脱水的控制。其中洗涤时间设初值为136s,由于洗衣过程中电机要不停的正反转,所以用P3.2和P3.3控制。通过流经电机两端电平的高低控制电流的流向,从而改变电机的转向,实现正反转。漂洗过程和洗涤过程较为相似,由于漂洗要多次进行,所以用进水次数标志位flag1控制,当flag1为2,3,4时为漂洗过程。脱水过程是在出水次数flag2的控制下进行。当flag2为4时脱水,当脱水时间到达0后,脱水结束,洗衣结束。上述三个过程中电机工作利用晶体管组成的驱动电路进行驱动。3硬件设计3.1主要元器件在本设计中主要使用了以下元器件:AT89C51单片机芯片、74LS245芯片、晶体振荡器、数码管、发光二极管、直流电动机、三极管。3.2硬件连接图该设计主要应用80C51单片机,外接一些必要的扩展电路,构成系统电路原理图,如图2所示。图2硬件连接图3.3系统设计原理该设计采用模块化的方法,系统原理图分为五个模块,分别为晶振和复位模块,电机驱动模块,LED显示模块,按键控制模块以及数码管显示模块。晶振和复位模块主要通过51单片机的内部振荡方式,产生原始的时钟频率。电机驱动模块主要包含电阻、三极管放大器和一个电机,通过与51单片机的引脚连接,用于驱动相应的洗衣、漂洗和脱水程序。LED显示模块主要通过与51单片机的P0口8个引脚连接,当按下相应按键时,对应的LED指示灯点亮,实现对洗衣机控制过程的指示。按键控制模块,其连接于P3口部分引脚上,实现对洗衣过程的选择及控制。数码管显示模块,其直接与单片机的P2口相连。4软件设计4.1主程序流程图按下K1键,洗衣机进入待命状态;当按下K2键后,洗衣机才进入工作状态。其主程序及流程图见附录2.1。4.2洗涤过程流程图电机正反转均为15s,程序及流程图见附录2.2。4.3漂洗过程流程图漂洗前先打开排水阀排水5s。然后启动电动机漂洗,一次漂洗结束后,接着判断漂洗次数即flag3的值,若flag3为3则漂洗结束,若flag3不为3,则再次执行漂洗操作,进入下一循环。程序及流程图见附录2.3。5系统仿真及实际调试系统仿真结果图如图3所示。图3系统仿真结果图6总结经过一个学期的时间完成了基于单片机的洗衣机控制系统的设计,本系统是基于单片机及其接口技术、计算机技术、微电子技术综合应用的设计。实现了对洗衣机整个洗衣过程的控制包括用户参数输入、洗衣、脱水和结束演奏四个阶段。控制系统主要由电源电路、控制电路两大模块构成。电源电路为控制电路提供稳定的5V直流电压,为电动机提供电;控制电路负责控制洗衣机的工作过程,主要由AT89C51单片机、四位共阳数码管、按键、LED指示灯、电动机、进水排水电磁阀组成。在系统设计中查阅了大量相关的中文和外文资料以及各芯片的厂家技术资料手册借鉴了很多前人成熟的经验。对于以上之粗浅体会进一步的总结和提高,需要有更多的社会实践来提供,我也相信在不久的将来踏入社会,类似这样的设计绝不在少数,只要我们努力学习、勇于实践、勤学好问我们就会懂得以前不明白或不懂的道理,就会很快地成长和成熟起来。我也相信凭着我自强不息勇于拼搏的精神一定能够很快的适应类似设计的需要,适应这个多变的社会,充分发挥长处朝我们的方向不断前进前进再前进!参考文献[1]王思明,张金敏,苟军年等单片机原理及应用系统设计[M]科学出版社2012:176-189[2]谭浩强C程序设计<第四版>[M]清华大学出版社2010:36-60附录附录一源程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint//***************************//sbitmo_r=P3^2; //电机右控制线sbitmo_l=P3^3; //电机左控制线//****************************//sbitkey_menu=P3^4;//菜单按键sbitkey_on=P3^5; //开始按键sbitkey_off=P3^6;//结束按键sbitkey_se=P3^7; //菜单选择按键//***************************//sbitled_in=P0^0; // 进水指示灯sbitled_xi=P0^1; //洗衣指示灯sbitled_pao=P0^2; // 泡洗指示灯sbitled_xx=P0^3; //脱水指示灯sbitled_out=P0^4;//出水指示灯sbitled_over=P0^5;//洗衣结束指示灯sbitled_work=P0^6;//电机工作指示灯sbitother=P3^1; // 脱水电源控制开关sbitanther=P3^0; // 洗衣电源控制开关//******************************//ucharcodenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//*****************************//charsec=0; //时间秒charmin=0; //时间分ucharcount=0; //中断计数ucharflag0=0; //洗衣机工作状态标志ucharflag1=0; //进水次数标志ucharflag2=0; //出水次数标志ucharflag3=0; //泡洗次数标志ucharquan=0;//正反转计数//**********************************//voiddelay<>;//延时函数voidin<>; //进水子程序voidout<>; //出水子程序voidover<>;//结束子程序voidxi<>; //洗衣子程序voidpao<>; //泡衣子程序voidxx<>;//脱水子程序voidon<>;//工作on处理子程序voidse<>;//显示菜单选择voidSEG_display<>; //显示时间子程序voidkey_scan<>;//按键扫描子程序voiddelay<uinti>{ uintx,y; for<x=i;x>0;x--> for<y=120;y>0;y-->;}// 工作on处理子程序//********************************//voidon<>{ TMOD=0x01; TH0=<65536-50000>/256; TL0=<65536-50000>%256; EA=1; ET0=1; TR0=1;P0=0xff; if<flag0==0> in<>; if<flag0==1> xi<>; if<flag0==2> pao<>; if<flag0==3> xx<>; if<flag0==4> out<>;}// 结束子程序//*********************************//voidover<>{ other=0; anther=0; P0=0xff; mo_r=0; mo_l=0; led_over=0; EA=0;}// 进水子程序//*********************************//voidin<>{ anther=0; other=0; P0=0xff; led_in=0; flag1++; mo_r=0; mo_l=0; min=0; sec=8;}// 洗衣子程序//*********************************//voidxi<>{ anther=1; other=0;P0=0xff; led_work=0; led_xi=0; mo_r=1; mo_l=0; min=1; sec=36; quan=0;}// 泡衣子程序//*********************************//voidpao<>{ anther=1; other=0; P0=0xff; led_pao=0; led_work=0; flag3++; mo_r=1; mo_l=0; min=1; sec=35; quan=0;}// 脱水子程序//*********************************//voidxx<>{ other=1; anther=0; P0=0xff; led_xx=0; mo_r=0; mo_l=1; min=0; sec=50;}// 出水子程序//*********************************//voidout<>{ anther=0; other=0; P0=0xff; led_out=0; flag2++; mo_r=0; mo_l=0; min=0; sec=5;}// 显示菜单选择//*********************************//voidse<>{ P0=0xff; if<flag0>=5> flag0=0; if<flag0==0> { led_in=0; } if<flag0==1> { led_xi=0; } if<flag0==2> { led_pao=0; } if<flag0==3> { led_xx=0; } if<flag0==4> { led_out=0; }}// 菜单处理子程序//**********************************//voidmenu<>{ min=0; sec=0; mo_r=0; mo_l=0; SEG_display<>; while<1> { if<key_on==0> { delay<5>; if<key_on==0> { while<!key_on>; on<>; break; } }//**************************// if<key_off==0> { delay<5>; if<key_off==0> { while<!key_off>; over<>; break; } }//****************************// if<key_se==0> { delay<5>; if<key_se==0> { while<!key_se>; flag0++; se<>; } } }}// 按键扫描子程序//*********************************//voidkey_scan<>{ if<key_menu==0> { delay<5>; if<key_menu==0> { while<!key_menu>; menu<>; } }//********************************// if<key_on==0> { delay<5>; if<key_on==0> { while<!key_on>; on<>; } }//*********************************// if<key_off==0> { delay<5>; if<key_off==0> { while<!key_off>; over<>; } }}// 显示子程序//*********************************//voidSEG_display<>{ P1=0x01; P2=num[min/10]; delay<10>; P1=0x02; P2=num[min%10]; delay<10>; P1=0x04; P2=num[sec/10]; delay<10>; P1=0x08; P2=num[sec%10]; delay<10>;}//主函数//*********************************//voidmain<>{ led_in=0; anther=0; other=0; while<1> { SEG_display<>; key_scan<>; }}// 定时器0中断处理程序//**********************************//voidtimer0<>interrupt1{ TH0=<65536-50000>/256; TL0=<65536-50000>%256; count++;if<count==20> { count=0; sec--; if<<flag0==1>||<flag0==2>> { quan++; switch<quan> { case1:mo_r=1;mo_l=0;break; case10:mo_r=0;mo_l=0;break; case15:mo_r=0;mo_l=1;break; case25:mo_r=0;mo_l=0;break; default:; } if<quan==30> { quan=0; } } //**********************************// if<<sec==0>&&<min!=0>> { min--; sec=59; } //**********************************// if<<sec<0>&&<min==0>&&<flag0==0>> //进水结束 { switch<flag1> { case1:flag0=1;xi<>;break; case2:flag0=2;pao<>;break; case3:flag0=2;pao<>;break; case4:flag0=2;pao<>;break; } } //**********************************// if<<sec<0>&&<min==0>&&<flag0==1>>//洗衣结束 { flag0=4; out<>; } //**********************************// if<<sec<0>&&<min==0>&&<flag0==2>>//泡衣结束 { switch<flag3> { case1:flag0=4;out<>;break; case2:flag0=4;out<>;break; case3:flag0=4;out<>;break; } } //**********************************// if<<sec<0>&&<min==0>&&<flag0==4>> //出水结束 { switch<flag2> { case1:flag0=0;in<>;break; case2:flag0=0;in<>;break; case3:flag0=0;in<>;break; case4:flag0=3;xx<>;break; } } //***********************************// if<<sec<0>&&<min==0>&&<flag0==3>> { sec=0; over<>; }}}附录2附录2.1主程序voidmain<>{ led_in=0; anther=0; other=0; while<1> { SEG_display<>; key_scan<>; }}// 定时器0中断处理程序//**********************************//voidtimer0<>interrupt1{ TH0=<65536-50000>/256; TL0=<65536-50000>%256; count++;if<count==20> { count=0; sec--; if<<flag0==1>||<flag0==2>> { quan++; switch<quan> { case1:mo_r=1;mo_l=0;break; case10:mo_r=0;mo_l=0;break; case15:mo_r=0;mo_l=1;break; case25:mo_r=0;mo_l=0;break; default:; } if<quan==30> { quan=0; } } //**********************************// if<<sec==0>&&<min!=0>> { min--; sec=59; } //**********************************// if<<sec<0>&&<min==0>&&<flag0==0>> //进水结束 { switch<flag1> { case1:flag0=1;xi<>;break; case2:flag0=2;pao<>;break; case3:flag0=2;pao<>;break; case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论