精华内容
下载资源
问答
  • 基于单片机技术的智能洗衣机控制系统设计
  • 基于单片机的智能洗衣机控制系统设计.pdf
  • 基于单片机的全自动洗衣机控制系统设计
  • 基于STC12C5A60S2单片机洗衣机控制系统设计.pdf
  • 基于MCS_51单片机洗衣机控制系统设计说明.doc
  • 主要应用于本科毕设《基于51单片机的全自动洗衣机设计》的proteus仿真和C程序
  • 为了更好的模仿人工洗涤过程,提高洗衣机的洗涤质量,针对以单片机为核心的洗衣机控制系统,引入了模糊推理技术。首先阐述了模糊洗衣机的基本原理,完成了系统硬件设计;在软件方面,对检测到的水温及肮脏度、衣质、...
  • 基于单片机的全自动洗衣机控制系统设计.pdf
  • 基于单片机技术的智能洗衣机控制系统设计.pdf
  • 基于MCS-51单片机洗衣机控制系统设计 硬件软件功能
  • 用C51开发的控制系统 有详细的硬件设计电路图 有详细的代码实现
  • 基于51单片机的全自动洗衣机控制系统设计.pdf
  • 基于51单片机的全自动洗衣机控制系统设计.zip
  • 基于51单片机的全自动洗衣机控制系统设计.docx
  • 基于单片机的全自动洗衣机控制系统设计说明.doc
  • 基于单片机的全自动洗衣机控制系统设计论文.doc
  • 基于AT89S51单片机全自动洗衣机控制系统设计论文.doc
  • 《电子DIY》之《单片机实践项目》之基于51单片机洗衣机控制系统设计(电机调速原理) 链接: 添加链接描述

    《电子DIY》之《单片机实践项目》之基于51单片机的洗衣机控制系统设计(电机调速原理)
    链接:
    添加链接描述

    展开全文
  • 基于单片机的全自动洗衣机控制系统设计毕业论文.doc
  • 系统设计并建立一个由微控制器控制的洗衣机控制系统。要求完成以下基本控制功能。 ①.给水和排水的自动控制。 ②.用户定时时间的设定。 ③.电机的正反转。 ④.各种定时和故障报警电路。 ⑤.定时开、关机...
  • 基于51单片机的全自动洗衣机控制系统设计-论文.zip
  • 基于单片机的全自动模糊洗衣机控制系统设计,带电路图和程序。
  • 单片机课程设计基于单片机洗衣机控制系统方案.doc
  • 基于51单片机的全自动洗衣机控制系统设计(1).zip
  • 基于AT89C52单片机洗衣机智能控制系统设计
  • 基于51单片机洗衣机控制系统

    万次阅读 多人点赞 2020-11-16 09:46:23
    摘要: 根据洗衣机的控制要求,从功能要求、硬件设计、软件设计三个方面描述了一个以AT89C51单片机为控制核心的洗衣机控制系统。给出了硬件线路框图和相关的控制程序流程图。 关键词: AT89C51单片机;洗衣机控制系统;...

    设计要求:
    (1)设计一个电子定时器,控制洗衣机作如下运转:定时启动→正转20s→暂停10s→反转20s→暂停10s→定时未到回到"正转20s-→暂停10s→反转20s→暂…“定时到则停止转动;
    (2)若定时到,则停机发出音响信号;
    (3)用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;
    (4)用三只LED灯表示"正转”、“反转”、“暂停"三个状态。


    摘要

    摘要: 根据洗衣机的控制要求,从功能要求、硬件设计、软件设计三个方面描述了一个以AT89C51单片机为控制核心的洗衣机控制系统。给出了硬件线路框图和相关的控制程序流程图。
    关键词: AT89C51单片机;洗衣机控制系统;硬件;控制程序
    Abstract: According to the washing machine control requirements, a control system with the AT89C51 SCMC as the core about washing machines were described in the following three aspects of functional requirements, hardware design, software design. The hardware circuit diagram and related control flow chart of the program were given.
    Key words : AT89C51SCMC ; Washing machine control system ; Hardware ; Control program

    引言

    随着单片机技术日新月异的发展,单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等特点在过程控制、机电一体化、智能化仪表、家用电器等方面得到了广泛应用。本文采用MCS-51单片机作为洗衣机控制系统的核心,硬件线路及控制程序的设计是该系统的重要组成部分。硬件线路设计主要包括电源、功能及控制系统、洗衣机状态显示、输出控制电路的设计。控制程序设计主要包括主程序、内部定时中断服务程序、外部中断服务程序的设计。

    1、设计方案的选择

    洗衣机控制电路是用来控制洗衣机电机的正转反转暂停三个状态的。该电路可以控制洗衣机的定时启动,洗衣机的工作状态,而且当达到定时终点时会停止洗衣机工作同时发出报警信号。时间的显示采用两位数码管(一分钟为单位),按倒计时方式工作,直到达到定时终点而停机。
    第一部分方案:本电路的计数系统因为要求实现倒计时,所以可以用双向计数器74LS192或程序定时计数。根据自身情况,为减少制作成本和产品性价比,本设计采用程序定时计数的方法。
    第二部分方案:显示单元采用数码管显示或者LCD显示,因设计要求采用两位数码管显示,还有考虑到成本问题,本设计采用两位数码管作为显示单元。
    第三部分方案:主控制单元,采用STC89C52芯片或者AT89C51芯片作为硬件核心,STC89C52是一种带4K字节闪烁可编程可擦除只读存储器,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C52是一种高效微控制器,51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案但是运用于电路设计中时由于不具备在线编程(ISP)技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插可能对芯片造成一定的损坏。AT89C51跟STC89C52功能基本相同,但目前STC89C52型号芯片已经停产,所以此设计采用AT89C51作为主控芯片。
    第四部分方案:报警的警铃在工作时间结束后就会响起,但是根据实际情况不能一直的响下去,应此利用一个单稳电路,当暂稳态结束后就可以回到稳态,警铃就不再响了。
    综上比较,本设计采用各分电路的最优化方案。

    2、硬件设计

    2.1 各单元模块电路

    定时显示单元
    在这里插入图片描述

    此模块选用两个一位7段数码管作为显示,跟单片机的P0,P2相连接。

    定时时长控制单元
    在这里插入图片描述

    此模块作为洗衣机定时时间加、减,以及启动洗衣机工作开关。用三个微动开关来控制。

    单片机最小系统单元
    在这里插入图片描述

    此电路是单片机的最小系统,用来作为主控芯片。

    电机状态显示单元
    在这里插入图片描述

    此模块是电机运转显示正反转以及停止状态。

    洗衣机运作单元
    在这里插入图片描述

    报警单元
    在这里插入图片描述

    此单元模块用作定时结束洗衣机停止工作,发出报警信号。

    2.2 仿真结果及分析

    proteus仿真软件采用直观的图形界面创建电路:在计算机屏幕上模仿真实实验室的工作台,绘制电路图需要的元器件、电路仿真需要的测试仪器均可直接从屏幕上选取;软件仪器的控制面板外形和操作方式都与实物相似,可以实时显示测量结果。proteus软件带有丰富的电路元件库,提供多种电路分析方法。作为设计工具,它可以同其它流行的电路分析、设计和制板软件交换数据。EWB还是一个优秀的电子技术训练工具,利用它提供的虚拟仪器可以用比实验室中更灵活的方式进行电路实验,仿真电路的实际运行情况,熟悉常用电子仪器测量方法。可用proteus仿真软件对各单元电路和整体电路进行元器件仿真和运行仿真,便于对设计方案的理解和分析。
    用proteus仿真的总图如图 2.2所示
    在这里插入图片描述

    3、软件设计

    3.1 系统流程图

    在这里插入图片描述

    3.2 源程序

     /*********************************************************************************
     *********************************************************************************/
     //------------------------------------------------------------------------------//
     //							      		                                         //
     //标题:基于单片机的洗衣机控制系统
     //							      		                                         //				
     //创建人:朽木自雕i		 1547013894@qq.com								
     //日期:2019/11/14					修改日期:2020/11/15						
     //描述:																										 									 	      
     //     本设计要做一个简易洗衣机控制系统,用AT89C51作为主控芯片来控制步进电机,控制洗
     //  衣机作如下运转:定时启动→正转20s→暂停10s→反转20s→暂停10s→定时未到回到"正转20s-→
     //  暂停10s→反转20s→暂…“定时到则停止转动,若定时到,则停机发出音响信号,用两个数码管
     //  显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤
     //  过程由“开始”信号开始,用三只LED灯表示"正转”、“反转”、“暂停"三个状态。经仿真运行测
     //  试后,所有功能均正常运行。			                                         //
     //声明:									 									 									 									  //
     //      以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处,		     //
     //      如有商业用途请与作者联系。															
     //																													  							 	   //
     //------------------------------------------------------------------------------//
     /*********************************************************************************
     *********************************************************************************/
    #include"reg51.h"//此文件中定义了单片机的一些特殊功能寄存器
    
    void DelayMs(unsigned int x);//延时函数声明
    unsigned char code Ledcode[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义字符型数组
    unsigned int i,j,disp;//定义两个无符号整型变量i 和 disp
    
    sbit K1=P3^5;
    sbit K2=P3^6;
    sbit K3=P3^7;
    
    sbit MA   = P1^3;
    sbit MB   = P1^4;
    sbit LED1 = P1^5;
    sbit LED2 = P1^6;
    sbit LED3 = P1^7;
    
    sbit BEEP=P2^7;
    
    void DelayMs(unsigned int x)//定义延时函数
    {
    	unsigned char i;
    	while(x--)
    	{
    		for(i=0;i<120;i++);//大约1ms
    	}
    }
    void Beep()
    {
    	BEEP=~BEEP;
    	DelayMs(3000);
    	BEEP=1;
    }
    void zheng()          //模拟电机正反向转动大概20S钟
    {
    	for(i=0;i<20;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 0;
    		LED2 = 1;
    		LED3 = 1;
    		MA   = 0;
    		MB   = 1;
    	}
    }
    void fan()            //模拟电机反反向转动大概20S钟
    {	
    	for(i=0;i<20;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 1;
    		LED2 = 0;
    		LED3 = 1;
    		MA   = 1;
    		MB   = 0;
    	}
    }
    void ting()           //模拟电机停止转动大概10S钟
    {
    	for(i=0;i<10;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 1;
    		LED2 = 1;
    		LED3 = 0;
    		MA   = 0;
    		MB   = 0;
    	}
    }
    void keyscan()
    {
    	if(K1==0)
    	{
    		DelayMs(5);
    		if(K1==0)
    		{
    			for(j=disp;j>0;j--)
    			{
    				zheng();
    				ting();
    				fan();
    				ting();
    				disp--;
    				P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    				P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管	
    				if(disp==0)
    				{
    					Beep();
    				}
    			}
    		}
    	}
    	else if(K2==0)
    	{
    		DelayMs(5);
    		if(K2==0)
    		{
    			disp++;
    			P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    			P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    			if(disp==90)     //最多定时90分钟,即1.5小时
    			{
    				disp=0;
    			}
    		}
    		while(!K2);
    	}
    	else if(K3==0)
    	{
    		DelayMs(5);
    		if(K3==0)
    		{
    			disp--;
    			P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    			P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    			if(disp==0)
    			{
    				disp=91;     //最多定时90分钟,即1.5小时
    			}
    		}
    		while(!K3);
    	}
    }
    
    void main()
    {
    	disp=5;
    	P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    	P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    	while(1)
    	{	
    		keyscan();
    	}
    }				
    

    4、收获和总结

    课程设计是一个探索与实践的过程。虽然我们没有用实际电路来连接调试,但是由于现在的软件功能强大,用软件来仿真也是很好的方法。
    虽然在设计的过程中遇到了这样或那样的困难,但是通过示波器的波形分析,电路的不断改进,困难都一一的克服了。我认为我们在设计的过程中不仅是熟悉了软件的用法,更重要的是学会了设计的方法以及设计的精神。当然说设计的精神似乎有点不恰当,但我认为设计就是一种精神意志的磨练。我曾多次想放弃,想直接去抄袭别人的,但是始终有一股精神支撑着我——课程设计是锻炼的机会,是对将来工作的一种积累,糊弄只会是害了自己。于是我硬着头皮把电路拆了又接接了又拆,虽然很麻烦,也很头疼(到处是线,看的眼睛都花了),不过也是有乐趣在其中的。每当解决一个问题,或者一部分电路实现了其工作都感觉到很高兴,这些细小的成功带给我完成整个设计的力量。于是通过不断的调试,不断的改进终于是把电路弄出来了。虽然我设计出的这个电路能够工作,不过在有些地方还是不够很好的。但是我还是坚持自己原创。比方说,彩灯显示循环控制部分,如果用一个译码器的话很简单的就实现了,不过我还是采用了门电路来搭建。一来是我自己设计的,而来也是复习一下组合逻辑电路的设计。还有BO的置数问题,我几乎是头疼了很长时间,后来大家一起讨论,用示波器观察波形,才知道了原因,然后加以改进。这里我体会到了团结协作的力量。我们将来出去工作也是一个个的团队,自己是团队中的一员,既要独立思考努力为团队作出贡献也要从团队中吸收经验。
    总而言之,受益匪浅。在知识水品上学到了数字电路的知识,体会到了数字电路的巧妙;但更重要的是学会了方法,学会了坚韧,相信只要具备正确的设计方法和坚忍不拔的拼搏意志无论多么复杂多么庞大的电路都会设计的出来!

    5、元器件清单

    在这里插入图片描述

    6、主要参考文献资料

    [1] 李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998.
    [2] 李全利.单片机原理及接口技术[M].高等教育出版社,2003.
    [3] 杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)[J].电子工业出版社,2006.
    [4] 黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社, 2005.
    [5] 陈有卿.集成电路妙用巧用300例.北京:人民邮电出版社,1999.
    [6] 陈安凯.最新集成电路数据手册.北京:人民邮电出版社,1996.
    [7]瞿安连.应用电子技术.北京:科学出版社,2003.

    创作不易,分享更需勇气! 喜欢的可以给点个 关注❤ 给个 赞❤欢迎评论区留言交流~

    展开全文
  • 单片机洗衣机控制系统电路理解

    千次阅读 2020-02-18 19:55:19
    基于51单片机全自动洗衣机模拟控制系统电路图 时钟电路:接的12MHZ无源晶体,晶体两个管脚还要接两个30pf的电容并接地。有了时钟电路,单片机能有序的执行程序代码。 复位电路:51单片机复位只需要在第9脚(RST)接...

    基于51单片机全自动洗衣机模拟控制系统电路图
    在这里插入图片描述
    时钟电路:接的12MHZ无源晶体,晶体两个管脚还要接两个30pf的电容并接地。有了时钟电路,单片机能有序的执行程序代码。

    复位电路:51单片机复位只需要在第9脚(RST)接个高电平持续2us就可以实现。只要保证电容的充放电时间大于2us,即可实现复位,所以电路中电容值是可以改变的。按键按下系统复位,电容处于一个短路电路中,释放了所有的电能电阻两段的电压增加引起的。

    显示电路:本电路采用的是2位共阳极数码管。2位共阴极数码管1.2脚分别为2个数码管的公共端分别接P0.6、P0.7。如果想让第一个数码管亮第二个不亮就P0.6输出低电平P0.7高电平,具体数字由P2.0-P2.7脚的高低电平控制。

    排阻:RESPACK-8是排阻,即网络电阻器,排阻是将若干个参数完全相同的电阻集中封装在一起。他们的一个引脚都连在一起作为公共引脚,其余的引脚正常引出。如果是n个电阻构成的排阻,那么它的引脚有n+1个。一般公共脚在左边,排阻上面有红色点点标记的。接在51单片机P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。

    上拉电阻:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平。 作用:上拉是对器件注入电流;灌电流;当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平。

    下拉电阻:将一个不确定的信号,通过一个电阻与GND相连,固定在低电平。 作用:下拉是从器件输出电流;拉电流。当一个接有下拉电阻的IO端口设置为输入状态时,它的常态为低电平。 上拉电阻和下拉电阻两者共同的作用是:避免电压的“悬浮”造成电路的不稳定。

    蜂鸣器驱动电路:由于蜂鸣器的工作电流一般比较大,以至于单片机的IO口无法直接驱动。所以要利用放大电路来驱动,使用三极管来放大电流就可以了。在这里插入图片描述
    三极管:作用是1.放大电路(工作时三极管工作在放大区)用来组成放大电路晶体三极管具有电流放大作用,实质是三极管能以基极电流微小的变化量来控制集电极电流较大的变化量。如果遇到更大功率的器件或其它交流电源可以用三极管驱动继电器,继电器再控制大电流或交流电源的设备,形成二级驱动。 2.电子开关作用(工作时三极管工作在饱和区和截止区)。

    展开全文
  • /*******************暂停、继续控制宏定义*****************/ #define ZanTing(); ET0 = 0; ET1 = 0; Stop(); #define JiXu(); ET0 = 1; ET1 = 1; #define flag_Ok (flag_JinShui||flag_PaiShui||flag_XiDi||flag_...

    在这里插入图片描述
    在这里插入图片描述

    #include 	<reg51.h>
    #define 	uchar	unsigned char
    #define		uint	unsigned int
    #define		Enable();	EA=1;
    #define		Disable();	EA=0;
    #define		BIAOZHUN		0
    #define		JINGJI			1
    #define		DANDU			2
    #define		PAISHUI			3
    #define		QIANGXI			0
    #define		RUOXI			1	
    #define		T_JinShui		240		//4min*60s
    #define		T_PaiShui		60		//1min*60s
    #define		T_XiDi			360		//6min*60s
    #define		T_PiaoXi_1		240		//4min*60s
    #define		T_PiaoXi_2		120		//2min*60s
    #define		T_TuoShui		120		//2min*60s
    #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_JinShui||flag_PaiShui||flag_XiDi||flag_PiaoXi||flag_TuoShui)
    /*************************管脚定义***********************/
    sbit	LED_BiaoZhun	=	P1^0;	//标准程序显示灯
    sbit	LED_JingJi		=	P1^1;	//经济程序显示灯
    sbit	LED_DanDu		=	P1^2;	//单独程序显示灯
    sbit	LED_PaiShui		=	P1^3;	//排水程序显示灯
    sbit	LED_XiDi		=	P1^6;	//洗涤状态灯
    sbit	LED_PiaoXi		=	P1^7;	//漂洗状态灯
    sbit	LED_TuoShui		=	P2^0;	//脱水状态灯
    sbit	PIN_BaoJing		=	P2^1;	//报警喇叭
    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	=	P3^0;	//选择程序键
    sbit	p32				=	P3^2;	
    sbit	p33				=	P3^3;	
    sbit	SW_ShuiWei		=	P3^6;	//水位开关
    sbit	SW_AnQuan		=	P3^7;	//安全开关
    void Programme_PaiShui(void);
    /*************************数据定义***********************/
    uchar	flag_SEL_ChengXu;			//默认为标准程序,			
    bit		flag_Run;					//运行标志,1为运行
    bit		flag_JinShui;				//进水标志,1为进水
    bit		flag_PaiShui;				//排水标志,1为排水
    bit		flag_XiDi;					//置洗涤标志
    bit		flag_PiaoXi;				//置漂洗标志
    bit		flag_TuoShui;				//脱水标志
    bit		flag_BaoJing;				//报警标志
    uchar 	_50ms;						//每50ms加一次的变量
    uint	s;							//秒
    uint	T_S;						//定时总时间
    uchar	T_Motor;					//电机控制时间
    /*************************延时程序*********************/
    void Delay_10ms(uint T1)	
    {	uint t1,t2;
    	for(t1=0;t1<T1;t1++)
    		for(t2=0;t2<1250;t2++);//10ms
    }
    /**********************管脚初始化程序******************/
    void Pin_Init(void)					
    {	LED_BiaoZhun	=	0;			
     	LED_JingJi		=	1;			
     	LED_DanDu		=	1;		
     	LED_PaiShui		=	1;			
     	LED_XiDi		=	1;		
     	LED_PiaoXi		=	1;			
     	LED_TuoShui		=	1;			
     	PIN_BaoJing		=	1;			
     	PIN_JinShui		=	1;		
     	PIN_PaiShui		=	1;			
     	PIN_Motor_A		=	1;		
     	PIN_Motor_B		=	1;		
    }
    /********************中断初始化程序********************/
    void ExInt_Init(void)				
    {	IT0	=	1;
    	EX0	=	1;
    	IT1	=	1;
    	EX1	=	1;
    }
    /*******************定时器0初始化程序******************/
    void Timer0_Init(void)		
    {	TMOD 	=	TMOD | 0X01;		//定时方式1
    	TH0		=	0X3C;				//50ms
    	TL0		=	0XB0;	
    	TR0		= 	1;
    	_50ms 	= 	0;
    	s = 0;
    }
    /*******************定时器1初始化程序******************/
    void Timer1_Init(void)			
    {	TMOD 	=	TMOD | 0X10;		//定时方式1
    	TH1		=	0X3C;				//50ms
    	TL1		=	0XB0;
    }
    /********************电机初始化程序********************/
    void T_Motor_Ctl(uchar t1,uchar t2,uchar t3)
    {	if(1)
    		T_Motor = t1;
    	if(0)
    		T_Motor = t2;
    	if(flag_TuoShui)	
    		T_Motor = t3;
    }
    
    

    链接:https://pan.baidu.com/s/1CN1g54Ta2VhqEl_q1_Fzaw
    提取码:9jj5

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 699
精华内容 279
关键字:

单片机洗衣机控制系统设计