引言...............................................................................................................................1
第1章:绪论
1.1洗衣机的分类................................................................................................2
1.2国内外现状及水平........................................................................................2
第2章 设计方案..................................................................................... 4
2.1设计任务........................................................................................................4
2.2洗衣机的设计方案及论证............................................................................4
2.2.1按键.......................................................................................................4
2.2.2 洗衣程序..............................................................................................4
2.2.3 设计总方框图......................................................................................4
2.3洗衣机的设计论证........................................................................................5
第3章 硬件设备..................................................................................... 6
3.1 单片机控制电路...........................................................................................6
3.2 LED数码管模块 ............................................................................................6
3.3单片机的时钟电路....................................................................................... 7
3.4显示电路....................................................................................................... 7
3.5电机的控制电路............................................................................................ 8
第4章 软件设计..................................................................................... 9
4.1主程序设计.................................................................................................... 9
4.2标准洗衣程序设计........................................................................................ 9
4.3洗涤程序的设计.......................................................................................... 10
4.4漂洗程序的设计.......................................................................................... 11
第五章 调试. .......................................................................................... 12
5.1 硬件调试.................................................................................................... 12
5.2 软件调试.................................................................................................... 13 结 论. ............................................................................................... 14 参考文献................................................................................................................. 15 附 录........................................................................................................... 16
附录A 主电路图............................................................................................. 16
附录B 程序..................................................................................................... 16
引 言
目前中国洗衣机市场正进入更新换代的时期,市场潜力巨大,人们对于洗衣机的要求也是越来越高。目前的洗衣机主要有强弱洗涤功能、进排水系统故障自动诊断功能、暂停等七大功能,但是在许多方面还是满足不了人们的需求。这就要求设计者们有更高的专业和技术水平设计出更节能、功能更齐全、更人性化的洗衣机。让洗衣服这项难于逃避的家务劳动,不再成为一种负担。
随着加入世贸组织,跟多的国内外强势品牌加入,研究新的技术开发新的产品,洗衣机行业将爆发新一轮的以“绿色环保”、“节水节能”为主题的大战,而技术制高点则是未来的竞争焦点。在国内从洗衣机市场得到的商情显示由于受水资源不断减少自来水费有所提高等因素的影响,市场上那些用水量比较大的洗衣机销售受阻而具有节水功能的洗衣机的销路不断看好。针对市场需求的变化,一些生产厂家如小天鹅、小鸭、海尔等先后向市场推出了一批节水型全自动的洗衣机。然而随着洗衣机市场的迅速发展和科技的进步创新,随着滚筒洗衣机制作成本的下降,也让滚筒洗衣机得到了很好的普及,市场占有率大幅提升。作为未来技术发展方向之一,变频技术将带动整个洗衣机行业的技术提升,有利于洗衣机产业的升级。
目前的洗衣机都没有实现全方面的兼容,大多数的洗衣机生产的厂家都注重各自品牌的洗衣机的特长,突出一两个与别的洗衣机不同的个性化的功能,洗衣机的各项功能都是由单片机控制实现的,因此设计出基于单片机的洗衣机控制电路系统具有很强的实用性。并且随着单片机技术日新月异的发展,单片机以其集成度高、运算速度快、体积小、可靠运行、价格低廉等特点在过程控制、机电一体化、智能化仪表、家用电器等方面得到了广泛应用。本设计采用AT89S51单片机作为洗衣机控制系统的核心,硬件线路及控制程序的设计室该系统的重要组成部分。硬件线路设计主要包括电源、功能及控制系统、洗衣机状态显示、输出控制电路的设计。控制程序设计主要包括主程序、内部定时中断服务程序、外部中断服务程序的设计。与此同时还介绍了与洗衣机有关的一些常见的电子元器件的基本功能。
第1章 绪 论
1. 1洗衣机的分类
普通洗衣机。其洗涤、漂洗、脱水等功能均须手工转换。
半自动洗衣机。它能在洗涤、漂洗、脱水等功能之间,实现某两个功能的自动转换。
全自动洗衣机。它能自动实现洗涤、漂洗、脱水等所有功能。
1.2 全自动洗衣机在国内外的现状及水平
全自动洗衣机根据结构不同可分为波轮式全自动洗衣机(也叫套桶式全自动洗衣机) 、滚筒式全自动洗衣机和搅拌式全自动洗衣机三大类。波轮式、滚筒式、搅拌式全自动洗衣机分别占全球洗衣机市场份额的33%、52%和15%。搅拌式洗衣机目前还没有进入我国市场,以下仪对波轮式和滚筒式两种洗衣机进行讨论。
(1) 滚筒式洗衣机
更好地软化衣物纤维,减小洗涤过程中衣物的损伤和变形,并且还可以使洗后的衣物柔软而蓬忪,提高温度来洗涤可充分溶解洗衣粉,加快洗衣粉中弱酸性物质与污物化学反应速度,提高沈衣粉中酶的活性,同时有利于溶解汗渍、血渍、降低灰尘、油污的粘附作用,从而可在同样的沈净比下(注:沈净比是国家对沈衣机的质量考核标准中的一个基本指标) ,可大幅度降低洗涤过程对机械外力的需求。
(2)高温能有效地杀死些细菌
加温沈涤的波轮式沈衣机无论怎样的水流,要达到一定的沈净比,就必须有足够的机械力,而机械力对衣物是有损伤的,这就注定了波轮式沈衣机的磨损率人人高于滚筒式洗衣机。各种新水流基本原理是一样的,就是尽量以紊乱的水流减少衣物的缠绕,增大水流的冲刷力用于洗涤,与以前依靠衣物与桶壁和衣物相互之问的摩擦方式相比,水流冲刷对衣物的损伤较小。
(3)波轮式洗衣机
因为滚筒式机的价格人人高十波轮式机,所以波轮式机仍受到普遍欢迎。关于水流:现存波轮式全自动洗衣机的宣传重点放存新水流上,如LG 的拳击棒、松下的双瀑布、荣事达的网络水流等,但正如上面说到过的,各个厂家是用小同的方法实现同一个目标,实际效果也差小多,所以小必太在意。关于程序控制器:新推山的波轮式仝自动洗衣机均采用甲.片机程序控制器,原来的机械式程序控制器基本上已被淘汰。各厂家生产的各种型弓的波轮式全自动洗衣机的控制程序有所不同,最少的也有好儿个控制项,每一项又有几种不同的洗涤程序可供选择,足以满足不同的洗涤要求,所以没有必要考虑这个问题。模糊控制的洗衣机中,单片机通过采集水位传感器、布量传感器、光传感器的信号以及电动机的转速,判断出衣物的质地、多少、肮脏程度,从而自动调整对衣物进行合理的洗涤,缺点是价格太贵。关丁不锈钢内桶:采用不锈钢内桶的目的是为了减小衣物和内桶壁的摩擦力,从而减轻衣物的磨损,选购时应予以考虑。关于同心洗:同心洗是
直接把电动机轴与洗衣桶主轴同心安装,直接驱动。这样在洗涤,特别是脱水的时候洗衣桶震动减小,使噪声得以降低。但要I 说这样会延长洗衣机的寿命是不正确的。
至丁变频洗衣机,其一是可以对不同质地的衣物自动选用不同的电动机转速,从而给不同质地的衣物以恰当的洗涤强度,在保证洗得干净的同时,最大限度地降低衣物的磨损。其二是可以存脱水甩干时,由慢到快地启动,使衣物在桶内分布均匀,脱水效果好,同时由于衣物均匀地分布存洗衣桶的四周,洗衣桶的重心落在轴心上,可以减小震动,降低噪声,这当然是有好处的。缺点也是价格太贵。现在已经有厂家开发出了不需要使用洗涤剂的洗衣机,还有的厂家开发出了更迷你的旅行洗衣机,小到可以在出外旅行的时候随身携带,为了更方便的操作有的厂家还开发出了可以远程控制的洗衣机,怎么样? 是不是看的眼花缭乱,将来的洗衣机会朝着使用更方便、更加节能、更加个性化的方向发展。
第2章 设计方案
2.1设计任务
2. 主要功能
1)设计一台包括进水、排水、洗涤过程、脱水转速、程序切换、及启动暂停等功能的洗衣机 。
2)用1个四位7段LED 数码管显示剩余洗涤时间。
3)不同模式下的过程及转速组合[例如,在棉普通方式下,过程包括洗涤、 脱水;脱水转速为800] 。
2.2洗衣机的设计方案
本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗衣、漂洗、排水和脱水等阶段。控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、4位共阴数码管、开关、蜂鸣器、LED 指示灯组成;外部硬件电路有三极管、电动机组成。
2.2.1 按键
洗衣机面板上有4个按钮K1、K2、K3、K4。
K1为菜单键。
K2为开始键。
K3为停止键。
K4为菜单选择键。
2.2.2 洗衣程序
⑴洗涤过程
通电后,若不选择洗衣周期,则洗衣机从洗涤过程开始。进入洗涤过程,首先进水阀接通,开始向洗衣机供水,当到达要求水位时,进水阀断电关闭,停止进水;电机M 接通,带动波轮旋转,形成洗衣水流。电机M 是一个正反转电机,可以形成往返水流,有利于洗涤衣物。
⑵漂洗过程
与洗涤过程操作相同,只是时间短一些。
⑶脱水过程
洗涤或漂洗过程结束后,电机M 停止转动,排水阀接通,开始排水。排水阀动作的同时,电机M 也接通,使电机可以带动内桶转动。当水位低到一定值,再经过一段时间后,电机开始正转,带动内桶高速旋转,甩干衣物。
2.2.3设计总方框图
图2.3.3设计总方框图
2.3洗衣机的设计论证
在P3.4为低电平是进入菜单选择,菜单选择模式下若P0.0为低电平则进入进水程序,按开始键可进行进水,进水完成后自动进入洗衣程序;若P3.7为低电平检查P0.0、p0.1、p0.2 、p0.3、p0.4的电平,若为低则往下移一位,进入下一个模式,按开始键可从这一模式开始工作。
在P3.4为高电平时不是菜单模式,则去扫描键盘,扫描键盘为进水,洗涤,漂洗,排水,脱水模式,待选择好模式设定好参数后,然后进入相应模式运行。 洗衣机进入自动开始洗衣时,包括进水、洗涤、排水、漂洗、脱水几个过程。 洗衣过程:进入洗衣程序开定时器开始倒计时,根据选择的水位进水,进水完成后,进入洗涤过程,电动机开始正反转过程根据所选模式中设置的正反转次数正反转的时间自动洗衣;待洗涤完成就进入排水过程,排水时间由水位模式设置,排水结束后进入漂洗过程。漂洗过程:先进行一段时间排水,排水结束再进水,进水完成再进行漂洗,漂洗完成再排水,然后重复上述过程两次即完成漂洗过程,漂洗完成进入脱水过程,电机高速旋转,脱水结束,整个洗衣过程也结束,若在洗涤过程中洗衣机出现故障,将会有声光报警装置报警。
电机的正反转实现方式:当P3.2为1,P3.3为0时电机正转,当P3.2和P3.3都为0时电机停转,当P3.2为0,P3.3为1时电机反转。电机正常工作时电机工作状态LED 灯亮。
第3章 硬件设计
3.1主控制器AT89C51
本次设计使用单片机芯片AT89C51(如图),AT89C51的工作特性:内含4KB 的FLASH 存储器擦写次数1000次;内含128字节的RAM ;具有32根可编程I/O线;具有2个16位编程定时器;具有6个中断源,5个中断矢量,2级优先权的中断结构;具有1个全双工的可编程串行通信接口;具有1个数据指针DPTR ;具有可编程3级程序锁定位;AT89C51的工作电源为5(1±0.2)V 且典型值为5V ;最高工作频率为24MHZ ;AT89C51的编程程序频率为3~24MHZ,编程启动电流和电压分别为1mA 、5或12V 。
图3.1 AT89S51的引脚图
3.2 LED数码管模块
常用的LED 为8段或7段。每一个段对应一个发光二极管。这种显示器有共阳极和共阴极2种。共阴极LED 显示器的发光二极管的阴极连在一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED 显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管接低电平时,发光二极管被点亮,相应的段被显示。
为了使LED 显示器显示不同的符号或数字,就要把不同段的发光二极管点亮,这样就要为LED 显示器提供代码,因为这些代码可使LED 相应的段发光,从而显示不同字型,因此该代码称之为段码(或称为字型码)。
图3.2 LED数码管显示模块
3.3单片机的时钟电路
一般地,电容C1和C2取33pf 左右;晶体振荡器,简称晶振,频率范围是
1.2~12MHz。晶振频率越高,系统的时钟频率也就越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6MHz 或12MHz 的晶振。如果系统中使用了单片机的串行口通信,则一般使用频率为11.0592MHz 的晶振。而在本次设计中采用的是频率为12MHz 的晶振。
图3.3单片机时钟电路
3.4显示电路
显示模块由发光二极管和LED 显示器组成。
1.LED (Light Emiting Diode )是发光二极管英文名称的缩写。本次设计中我们采用发光二极管主要是用来指示洗衣机的工作状态。8个发光二极管分别跟单片机的P0口的8个I/O口连接,如图3.4 所示。当发光二极管的负极所对应的P0口为低电平时,发光二极管导通。
图3.4 显示电路
3.5电机的控制电路
电机的正反转实现方式:当P3.2为1,P3.3为0时电机正转,当P3.2和P3.3都为0时电机停转,当P3.2为0,P3.3为1时电机反转。电机正常工作时电机工作状态LED 灯亮。
图3.5 电机的控制电路
第4章软件设计
4.1 主程序设计
根据硬件设计要求控制主程序流程图如图4.1所示。洗衣机通电之后单片机上电首先进行程序的初始化包括定时器0、外部中断0、外部中断1的初始化以及各参数初值的设定。默认洗衣强度为“标准洗”漂洗次数2次。然后扫描按键的状态确定洗衣过程。当发现启动键按下洗衣机从待命状态进入工作状态。完成进水、洗涤、脱水、漂洗的循环过程。当洗衣结束时控制蜂鸣器发声。
图4.1主程序流程图
4.2 标准洗衣程序设计
标准洗衣是默认的洗衣方式,其流程图如图4.2所示:
图4.2标准洗衣程序流程图
4.3 洗涤程序的设计
洗涤是洗衣过程中的主要步骤。当进水结束后进入洗衣状态,洗衣开始,电动机正转-停止-反转一直循环,当洗衣时间等于零时,洗衣结束且进入漂洗。程序流程图如图4.3所示:
4.4漂洗程序的设计 图4.3洗涤程序流程图
漂洗是一个比较固定的洗衣方式,与洗涤过程操作相同,只是时间短一些。漂洗次数为二次。漂洗程序流程图如图4.4所示
:
图4.4漂洗程序流程图
第5章 调 试
5.1 硬件调试
单片机应用系统的硬件调试和软件调试是分不开的,但通常是先排除系统中明显的硬件故障后才和软件结合起来调试。在进行硬件调试时先进行静态调试,用万用表等工具在样机加电前根据原理图和装配图仔细检查线路核对元器件的型号、规格哈安装是否正确。然后加电检查各点电位是否正常。接下来再借助仿真器进行联机调试,分别测试扩展的RAM 、I/O口、I/O设备、程序存储器以及晶振和复位电路并改正其中的错误。
第一步:在没通电之前先用万用表检查线路的正确性并核对元器件的型号、规格是否符合要求。特别注意电源的正负极以及电源之间是否有短路并检查地址总线、数据总线、控制总线是否存在相互间的短路或其它信号线的短路。由于本系统的开发是基于曾经用过的单片机,所以此步骤不会发生故障。
第二步:通电后检查单片机I/O的电位,测量各点电位是否正常。尤其是应注意单片机输出口的各点电位。若有高压将有可能损坏外部仿真电路,同样如果电压过低就没有能力驱动负载。
第三步:将单片机信号输出接口与外部仿真电路接口连接起来,为软件调试做好准备。
在硬件的调试过程中常见的硬件故障有:
元器件失效:元器件失效的原因包括两个方面,一方面是器件本身已损坏另一方面是组装过程中造成元器件失效,当然在调试过程中,我们发现发光二极管接反,继电器损坏。
可靠性差:引起系统不可靠的因素很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;内部和外部的干扰、电源纹波系统过人、器件负载过大或热稳定性差等造成逻辑电平不稳定;另外,走线和布局的不合理等也会引起系统可靠性差。我们在调试的过程中发现单片机输出稳定的电压,但是硬件电路的发光二极管的亮度不一、时亮时不亮。经查证主要是由于元器件的引脚过长和弯曲造成的电路不够稳定、I/O输出口的高低电平没有明确
电源故障:电源故障包括电压值不符合设计要求,电源引出线和插座不对应,电源功率不足,负载能力差等。电压过高容易烧坏发光二极管,电压过低无法驱动负载。因此我们焊接了直流电源电路,使其输出稳定的电压。
5.2 软件调试
软件调试与所选用的软件结构和程序设计技术有关。如果采用模块化程序开发技术,则逐个模块调好以后,再进行系统程序总调试。调试子程序时,一定要求符合现场环境,即入口条件和出口状态。调试的手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU 的现场、RAM 的内容和I/O口的状态,检测程序执行结果是否符合设计要求。通过检测,可以发现程序中的死循环错误、机器码错误及转换地址错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。在调试过程中逐步调整用户系统的软件和硬件。
各程序模块调试好后,可以把相关的功能模块联合起来起进行整体综合调试。存储这个阶段若发生错误,可以考虑各子程序存储运行时是否存破坏现场,缓冲区数据是否发生变化,标志位的建立和清除是否影响其它标志位的变化,堆栈区的深度是否不够,输入设备的状态是否正常等。
单步和断点调试后,还应进行连续调试,因为单片机的运行是在严格的时序下进行的,单步运行成功并不代表连续运行成功。待全部调试完成后,应反复运行多次。
结 论
经过了一周的课程设计,深有感触!刚开始时,我们接到这个任务,大脑一片茫 然,根本不知道如何下手。因为基础知识不够扎实,对各种硬件和程序的认识存在各方面的不足。前期这些障碍给我们造成了很大的困难。我们从最初开始,通过查找各种书籍,上网查阅相关知识,向老师及同学请教。最终才得已完成这份设计。
从本次课程设计的目的来看,收获也是不少的,它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我们知道了,光分开使不够的,从外面学到的知识要把形成一各整体,这也很好的训练了外面对开发一个项目应该有怎样的思路和准备更清晰。来学校两年多了,无论是从C 语言课程设计到金工实习,还是到现在的单片机的课程设计,每一次自己都觉得有一个进步,虽然有些方面自己做不出,但可以从老师和其他同学那里学到更好更多的东西,他们从另一个方面透析了自己的困难,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处。有这样的机会和收获,要感谢老师的辅导以及同学的帮助,是他们让自己有了一个更好的认识。
用isis 及keil uVisiion4软件进行仿真分析。首先要搞清楚洗衣机的工作原理,与外部电路的连接,单片机原理,c 语言等。电路图设计出来后,总是存在各种的问题,我们总是不停地修改,在和队友的交流中,我们不停地修改,最终得出了这份作业,虽然还存在各种的不足,但是看着我们自己辛苦设计出来的作业,心里还是充满了自豪。
这次设计实验,锻炼了我们的团队合作能力,加强了我们的动手能力,我们从这次设计中学到了很多知识,其实设计是一份很有趣的工作。我们基本上是从0开始,不停地学习,研究。遇到问题,想着去解决问题,锻炼了自己查找资料的能力。在学习单片机这条道路上,我们要走的路还很长,我想我们每个学习这一门学科的学生都应该学好这门学科。
参考文献
[1] 杨欣, 王玉凤, 刘湘琴编著.51单片机应用从零开始. 清华大学出版社 [2] 李泉溪编著. 单片机原理与应用实例仿真. 北京航空航天出版社
[3]王琰. 基于AT89C51单片机的洗衣机控制系统设计[J]自动化与仪器仪表, 2008,(04)
附 录
附 录A 主电路图
附 录B 程序
#include
#define uchar unsigned char
#define uint unsigned int
sbit anther = P3^0; // 洗衣电源控制开关 sbit other = P3^1; // 脱水电源控制开关 sbit mo_r = P3^2; //电机右控制线
sbit mo_l = P3^3; //电机左控制线
sbit key_menu = P3^4; // 菜单按键
sbit key_on = P3^5; // 开始按键
sbit key_off=P3^6; //结束按键
sbit key_menuchose=P3^7; // 菜单选择按键 sbit led_jinshui=P0^0; //进水指示灯
sbit led_xiyi=P0^1; //洗衣指示灯
sbit led_piaoxi=P0^2; //漂洗指示灯
sbit led_tuoshui=P0^3; //脱水指示灯
sbit led_paishui=P0^4; //排水指示灯
sbit led_over=P0^5; //洗衣结束指示灯
sbit led_work=P0^6; //电机工作指示灯
sbit led_warning=P0^7; //报警指示灯
uchar
num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char sec = 0; // 时间秒
char min = 0; // 时间分
uchar aa,bb,cc,dd;
uchar count=0; // 中断计数
uchar flag0=0; // 洗衣机工作状态标志
uchar flag1=0; // 进水次数标志
uchar flag2=0; // 排水次数标志
uchar flag3=0; // 漂洗次数标志
uchar err =0; // 报警标志
uchar quan = 0;//正反转计数
// 函数声明
void delay();// 延时函数
void jinshui(); // 进水子程序
void paishui(); // 排水子程序
void over(); // 结束子程序
void xiyi(); // 洗衣子程序
void piaoxi(); // 漂衣子程序
void tuoshui(); // 脱水子程序
void on(); // 工作on 处理子程序
void se(); // 显示菜单选择
void SEG_display(); //显示时间子程序
void key_scan(); // 按键扫描子程序
void bianhuan1(void); //显示时间
// 延时函数
void delay(uint i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=120;y>0;y--); //延时
}
// 工作on 处理子程序
void on()
{
TMOD=0x01; //方式一
TH0=(65536-50000)/256; //定时5ms
TL0=(65536-50000)%256;
EA=1;
ET0=1; //开T/CO中断 TR0=1; //启动T/CO P0 = 0xff;
if(flag0 == 0)
jinshui();
code
if(flag0 == 1)
xiyi();
if(flag0 == 2)
piaoxi();
if(flag0 == 3)
tuoshui();
if(flag0 == 4)
paishui();
}
// 结束子程序
void over()
{
other=0; // 脱水电源控制开关 anther=0; // 洗衣电源控制开关 P0 = 0xff;
mo_r=0;
mo_l=0;
led_over = 0;
EA=0; //总中断
}
// 进水子程序
void jinshui()
{
anther=0; // 洗衣电源控制开关 other=0; // 脱水电源控制开关 P0 = 0xff;
led_jinshui = 0;
flag1++; //进水标志
mo_r = 0;
mo_l = 0;
min = 0;
sec = 8;
aa=0;
bb=0 ;
cc=0;
dd=8;
}
// 洗衣子程序
void xiyi()
{
anther=1;
other=0;
P0 = 0xff; led_work = 0; led_xiyi = 0; mo_r = 1; mo_l = 0; min = 0; sec = 59; quan = 0; aa=0; bb=0 ; cc=5; dd=9; } // 漂衣子程序 void piaoxi() { anther=1; other=0; P0 = 0xff; led_piaoxi = 0; led_work = 0; flag3++; mo_r = 1; mo_l = 0; min = 0; sec = 59; aa=0; bb=0; cc=5; dd=9; quan = 0; } // 脱水子程序 void tuoshui() { other=1; anther=0; P0 = 0xff; led_tuoshui = 0; mo_r = 0; mo_l = 1; min = 0; sec = 30; aa=0;
bb=0 ;
cc=3;
dd=0;
}
// 排水子程序
void paishui()
{
anther=0;
other=0;
P0 = 0xff;
led_paishui = 0;
flag2++;
mo_r = 0;
mo_l = 0;
min = 0;
sec = 5;
aa=0;
bb=0 ;
cc=0;
dd=5;
}
// 显示菜单选择
void menuchose()
{
P0 = 0xff;
if(flag0 >= 5)
flag0 = 0;
if(flag0 == 0)
{
led_jinshui = 0;
}
if(flag0 == 1)
{
led_xiyi=0;
}
if(flag0 == 2)
{
led_piaoxi=0;
}
if(flag0 == 3)
{
led_tuoshui=0;
}
if(flag0 == 4)
{
led_paishui=0;
} }
// 菜单处理子程序
void menu()
{
min = 0;
sec = 0;
mo_r=0;
mo_l=0;
SEG_display();
bianhuan1( );
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);
aa=0;
bb=0;
cc=0;
dd=0;
over(); break; } }
if(key_menuchose == 0)
{
delay(5);
if(key_menuchose == 0)
{
while(!key_menuchose);
flag0++;
menuchose();} } } }
// 按键扫描子程序
void key_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(); } } // 工作on 处理子程序 if(key_off == 0)
{ delay(5);
if(key_off == 0)
{ while(!key_off);
over(); } } }
// 显示子程序
void SEG_display()
{
P1=0xfe; //数码管位选码 P2 = num[aa];
delay(10);
P1 = 0xfd;
P2 = num[bb];
delay(10);
P1=0xfb;
P2 = num[cc];
delay(10);
P1=0xf7;
P2 = num[dd];
delay(10);
}
void bianhuan1(void) //显示时间
{
aa=min/10;
bb=min%10;
cc=sec/10;
dd=sec%10;
}
// 主函数
void main()
{ led_jinshui=0; anther=0; other=0; aa=0; while(1) { bianhuan1( ) ; SEG_display(); key_scan(); } } //扫描按键子程序 // 定时器0中断处理程序 void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) //满20清零 { count = 0; sec--; if((flag0==1)||(flag0==2)) { quan++; switch(quan) { case 1:mo_r=1;mo_l=0;break; case 7:mo_r=0;mo_l=0;break; case 10:mo_r=0;mo_l=1;break; // case 18:mo_r=1;mo_l=0;break; case 18:mo_r=0;mo_l=0;break; default:; } if(quan==19) { quan=0; } } if((sec == 0)&&(min != 0)) { min--; sec = 59; } if((sec
case 2:flag0=2;piaoxi();break;
case 3:flag0=2;piaoxi();break;
// case 4:flag0=2;piaoxi();break; 洗3次*////
default: err=1;led_warning = 0;
} }
if((sec
//洗衣结束
{
flag0 = 4;
paishui();
}
if((sec
//漂衣结束
{
switch(flag3)
{
case 1:flag0=4;paishui();break; case 2:flag0=4;paishui();break; // case 3:flag0=4;paishui();break; default: err=1;led_warning = 0;
} }
if((sec
//出水结束
{
switch(flag2)
{
case 1:flag0=0;jinshui();break; case 2:flag0=0;jinshui();break; //case 3:flag0=0;jinshui();break; case 3:flag0=3;tuoshui();break;
default: err= 1;led_warning = 0; } } if((sec
{ sec = 0;
over();
} } }
// 洗一次 漂
引言...............................................................................................................................1
第1章:绪论
1.1洗衣机的分类................................................................................................2
1.2国内外现状及水平........................................................................................2
第2章 设计方案..................................................................................... 4
2.1设计任务........................................................................................................4
2.2洗衣机的设计方案及论证............................................................................4
2.2.1按键.......................................................................................................4
2.2.2 洗衣程序..............................................................................................4
2.2.3 设计总方框图......................................................................................4
2.3洗衣机的设计论证........................................................................................5
第3章 硬件设备..................................................................................... 6
3.1 单片机控制电路...........................................................................................6
3.2 LED数码管模块 ............................................................................................6
3.3单片机的时钟电路....................................................................................... 7
3.4显示电路....................................................................................................... 7
3.5电机的控制电路............................................................................................ 8
第4章 软件设计..................................................................................... 9
4.1主程序设计.................................................................................................... 9
4.2标准洗衣程序设计........................................................................................ 9
4.3洗涤程序的设计.......................................................................................... 10
4.4漂洗程序的设计.......................................................................................... 11
第五章 调试. .......................................................................................... 12
5.1 硬件调试.................................................................................................... 12
5.2 软件调试.................................................................................................... 13 结 论. ............................................................................................... 14 参考文献................................................................................................................. 15 附 录........................................................................................................... 16
附录A 主电路图............................................................................................. 16
附录B 程序..................................................................................................... 16
引 言
目前中国洗衣机市场正进入更新换代的时期,市场潜力巨大,人们对于洗衣机的要求也是越来越高。目前的洗衣机主要有强弱洗涤功能、进排水系统故障自动诊断功能、暂停等七大功能,但是在许多方面还是满足不了人们的需求。这就要求设计者们有更高的专业和技术水平设计出更节能、功能更齐全、更人性化的洗衣机。让洗衣服这项难于逃避的家务劳动,不再成为一种负担。
随着加入世贸组织,跟多的国内外强势品牌加入,研究新的技术开发新的产品,洗衣机行业将爆发新一轮的以“绿色环保”、“节水节能”为主题的大战,而技术制高点则是未来的竞争焦点。在国内从洗衣机市场得到的商情显示由于受水资源不断减少自来水费有所提高等因素的影响,市场上那些用水量比较大的洗衣机销售受阻而具有节水功能的洗衣机的销路不断看好。针对市场需求的变化,一些生产厂家如小天鹅、小鸭、海尔等先后向市场推出了一批节水型全自动的洗衣机。然而随着洗衣机市场的迅速发展和科技的进步创新,随着滚筒洗衣机制作成本的下降,也让滚筒洗衣机得到了很好的普及,市场占有率大幅提升。作为未来技术发展方向之一,变频技术将带动整个洗衣机行业的技术提升,有利于洗衣机产业的升级。
目前的洗衣机都没有实现全方面的兼容,大多数的洗衣机生产的厂家都注重各自品牌的洗衣机的特长,突出一两个与别的洗衣机不同的个性化的功能,洗衣机的各项功能都是由单片机控制实现的,因此设计出基于单片机的洗衣机控制电路系统具有很强的实用性。并且随着单片机技术日新月异的发展,单片机以其集成度高、运算速度快、体积小、可靠运行、价格低廉等特点在过程控制、机电一体化、智能化仪表、家用电器等方面得到了广泛应用。本设计采用AT89S51单片机作为洗衣机控制系统的核心,硬件线路及控制程序的设计室该系统的重要组成部分。硬件线路设计主要包括电源、功能及控制系统、洗衣机状态显示、输出控制电路的设计。控制程序设计主要包括主程序、内部定时中断服务程序、外部中断服务程序的设计。与此同时还介绍了与洗衣机有关的一些常见的电子元器件的基本功能。
第1章 绪 论
1. 1洗衣机的分类
普通洗衣机。其洗涤、漂洗、脱水等功能均须手工转换。
半自动洗衣机。它能在洗涤、漂洗、脱水等功能之间,实现某两个功能的自动转换。
全自动洗衣机。它能自动实现洗涤、漂洗、脱水等所有功能。
1.2 全自动洗衣机在国内外的现状及水平
全自动洗衣机根据结构不同可分为波轮式全自动洗衣机(也叫套桶式全自动洗衣机) 、滚筒式全自动洗衣机和搅拌式全自动洗衣机三大类。波轮式、滚筒式、搅拌式全自动洗衣机分别占全球洗衣机市场份额的33%、52%和15%。搅拌式洗衣机目前还没有进入我国市场,以下仪对波轮式和滚筒式两种洗衣机进行讨论。
(1) 滚筒式洗衣机
更好地软化衣物纤维,减小洗涤过程中衣物的损伤和变形,并且还可以使洗后的衣物柔软而蓬忪,提高温度来洗涤可充分溶解洗衣粉,加快洗衣粉中弱酸性物质与污物化学反应速度,提高沈衣粉中酶的活性,同时有利于溶解汗渍、血渍、降低灰尘、油污的粘附作用,从而可在同样的沈净比下(注:沈净比是国家对沈衣机的质量考核标准中的一个基本指标) ,可大幅度降低洗涤过程对机械外力的需求。
(2)高温能有效地杀死些细菌
加温沈涤的波轮式沈衣机无论怎样的水流,要达到一定的沈净比,就必须有足够的机械力,而机械力对衣物是有损伤的,这就注定了波轮式沈衣机的磨损率人人高于滚筒式洗衣机。各种新水流基本原理是一样的,就是尽量以紊乱的水流减少衣物的缠绕,增大水流的冲刷力用于洗涤,与以前依靠衣物与桶壁和衣物相互之问的摩擦方式相比,水流冲刷对衣物的损伤较小。
(3)波轮式洗衣机
因为滚筒式机的价格人人高十波轮式机,所以波轮式机仍受到普遍欢迎。关于水流:现存波轮式全自动洗衣机的宣传重点放存新水流上,如LG 的拳击棒、松下的双瀑布、荣事达的网络水流等,但正如上面说到过的,各个厂家是用小同的方法实现同一个目标,实际效果也差小多,所以小必太在意。关于程序控制器:新推山的波轮式仝自动洗衣机均采用甲.片机程序控制器,原来的机械式程序控制器基本上已被淘汰。各厂家生产的各种型弓的波轮式全自动洗衣机的控制程序有所不同,最少的也有好儿个控制项,每一项又有几种不同的洗涤程序可供选择,足以满足不同的洗涤要求,所以没有必要考虑这个问题。模糊控制的洗衣机中,单片机通过采集水位传感器、布量传感器、光传感器的信号以及电动机的转速,判断出衣物的质地、多少、肮脏程度,从而自动调整对衣物进行合理的洗涤,缺点是价格太贵。关丁不锈钢内桶:采用不锈钢内桶的目的是为了减小衣物和内桶壁的摩擦力,从而减轻衣物的磨损,选购时应予以考虑。关于同心洗:同心洗是
直接把电动机轴与洗衣桶主轴同心安装,直接驱动。这样在洗涤,特别是脱水的时候洗衣桶震动减小,使噪声得以降低。但要I 说这样会延长洗衣机的寿命是不正确的。
至丁变频洗衣机,其一是可以对不同质地的衣物自动选用不同的电动机转速,从而给不同质地的衣物以恰当的洗涤强度,在保证洗得干净的同时,最大限度地降低衣物的磨损。其二是可以存脱水甩干时,由慢到快地启动,使衣物在桶内分布均匀,脱水效果好,同时由于衣物均匀地分布存洗衣桶的四周,洗衣桶的重心落在轴心上,可以减小震动,降低噪声,这当然是有好处的。缺点也是价格太贵。现在已经有厂家开发出了不需要使用洗涤剂的洗衣机,还有的厂家开发出了更迷你的旅行洗衣机,小到可以在出外旅行的时候随身携带,为了更方便的操作有的厂家还开发出了可以远程控制的洗衣机,怎么样? 是不是看的眼花缭乱,将来的洗衣机会朝着使用更方便、更加节能、更加个性化的方向发展。
第2章 设计方案
2.1设计任务
2. 主要功能
1)设计一台包括进水、排水、洗涤过程、脱水转速、程序切换、及启动暂停等功能的洗衣机 。
2)用1个四位7段LED 数码管显示剩余洗涤时间。
3)不同模式下的过程及转速组合[例如,在棉普通方式下,过程包括洗涤、 脱水;脱水转速为800] 。
2.2洗衣机的设计方案
本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗衣、漂洗、排水和脱水等阶段。控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、4位共阴数码管、开关、蜂鸣器、LED 指示灯组成;外部硬件电路有三极管、电动机组成。
2.2.1 按键
洗衣机面板上有4个按钮K1、K2、K3、K4。
K1为菜单键。
K2为开始键。
K3为停止键。
K4为菜单选择键。
2.2.2 洗衣程序
⑴洗涤过程
通电后,若不选择洗衣周期,则洗衣机从洗涤过程开始。进入洗涤过程,首先进水阀接通,开始向洗衣机供水,当到达要求水位时,进水阀断电关闭,停止进水;电机M 接通,带动波轮旋转,形成洗衣水流。电机M 是一个正反转电机,可以形成往返水流,有利于洗涤衣物。
⑵漂洗过程
与洗涤过程操作相同,只是时间短一些。
⑶脱水过程
洗涤或漂洗过程结束后,电机M 停止转动,排水阀接通,开始排水。排水阀动作的同时,电机M 也接通,使电机可以带动内桶转动。当水位低到一定值,再经过一段时间后,电机开始正转,带动内桶高速旋转,甩干衣物。
2.2.3设计总方框图
图2.3.3设计总方框图
2.3洗衣机的设计论证
在P3.4为低电平是进入菜单选择,菜单选择模式下若P0.0为低电平则进入进水程序,按开始键可进行进水,进水完成后自动进入洗衣程序;若P3.7为低电平检查P0.0、p0.1、p0.2 、p0.3、p0.4的电平,若为低则往下移一位,进入下一个模式,按开始键可从这一模式开始工作。
在P3.4为高电平时不是菜单模式,则去扫描键盘,扫描键盘为进水,洗涤,漂洗,排水,脱水模式,待选择好模式设定好参数后,然后进入相应模式运行。 洗衣机进入自动开始洗衣时,包括进水、洗涤、排水、漂洗、脱水几个过程。 洗衣过程:进入洗衣程序开定时器开始倒计时,根据选择的水位进水,进水完成后,进入洗涤过程,电动机开始正反转过程根据所选模式中设置的正反转次数正反转的时间自动洗衣;待洗涤完成就进入排水过程,排水时间由水位模式设置,排水结束后进入漂洗过程。漂洗过程:先进行一段时间排水,排水结束再进水,进水完成再进行漂洗,漂洗完成再排水,然后重复上述过程两次即完成漂洗过程,漂洗完成进入脱水过程,电机高速旋转,脱水结束,整个洗衣过程也结束,若在洗涤过程中洗衣机出现故障,将会有声光报警装置报警。
电机的正反转实现方式:当P3.2为1,P3.3为0时电机正转,当P3.2和P3.3都为0时电机停转,当P3.2为0,P3.3为1时电机反转。电机正常工作时电机工作状态LED 灯亮。
第3章 硬件设计
3.1主控制器AT89C51
本次设计使用单片机芯片AT89C51(如图),AT89C51的工作特性:内含4KB 的FLASH 存储器擦写次数1000次;内含128字节的RAM ;具有32根可编程I/O线;具有2个16位编程定时器;具有6个中断源,5个中断矢量,2级优先权的中断结构;具有1个全双工的可编程串行通信接口;具有1个数据指针DPTR ;具有可编程3级程序锁定位;AT89C51的工作电源为5(1±0.2)V 且典型值为5V ;最高工作频率为24MHZ ;AT89C51的编程程序频率为3~24MHZ,编程启动电流和电压分别为1mA 、5或12V 。
图3.1 AT89S51的引脚图
3.2 LED数码管模块
常用的LED 为8段或7段。每一个段对应一个发光二极管。这种显示器有共阳极和共阴极2种。共阴极LED 显示器的发光二极管的阴极连在一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED 显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管接低电平时,发光二极管被点亮,相应的段被显示。
为了使LED 显示器显示不同的符号或数字,就要把不同段的发光二极管点亮,这样就要为LED 显示器提供代码,因为这些代码可使LED 相应的段发光,从而显示不同字型,因此该代码称之为段码(或称为字型码)。
图3.2 LED数码管显示模块
3.3单片机的时钟电路
一般地,电容C1和C2取33pf 左右;晶体振荡器,简称晶振,频率范围是
1.2~12MHz。晶振频率越高,系统的时钟频率也就越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6MHz 或12MHz 的晶振。如果系统中使用了单片机的串行口通信,则一般使用频率为11.0592MHz 的晶振。而在本次设计中采用的是频率为12MHz 的晶振。
图3.3单片机时钟电路
3.4显示电路
显示模块由发光二极管和LED 显示器组成。
1.LED (Light Emiting Diode )是发光二极管英文名称的缩写。本次设计中我们采用发光二极管主要是用来指示洗衣机的工作状态。8个发光二极管分别跟单片机的P0口的8个I/O口连接,如图3.4 所示。当发光二极管的负极所对应的P0口为低电平时,发光二极管导通。
图3.4 显示电路
3.5电机的控制电路
电机的正反转实现方式:当P3.2为1,P3.3为0时电机正转,当P3.2和P3.3都为0时电机停转,当P3.2为0,P3.3为1时电机反转。电机正常工作时电机工作状态LED 灯亮。
图3.5 电机的控制电路
第4章软件设计
4.1 主程序设计
根据硬件设计要求控制主程序流程图如图4.1所示。洗衣机通电之后单片机上电首先进行程序的初始化包括定时器0、外部中断0、外部中断1的初始化以及各参数初值的设定。默认洗衣强度为“标准洗”漂洗次数2次。然后扫描按键的状态确定洗衣过程。当发现启动键按下洗衣机从待命状态进入工作状态。完成进水、洗涤、脱水、漂洗的循环过程。当洗衣结束时控制蜂鸣器发声。
图4.1主程序流程图
4.2 标准洗衣程序设计
标准洗衣是默认的洗衣方式,其流程图如图4.2所示:
图4.2标准洗衣程序流程图
4.3 洗涤程序的设计
洗涤是洗衣过程中的主要步骤。当进水结束后进入洗衣状态,洗衣开始,电动机正转-停止-反转一直循环,当洗衣时间等于零时,洗衣结束且进入漂洗。程序流程图如图4.3所示:
4.4漂洗程序的设计 图4.3洗涤程序流程图
漂洗是一个比较固定的洗衣方式,与洗涤过程操作相同,只是时间短一些。漂洗次数为二次。漂洗程序流程图如图4.4所示
:
图4.4漂洗程序流程图
第5章 调 试
5.1 硬件调试
单片机应用系统的硬件调试和软件调试是分不开的,但通常是先排除系统中明显的硬件故障后才和软件结合起来调试。在进行硬件调试时先进行静态调试,用万用表等工具在样机加电前根据原理图和装配图仔细检查线路核对元器件的型号、规格哈安装是否正确。然后加电检查各点电位是否正常。接下来再借助仿真器进行联机调试,分别测试扩展的RAM 、I/O口、I/O设备、程序存储器以及晶振和复位电路并改正其中的错误。
第一步:在没通电之前先用万用表检查线路的正确性并核对元器件的型号、规格是否符合要求。特别注意电源的正负极以及电源之间是否有短路并检查地址总线、数据总线、控制总线是否存在相互间的短路或其它信号线的短路。由于本系统的开发是基于曾经用过的单片机,所以此步骤不会发生故障。
第二步:通电后检查单片机I/O的电位,测量各点电位是否正常。尤其是应注意单片机输出口的各点电位。若有高压将有可能损坏外部仿真电路,同样如果电压过低就没有能力驱动负载。
第三步:将单片机信号输出接口与外部仿真电路接口连接起来,为软件调试做好准备。
在硬件的调试过程中常见的硬件故障有:
元器件失效:元器件失效的原因包括两个方面,一方面是器件本身已损坏另一方面是组装过程中造成元器件失效,当然在调试过程中,我们发现发光二极管接反,继电器损坏。
可靠性差:引起系统不可靠的因素很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;内部和外部的干扰、电源纹波系统过人、器件负载过大或热稳定性差等造成逻辑电平不稳定;另外,走线和布局的不合理等也会引起系统可靠性差。我们在调试的过程中发现单片机输出稳定的电压,但是硬件电路的发光二极管的亮度不一、时亮时不亮。经查证主要是由于元器件的引脚过长和弯曲造成的电路不够稳定、I/O输出口的高低电平没有明确
电源故障:电源故障包括电压值不符合设计要求,电源引出线和插座不对应,电源功率不足,负载能力差等。电压过高容易烧坏发光二极管,电压过低无法驱动负载。因此我们焊接了直流电源电路,使其输出稳定的电压。
5.2 软件调试
软件调试与所选用的软件结构和程序设计技术有关。如果采用模块化程序开发技术,则逐个模块调好以后,再进行系统程序总调试。调试子程序时,一定要求符合现场环境,即入口条件和出口状态。调试的手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU 的现场、RAM 的内容和I/O口的状态,检测程序执行结果是否符合设计要求。通过检测,可以发现程序中的死循环错误、机器码错误及转换地址错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误。在调试过程中逐步调整用户系统的软件和硬件。
各程序模块调试好后,可以把相关的功能模块联合起来起进行整体综合调试。存储这个阶段若发生错误,可以考虑各子程序存储运行时是否存破坏现场,缓冲区数据是否发生变化,标志位的建立和清除是否影响其它标志位的变化,堆栈区的深度是否不够,输入设备的状态是否正常等。
单步和断点调试后,还应进行连续调试,因为单片机的运行是在严格的时序下进行的,单步运行成功并不代表连续运行成功。待全部调试完成后,应反复运行多次。
结 论
经过了一周的课程设计,深有感触!刚开始时,我们接到这个任务,大脑一片茫 然,根本不知道如何下手。因为基础知识不够扎实,对各种硬件和程序的认识存在各方面的不足。前期这些障碍给我们造成了很大的困难。我们从最初开始,通过查找各种书籍,上网查阅相关知识,向老师及同学请教。最终才得已完成这份设计。
从本次课程设计的目的来看,收获也是不少的,它使我们对课本以及以前学过的知识有了一个更好的总结与理解,也让我们知道了,光分开使不够的,从外面学到的知识要把形成一各整体,这也很好的训练了外面对开发一个项目应该有怎样的思路和准备更清晰。来学校两年多了,无论是从C 语言课程设计到金工实习,还是到现在的单片机的课程设计,每一次自己都觉得有一个进步,虽然有些方面自己做不出,但可以从老师和其他同学那里学到更好更多的东西,他们从另一个方面透析了自己的困难,这是很重要的,它让我学会了怎样学习别人的长处并把它变成自己的长处。有这样的机会和收获,要感谢老师的辅导以及同学的帮助,是他们让自己有了一个更好的认识。
用isis 及keil uVisiion4软件进行仿真分析。首先要搞清楚洗衣机的工作原理,与外部电路的连接,单片机原理,c 语言等。电路图设计出来后,总是存在各种的问题,我们总是不停地修改,在和队友的交流中,我们不停地修改,最终得出了这份作业,虽然还存在各种的不足,但是看着我们自己辛苦设计出来的作业,心里还是充满了自豪。
这次设计实验,锻炼了我们的团队合作能力,加强了我们的动手能力,我们从这次设计中学到了很多知识,其实设计是一份很有趣的工作。我们基本上是从0开始,不停地学习,研究。遇到问题,想着去解决问题,锻炼了自己查找资料的能力。在学习单片机这条道路上,我们要走的路还很长,我想我们每个学习这一门学科的学生都应该学好这门学科。
参考文献
[1] 杨欣, 王玉凤, 刘湘琴编著.51单片机应用从零开始. 清华大学出版社 [2] 李泉溪编著. 单片机原理与应用实例仿真. 北京航空航天出版社
[3]王琰. 基于AT89C51单片机的洗衣机控制系统设计[J]自动化与仪器仪表, 2008,(04)
附 录
附 录A 主电路图
附 录B 程序
#include
#define uchar unsigned char
#define uint unsigned int
sbit anther = P3^0; // 洗衣电源控制开关 sbit other = P3^1; // 脱水电源控制开关 sbit mo_r = P3^2; //电机右控制线
sbit mo_l = P3^3; //电机左控制线
sbit key_menu = P3^4; // 菜单按键
sbit key_on = P3^5; // 开始按键
sbit key_off=P3^6; //结束按键
sbit key_menuchose=P3^7; // 菜单选择按键 sbit led_jinshui=P0^0; //进水指示灯
sbit led_xiyi=P0^1; //洗衣指示灯
sbit led_piaoxi=P0^2; //漂洗指示灯
sbit led_tuoshui=P0^3; //脱水指示灯
sbit led_paishui=P0^4; //排水指示灯
sbit led_over=P0^5; //洗衣结束指示灯
sbit led_work=P0^6; //电机工作指示灯
sbit led_warning=P0^7; //报警指示灯
uchar
num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char sec = 0; // 时间秒
char min = 0; // 时间分
uchar aa,bb,cc,dd;
uchar count=0; // 中断计数
uchar flag0=0; // 洗衣机工作状态标志
uchar flag1=0; // 进水次数标志
uchar flag2=0; // 排水次数标志
uchar flag3=0; // 漂洗次数标志
uchar err =0; // 报警标志
uchar quan = 0;//正反转计数
// 函数声明
void delay();// 延时函数
void jinshui(); // 进水子程序
void paishui(); // 排水子程序
void over(); // 结束子程序
void xiyi(); // 洗衣子程序
void piaoxi(); // 漂衣子程序
void tuoshui(); // 脱水子程序
void on(); // 工作on 处理子程序
void se(); // 显示菜单选择
void SEG_display(); //显示时间子程序
void key_scan(); // 按键扫描子程序
void bianhuan1(void); //显示时间
// 延时函数
void delay(uint i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=120;y>0;y--); //延时
}
// 工作on 处理子程序
void on()
{
TMOD=0x01; //方式一
TH0=(65536-50000)/256; //定时5ms
TL0=(65536-50000)%256;
EA=1;
ET0=1; //开T/CO中断 TR0=1; //启动T/CO P0 = 0xff;
if(flag0 == 0)
jinshui();
code
if(flag0 == 1)
xiyi();
if(flag0 == 2)
piaoxi();
if(flag0 == 3)
tuoshui();
if(flag0 == 4)
paishui();
}
// 结束子程序
void over()
{
other=0; // 脱水电源控制开关 anther=0; // 洗衣电源控制开关 P0 = 0xff;
mo_r=0;
mo_l=0;
led_over = 0;
EA=0; //总中断
}
// 进水子程序
void jinshui()
{
anther=0; // 洗衣电源控制开关 other=0; // 脱水电源控制开关 P0 = 0xff;
led_jinshui = 0;
flag1++; //进水标志
mo_r = 0;
mo_l = 0;
min = 0;
sec = 8;
aa=0;
bb=0 ;
cc=0;
dd=8;
}
// 洗衣子程序
void xiyi()
{
anther=1;
other=0;
P0 = 0xff; led_work = 0; led_xiyi = 0; mo_r = 1; mo_l = 0; min = 0; sec = 59; quan = 0; aa=0; bb=0 ; cc=5; dd=9; } // 漂衣子程序 void piaoxi() { anther=1; other=0; P0 = 0xff; led_piaoxi = 0; led_work = 0; flag3++; mo_r = 1; mo_l = 0; min = 0; sec = 59; aa=0; bb=0; cc=5; dd=9; quan = 0; } // 脱水子程序 void tuoshui() { other=1; anther=0; P0 = 0xff; led_tuoshui = 0; mo_r = 0; mo_l = 1; min = 0; sec = 30; aa=0;
bb=0 ;
cc=3;
dd=0;
}
// 排水子程序
void paishui()
{
anther=0;
other=0;
P0 = 0xff;
led_paishui = 0;
flag2++;
mo_r = 0;
mo_l = 0;
min = 0;
sec = 5;
aa=0;
bb=0 ;
cc=0;
dd=5;
}
// 显示菜单选择
void menuchose()
{
P0 = 0xff;
if(flag0 >= 5)
flag0 = 0;
if(flag0 == 0)
{
led_jinshui = 0;
}
if(flag0 == 1)
{
led_xiyi=0;
}
if(flag0 == 2)
{
led_piaoxi=0;
}
if(flag0 == 3)
{
led_tuoshui=0;
}
if(flag0 == 4)
{
led_paishui=0;
} }
// 菜单处理子程序
void menu()
{
min = 0;
sec = 0;
mo_r=0;
mo_l=0;
SEG_display();
bianhuan1( );
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);
aa=0;
bb=0;
cc=0;
dd=0;
over(); break; } }
if(key_menuchose == 0)
{
delay(5);
if(key_menuchose == 0)
{
while(!key_menuchose);
flag0++;
menuchose();} } } }
// 按键扫描子程序
void key_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(); } } // 工作on 处理子程序 if(key_off == 0)
{ delay(5);
if(key_off == 0)
{ while(!key_off);
over(); } } }
// 显示子程序
void SEG_display()
{
P1=0xfe; //数码管位选码 P2 = num[aa];
delay(10);
P1 = 0xfd;
P2 = num[bb];
delay(10);
P1=0xfb;
P2 = num[cc];
delay(10);
P1=0xf7;
P2 = num[dd];
delay(10);
}
void bianhuan1(void) //显示时间
{
aa=min/10;
bb=min%10;
cc=sec/10;
dd=sec%10;
}
// 主函数
void main()
{ led_jinshui=0; anther=0; other=0; aa=0; while(1) { bianhuan1( ) ; SEG_display(); key_scan(); } } //扫描按键子程序 // 定时器0中断处理程序 void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) //满20清零 { count = 0; sec--; if((flag0==1)||(flag0==2)) { quan++; switch(quan) { case 1:mo_r=1;mo_l=0;break; case 7:mo_r=0;mo_l=0;break; case 10:mo_r=0;mo_l=1;break; // case 18:mo_r=1;mo_l=0;break; case 18:mo_r=0;mo_l=0;break; default:; } if(quan==19) { quan=0; } } if((sec == 0)&&(min != 0)) { min--; sec = 59; } if((sec
case 2:flag0=2;piaoxi();break;
case 3:flag0=2;piaoxi();break;
// case 4:flag0=2;piaoxi();break; 洗3次*////
default: err=1;led_warning = 0;
} }
if((sec
//洗衣结束
{
flag0 = 4;
paishui();
}
if((sec
//漂衣结束
{
switch(flag3)
{
case 1:flag0=4;paishui();break; case 2:flag0=4;paishui();break; // case 3:flag0=4;paishui();break; default: err=1;led_warning = 0;
} }
if((sec
//出水结束
{
switch(flag2)
{
case 1:flag0=0;jinshui();break; case 2:flag0=0;jinshui();break; //case 3:flag0=0;jinshui();break; case 3:flag0=3;tuoshui();break;
default: err= 1;led_warning = 0; } } if((sec
{ sec = 0;
over();
} } }
// 洗一次 漂