基于单片机的洗衣机控制系统的设计-毕业论文_第1页
基于单片机的洗衣机控制系统的设计-毕业论文_第2页
基于单片机的洗衣机控制系统的设计-毕业论文_第3页
基于单片机的洗衣机控制系统的设计-毕业论文_第4页
基于单片机的洗衣机控制系统的设计-毕业论文_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

河南理工大学毕业设计(论文)说明书.绪论1.1洗衣机的历史背景从远古时代到现在,在洗衣机之前,洗衣服一直都是一个难以规避的家务,有的田园诗描绘了那是充满乐趣的事,但是那必定是带有理想主义的色彩,现实中并不是那样的。对人们来说,很累是唯一的感觉。俗话说有需求就会有市场,因此,人们发明了洗衣机,现在成为了家家户户必不可少的家用电器,这真是人类历史上文明的巨大进步啊!它的发明使人们在洗衣服的时候节省了很多体力,有更多的精力去做别的自己很想做的事情。此产物得益人类科技与智慧的相结合,我们都是洗衣机变革见证者,之前家里的洗衣机是单筒式,之后变为双筒式,再后来波轮式变为滚筒式,样式愈来愈多,功能愈来愈多,我们使用起来也越来越方便,但能说起一段洗衣机历史的人恐怕是屈指可数的。

19世纪58年代,第一台洗衣机是由美国人史密斯创造出来的,这台洗衣机的创造地点在匹茨堡。圆桶是洗衣机的重要零件,一根直轴被装在桶内,轴是通过摇动和它相连的曲柄带动的。但是,利用这台洗衣机的人都说用着很费劲,衣服还很容易被弄烂,达不到普及的效果。但不用人古板的洗衣服的先河从此之后却由这台洗衣机开启了。在1959年的德国,一种奇怪的洗衣机呈现在人们的面前,这台洗衣机使用一支棍棒作为搅拌器,当棍棒一高一低的运行时通过弹簧装在这根棍棒上的木钉就持续对衣物产生作用力。这样以来,就不用人手洗衣服了,省了很多人力。等到洗衣机发展到19世纪末期的时候,又一种洗衣机呈现在了人们跟前。这种洗衣机有一个可以用手柄就能转动的八角形洗衣缸,首先把热肥皂水在放衣服之前先放在缸内,最后用轧液装置来把已经洗干净的衣物进行挤干。等到上个世纪74年代的时候,有一个叫比尔·布莱克斯的美国人他创造出来了木制手摇式的洗衣机,从那之后,这种洗衣机使手洗时代一去不复返了。这种构造简单的洗衣机,在使用上很让人舒服,它的结构是6块叶片装在木质桶里,衣服要在筒内翻转必须有手柄和齿轮,因此手柄和齿轮就充当了传动件的作用,就这样衣服被洗干净了。从此之后洗衣机改造潮流被掀起。19世纪80年代,用蒸汽作为动力源的洗衣机出现在了美国,由于瓦特的功劳,人力被蒸汽动力所取代的序幕拉开了。就这样洗衣机过了上百年之后,改进很大,刚刚创造出来的洗衣机已经远远落后于了现代的蒸汽式的洗衣机,然而他们原理是相同,没有区别。当今的洗衣机的特色功能为蒸汽洗涤和烘干衣物,高浓度洗涤液和高温蒸气对衣物进行重复的喷淋这是智能水循环系统在当代洗衣机上的使用的功劳,可以在全部的洗涤过程中都使用重复喷淋,一种新的洗涤方式就被创造了出来,这种方式就是蒸汽洗。传统的洗衣机体系在洗涤时必须首先进行的任务是使整个滚筒里的水进行加热,这就是为什么传统的洗衣机在洗涤时比较麻烦的原因所在,蒸汽洗衣方式洗衣的重要目的是使埋藏在衣物深层内的脏的物质进行清洗进而达到清洁衣物的目的,蒸汽发生盒使进来水变为蒸汽后,温度很高的蒸汽就会通过喷嘴快速喷射出来,达到分解衣物污渍的效果。蒸汽洗涤不仅节水省时,而且对衣物中深藏的污渍也能达到很好的净洗效果。我们常常把冬天的穿不到的衣服存放在衣柜中很长时间,时间一久这些衣服就会产生褶皱和异味,而这种洗衣机却能将这些衣物恢复原貌。用这种洗衣机烘干后的衣物很舒展,很好看。

由于蒸汽洗衣机的普遍受欢迎,刺激了洗衣机的快速前进,之后水力洗衣机、内燃机洗衣机都被创造出来了。顾名思义水力洗衣机用水力来带动,水力洗衣机和电力洗衣机不同,水力洗衣机只要有流动的水就行了,靠着水的流动就带动洗衣机的运作。因此水力洗衣机一般情况下都会只需安放在河流的旁边。在19世纪10年代,第一台电动洗衣机终于出现了,它是由美国的费希尔创造出来的,它的出世地点是芝加哥,并且经受住了实验。电动洗衣机的出现使人们完全从家务劳动中解脱出来了,从此步入了自动化时代。在19世纪22年代,洗衣机的洗涤结构出现了变革,它是由美国的玛塔依格公司进行变革的,产生出来了稳固的洗衣机结构,这种稳固的洗衣机得益于拖动式的洗衣机的创造。就这样搅拌式洗衣机愈来愈成为了主流。洗衣机洗衣服的完成过程是通过装在桶内的立轴在电动机的带动下使桶里的水激烈翻滚进而使桶内的衣物也随着上下翻滚,相互摩擦,摩擦掉衣物上的污垢。由于其操作的方便性和洗衣的干净度很高,人们都很喜欢。20世纪32年代,前装式滚筒洗衣机被制造出来了,在世界上这是第一台,它是被美国的一个叫本德克斯公司制造出来的。与现在的一些洗衣机一样,一个桶顺序的完成对衣物的洗涤、漂洗和脱水。非常方便,省去了不少的麻烦。就这样洗衣机的功能开始增多,虽然速度很缓慢,但是又跃上一个新台阶。在众多的洗衣机形式中前置式洗衣机出现了,这是一台全自动的洗衣机。缸的运动主要由一根水平轴带动,同时缸的容量很大。现在的洗衣机被称为上置式,在40年代的时候被制造出来的。

洗衣机随着工业化的持续成长也很快的持续成长着。首先制造出来的是喷流式的洗衣机它是由英国制造的,衣物和洗涤液在筒内的翻滚以至于洗净衣物完全靠着波轮运转时所产生的涡流而实现的。1955年,日本研制出的洗衣机叫波轮式洗衣机,这种洗衣机很有个性、到今天都非常受欢迎,它是在英国的喷流式洗衣机的基础上改造的。带干桶的双桶洗衣机在60年代时侯在工业达到世界领先水平的日本问世了,这种款型的洗衣机被人们称为“半自动型洗衣机”。在日本又被制造出了一种全自动洗衣机,这种洗衣机以微处理器为芯片,就这样从70年代后期开始拉开了洗衣机发展史上大序幕。模糊控制在80年代在洗衣机这项产品上得到了前所未有的流行。近几十年来,电机速度调节技术得到了几近疯狂的变革,其前进速度惊人。就是因为这项技术的快速前进才能够使洗衣机转速变换与调节范围才得到了几近疯狂的的提高。再往后的几年里,电机驱动技术难题被一一攻破,迅猛前进。直接用电机驱动的洗衣机又在日本被制造出来了,代替了别的装置,洗衣机大踏步往前走。现在,滚筒洗衣机成为了人人耳闻目睹的

电器。1.2全自动洗衣机的发展前景二战过后的几年里,洗衣机一直是跨越式发展,开发了一种叶轮式洗衣机,具有独特的风格。这种波轮洗衣机因为它的波轮在桶底安装,因此也被称为滚动式洗衣机。产业密集型的一些国家的全自动洗衣机制造技术在最近的几十年来获得了大踏步的前进的机会,其可观的年总产量让人难以置信,它的社会普及率也高的惊人。在上海市这样的一线城市里人们都嫌双筒式的洗衣机功能太少,人们都有很高的追求,更智能,功能更多是他们的追求,鉴于这些滚筒式洗衣机和波轮式洗衣机就成为了明星。方便省力永远都是人们使用洗衣机的目的,然而现在人们的要求在全自动洗衣机都体现出来了。那么洗衣机还有进步的空间吗?答案是当然有进步的空间了。以下几个方面将是未来的趋势。高度自动化——而今洗衣机愈来愈多功能,只须把衣物纳入到洗衣机内,轻轻的按按钮,水就自动注入,如果用小小的芯片来控制洗衣机,智能化程度更高洗衣服更方便。衣物的重量可以自动的被洗衣机感觉到,能够告知须要加多少水量和洗涤剂。洗衣机还会用好听的音乐提醒用户当前的洗衣机正在运行的过程,使家务做起来更加有乐趣。在洗衣机洗衣服的同时,用户可以利用节省下来的时间,浇浇花,拖拖地等做其他的事情,洗衣机的自动化程度是与其他技术的变革和前是交织在一起的。健康化——值得说的是人们都普遍觉得不管做什么事,或者使用什么科技产品健康都应该放在第一位,对洗衣机而言,人们认为生产厂家应该高度重视洗衣机的健康问题。因此各个洗衣机厂家都进行技术创新,争取最大限度的把洗衣机的健康问题埋葬在出厂前,消除一切因患。洗衣机厂家有的设置更加高级的漂洗程序来消除衣物上的对人类有毒的残留物质,有的洗衣机厂家用臭氧杀菌。节能化——现在国家提倡节能,对环保提出了很高的要求,因此节能就成为了用户挑选洗衣机厂家的标准,在这方面各个洗衣机厂家也做出了很大的努力,例如洗涤剂循环利用系统就被有的厂家安装了,通过循环使用可以节约20%的洗涤剂,极大地提高了洗涤剂利用效率。有的洗衣机厂家安装了水过滤循环系统,把用过的洗衣水通过杂物过滤后重新进行循环使用,大大的达到了节约水资源的目的。洗衣机内的水被充分的利用,这样一来,节省下来的水量将是相当可观的。大容量和微型化——我们都知道,现在的房价真的是愈来愈昂贵,因此我们对房屋的空间利用率的要求很高,总希望购买的家具或者家用电器既不影响使用又占据很小的空间。因此超小型的洗衣机不断地被厂家推出,容量又大,又不占很大的空间,受到了消费者的青睐。小鸭的迷你,海尔的小小神童,惠尔浦的维纳斯,西门子的40厘米超薄型的等等的系列产品充分的利用了有限的空间,达到了占地空间充分小的要求。品种多样化——波轮式、滚筒式洗衣机是两种不一样的洗衣机,其区别主要在洗衣机的洗涤形式上体现着。从滚筒可容纳的衣物容量上看,有很多的衣物容纳度可供用户选择,品种多样化的洗衣机满足了不同偏爱的消费者的需求。有的生产厂家制造出了不用洗涤剂,直接把衣物放进桶中加上水就可以洗衣服的洗衣机,另外有的生产厂家制造出了专门用于旅行的洗衣机,这种洗衣机很小很方便携带。更有甚者,远程控制洗衣机在有些国家已经投入使用了。未来洗衣机产品的性能质量会是行业竞争的利器。来总结一下此家用电器的大致趋势。以后,洗衣机将主要往多功能、节电、节水的方向发展。它的某些先进功能如下所示:1.去除多种污渍。如能够去除含有很多色素的物质,此类物质色素含量极为丰富。2.洗涤容量的多样化。有很多的洗涤容量可以选择,比如2kg、3kg、4kg等等。3.多种控制方式。有机械方式的、有电动方式的、有电子方式的、还有模糊控制方式。4.外观造型多样化。有些用户对洗衣机的颜色也有要求,因此厂家设置不同的外观颜色供用户选择。在往后的一段时间里,多功能、省电、省水的洗衣机一定会受到极大的欢迎,因为从我国的国情出发,我国人口众多,资源相对来说不足,不能满足所有人的用水用电等的要求,有些地区还处于缺水的状态下,因此为了知道各个厂家往这方面发展,我国政府对节水节电的洗衣机等类似的家用电器都有补贴,且降税免税。未来我国洗衣机的各个厂家的发展前景一定会与我国政策保持一致的,只有这样的产品也才会受到普遍的欢迎。1.3洗衣机的基本工作原理现在,洗衣机在我们的每天生活中已经非常普遍了,它既省时又省力还节水,特别是在冬天天气寒冷的时候,人们才会真正的体会到它的好处。现在让我来说一说洗衣机“这位家庭成员”的工作原理吧,微电脑芯片是全自动洗衣机的主体,也就是其中枢神经。同样很多的外部控制电路,也是不可少的,因为它们都参与到了程序控制系统中,成为其不可缺少的部分。此系统承受从操纵面板发过来的行动指令,然后将从外界输入的220V交流电利用电源电路通过变压、整流、滤波、稳压一系列的转换以后,变成了非常稳定的低压直流电压(例如+5V),然后将此电压输送给单片机,在单片机ROM内已经掩膜固化了全自动洗衣机的完整的操作程序后,单片机根据输入的指令和检测到的讯号,调取出内部用来响应的操作程序,通过精确地处理后,发出多种电路控制讯号,在洗衣机工作之前,进水系统接收到程序控制器发出来的打开进水阀的指令后,当水位传感器收到对水位进行控制的命令后就会立即产生动作,使洗衣机保持正常的供水量。等到洗衣机进水达到内部程序所设定的水位后,传感器立即发出命令,水位开关立即闭合,并迅速将闭合信号输送给单片机,这时单片机通过判断,做出两个动作,一是不再向进水电路传输触发信号,电路开关处于截止,进水阀门闭合而停止进水;二是单片机触发信号通过利用其他的输出端交替的输入到程序控制器中的电动机电路开关处,使开关交替导通,进而使电动机在电容器和电感线圈器件的配合下,实现电机的正转和反转,电机又通过机械传动装置,来达到使波轮正转和反转的效果,以实现洗涤和漂洗的过程,当洗涤和漂洗程序结束时,都应该进行排水,这时候,单片机通过输出端口将触发信号传输到排水阀门电路开关处,使此开关由不导通情况转换成导通的情况。这时,洗衣机所使用的电流型号是由220V的交流电通过程序控制器内的整流器件转化而来的,通过这些转化就从交流电变成直流电,电路回路中流过直流电,使排水阀门处于开启状态。洗衣机中的水被排完后,程序控制器内的电动机电路开关通过单片机的触发信号被开启,此处开关被导通,电流又通过电路回路,使电动机处于正向旋转的状态。电机又经过机械转动装置使脱水桶在规定的脱水时间内正向高速旋转,来甩干衣物内的大部分水分,至此,全自动洗衣机的整个洗涤程序就结束了。2.系统设计方案选择2.1MCU的选择STC89C52功率消耗很低、性能很高,且它具有8K的编程空间。对于现在的80C51系列芯片来说,这些芯片的所有的指令和引脚与STC89C52的都能很完美的契合,基本不需要更改其他参数。它不仅能够对其内部进行程序写入,而且对市场上普遍存在的编程器也合用的是片上Flash允许程序存储器。鉴于单芯片上的超级灵敏中央控制器是8位的,还能进行系统编程,因此能够为众多的嵌入式系统提供灵活度很高、很有效的解决方案。其功能很多,其中的典型功能有全双工串行口,片内晶振及时钟电路等等。除此之外,它也可以到达0Hz的静态逻辑操作状态,关于2种软件选择的节电式式同样也可以使用。在空闲模式下,中央处理器不处于运行状态,但是保持持续的运行状态的是RAM、定时器/计数器、串行口、中断。当处在掉电保护模式下时,RAM内容被瞬间保存而防止了数据的丢失,振荡器被冻结住即时的工作状态,单片机的一切工作都处于停止工作的状态,开始重新工作的前提条件是下一个中断或硬件复位。以下是STC89C52的端口介绍:P0口:在单片机中P0端口是一个8位漏极开路双向I/O口。输出端口是它的使用功能,8个TTL逻辑电平都能够受到每一位的驱动。当对外部程序和数据存储器进行访问时,P0口也可被用作低8位地址/数据。P0口可以输出指令字节的前提是对程序进行检查,同时此电阻必须作用。P1口:在单片机中P1端拥有可在内部利用的电阻,此端也是I/O口,它的特点是双向的,位数是8位的。当“1”被写入P1端口时,P1口的内部上拉电阻会把端口拉高,此时它可以被作为输入口使用。当其被当作输入利用时,被外面的电路拉低的引脚将由于里面的电阻的原因而输出电流(IIL)。此外,P1.0被用作定时器/计数器2的外部计数输入(P1.0/T2)而P1.2被用作定时器/计数器2的触发输入(P1.1/T2EX),下面的内容是此脚的另一类的功能。P1.0T2(T2的计数输入)P1.1T2EX(T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在对系统进行编程时用到)P1.6MISO(当系统被编程时会用到)P1.7SCK(当系统被编程时会用到)P2口:在里面存在着起着上拉作用的电阻,此电阻的8位双向I/O口就位于P2上,同时4个TTL逻辑电平能够由P2输出的缓冲器驱动。当“1”被写入P2端口时,它的端口会被在里面起着上拉作用的电阻变成高电平,这时P2可以被当作输入使用。当外部程序存储器被访问时或着当外部数据存储器(比如运行MOVX@DPTR)被16位的地址读取时,高八位地址都会由P2端口送出。当使用8位地址(比如执行MOVX@RI)来访问外部数据存储器时,P2锁存器的内容P2口会输出。P3口:P3端口是一个8位双向I/O口,其里面具有起上拉作用的电阻,4个TTL逻辑电平能够同时被P2端口输出的缓冲器驱动。当“1”被写入到P3端口时,此端口会被里面起着上拉作用的电阻变成高电平,此时端口可以作为输入口使用。P3口的另一类作用如下图,下面一些作用就是其所谓除上述作用外的另一作用。P3端口的第二功能如下:P3.0RXD(此口为串行输入)P3.1TXD(此口为串行输出)P3.2INTO(此端口是OUT中断0)P3.3INT1(此端口是OUT中断1)P3.4TO(T20外部输入)P3.5T1(T21外部输入)P3.6WR(outdata存储器写脉冲)P3.7RD(outdata存储器读脉冲)RST——此脚为复位脚。振荡器一工作,此引脚被视为单片机复位的前提是呈现两个机器周期及以上的信号“1”。ALE/PROG——外部程序存储器或数据存储器被访问时,ALE(称为地址锁存允许)输出脉冲被用于低8位字节地址的锁存。在一般情况下,要注意的是:访问一次外部数据存储器时就会有单个的ALE脉冲被滤去。当FLASH存储器被写入程序时,此引脚会有输入编程脉冲(PROG)的作用。如果需要的话,特殊功能寄存器(SFR)区中的8EH单元的D0位置位的方式,可以被用来对ALE进行暂停动作。此位置位后,ALE的激活只能由一条MOVX或者MOVC指令来实现。另外,由于此引脚会被微弱的拉高,因此单片机在执行外部程序时,应该设置ALE禁止位无效。PSEN——程序储存允许(PSEN)输出,它是RAM的读选通信号,当STC89C52在从外部程序存储器取指令(或常数)时,每一个机器周期内两次PSEN都有效,也就是输出两个脉冲,在这段时间内,当访问外部数据存储器时,将会跳过两次PSEN信号。EA/VPP——访问外部程序存储器的控制信号,想要使CPU仅仅访问外部程序存储器(地址为0000H-FFFFH),则EA端就必须保持为低电平(接地)。但是需要注意的是:倘若加密位LB1已经有程序人为地写入了,则回归初始时EA端的实时状况会受到内部锁存。如果EA端的信号呈现出“1”(连到Vcc上),则内部程序存储器发出的信号将由中央处理器来接收。2.2水位检测传感器的选择传统洗衣机的水位传感器都是选用浮球自动控制水位,水位的实际高度是由浮子带动的电位计测出来的,但是这样做,仅仅能测出某一高度的水位,而不能灵活的在三个水位状态(高、中、低)之间转换,并且需要至少三个不同的电机来驱动进水控制电路。另外传统洗衣机的水位检测都是通过传感器受到压力来工作的,而水位压力的大小往往是根据桶内水在细长的软管内产生的压强而定的,此时水位传感器就相当于压力开关。当我们设定好一个压力值后,往桶内注水就会产生水压,当水量足够达到压力值时就会自动接通电源,这样就达到了开关的作用。洗衣机控制水位的开关分成两种,用元器件控制的为电子式和,其他的就是开关式的。当桶中的水位上升时,就会产生出空气压力,这些被压缩的空气穿过细管再传递给传感器而改变其阻值或着使接通其内置开关使微处理器发生相应的变化,它一旦损坏就会出现注水不准,长时间注水而不动作,排完水后不甩干的情况。当进行检修时应该特别注意检验管道是否破裂,两端密封是否完好,传感器是否漏气,当检验传感器时可以从空气入口处吹入空气同时用量表测量传感器两端的阻值,传感器上的螺钉调节水位。传统洗衣机里的水位传感器其实采用的就是水位压力传感器,但是由于成本较大而且调节很麻烦,所以在本系统中采用红外对管来代替水位压力传感器。分别在高水位和低水位各安装一个,同样可以对水位进行精确的检测,而且操作很简单。因为它是利用障碍物对红外线的阻挡与否来传递信号的,当障碍物(这里就是指水位)挡住红外线时,同时会反射红外线,根据红外线被反射的强度传递出相应的信号。2.3进出水开关的选择传统的的洗衣机接通220V电源后,打开水源阀门,随后按下洗衣机的电源键,进水阀门通电吸合打开,洗衣机就会自动进水。当洗衣机滚筒里的水位达到设置水位时,洗衣机滚筒内进水压力通过塑料软管传到水位控制开关中。由于塑料软管和水位控制开关之间的连接处于密封状态,塑料软管的开口端与洗衣机外筒壁之间连接着,随着自来水进入到洗衣机滚筒内而引起的水位的持续升高,塑料软管中平时处于常态的空气被压缩,压缩的空气传到水位控制开关压力腔中引起压力增大,继而使橡胶薄膜囊膨胀,膨胀的橡胶薄膜囊就会推动气压顶杆膜片,导致微动压力开关动作,水位控制开关的两个常开触点接触导通。洗衣机微处理器就会感知到洗衣滚筒内进水已经达到了预置水位,断开进水电磁阀的电源,与此同时洗衣机启动洗涤等功能。等待洗衣机运行完成一次洗涤程序后,自动将水排出,随着洗衣滚筒内水位降低,水位控制开关压力腔中的气压就会减小,当洗衣滚筒内的水完全排出时,橡胶薄膜囊就会在复位弹簧的弹力下,使微动压力开关恢复成原来的常开状态。至此,洗衣机完成一次洗涤过程。洗衣机的进水开关和出水开关是可以采用市场上的220V交流电磁阀进行进水与排水的,而且进排水速度都很快,考虑到此款洗衣机的水容器体积较大,而且需要单片机控制。也可以采用12V的直流抽水泵来进行进水与排水,首先由单片机调用已置程序控制继电器,然后控制抽水电动机使其进入抽水工作状态,效果很好。从实际情况来考虑,由于电磁阀的成本较高,而且本系统只是模拟全自动洗衣机的功能,并不是真正的要进水和洗衣,因此本系统采用两个继电器来模拟进水阀门和排水阀门,并利用LED指示灯来指示其所处的开关状态。2.4显示模块的选择模拟系统的显示模块方案设计之一是采用LED数码显示器,虽然此显示器占用空间很小,作为数据显示也很简单,但是不适合本设计系统中所显示的数字模式和洗涤重复次数等要求。LCD为显示器,LCD1602为工业字符型液晶显示器这是另一种方案,它能够同时显示16x02即32个字符。LCD1602的型号是字符型的,由于在这个设计中,要求屏幕能够出现字母、数字、符号,因此就必须使用这种型号作为显示屏。它是由若干个5X7或者5X11等点阵字符位构成,每位都能呈现出来字符。点距把每位都进行了分离,行与行是彼此独立且有一定距离的,正是这个原因才使得图形不可以在LCD1602中呈现出来,即时勉强出现也失去了原有图形的摸样,显示效果很不好。它能呈现出16X2的字符,它呈现的字符是两行。鉴于这些优点,此系统的液晶显示模块就是采用的液晶1602作为显示界面的。当洗衣机工作时,液晶1602会时刻显示出洗衣机的即时工作状态,此洗衣机的模拟系统共有4种工作模式,这4种工作模式指的是进水模式,洗涤模式,排水模式和脱水模式。除此之外,当启动键或者停止键按下时,会显示出洗衣机的开启状态或者停止状态。当按下排水键时,屏幕上会出现排水状态。2.5电机驱动的选择在洗涤过程中,洗衣机洗涤效果的好坏主要来自电机的正反转,在不断地洗涤和漂洗过程中电机循环间歇的正反转,为了使衣物在滚筒内来回翻滚进行洗涤,这一过程电机的转速不能过快,但是在脱水过程中电机必须朝着某一方向快速的旋转,以使衣物甩干。此系统的电机驱动模块安装的是驱动芯片L298,它的使能电流能够达到3A,可以完全满足设计的要求。此L298芯片,能够使两个并联的电机转动起来。然而它的驱动方式并不复杂,在这里简略说明一下。L298电机驱动模块有两个电压输入端口,一个电压输送给电机,另一个是给芯片工作与控制逻辑的参考电压。L298驱动主要有四个驱动门,每个IN1,都对应着一个OUT1,倘若IN1的电平为高电平,则OUT1输出的电平亦为高电平,电压为VSS,也就是给电机驱动芯片的供电电压(这里指的不是逻辑电压)。此模拟系统的每两个驱动门构成调节电机转速的脉冲指令,利用此种连接方式就能够使电机在四个象限内进行旋转,实现顺时针工作,逆时针工作,停车和自由滑行。ENA和ENB是L298电机驱动模块的使能端口,倘若运用PWM来对电机进行调速,就完全可以在ENA和ENB中分别输入PWM信号,IN1和IN2用来控制电机的正反转而IN3和IN4用来控制电机的停止。为了使电机接线更方便,电机驱动L298模块的电路板专门设计了输出接线端子,它的输出端子分别是:OUT1,OUT2,OUT3,OUT4。除此之外,为了方便的对四线的步进电机进行接线操作,把四位排针设计在接线端子上,输出信号与接线端子具有相同的接线顺序。下图2-1为L298电机驱动的内部电路原理图。图2-1L298内部原理图2.6系统的总体设计下图2-2为此系统的总体方案款图。STC89C52单片机是此模拟系统的中央处理器,模拟系统主要由液晶显示、系统报警、水位检测、进出水调节、电机转速调节、功能按键等模块构成。当启动按键被按下时,模拟系统的进水开关开启,洗衣机滚筒内开始进水直至高水位传感器检测到水已满,随后进水开关关闭立即启动直流电机使其转动,模拟洗衣机洗涤衣物状态。等到洗衣服时间到,电机自动停止转动,然后出水开关被启动直至低水位传感器将水已空的信号传到中央处理器。随后出水开关关闭。然后电机被启动,进入加速旋转状态,洗衣机正在脱水。最后蜂鸣器报警完成清洗并自动停机。此系统的运行状态包括进水,洗衣,排水,以及脱水。这四个工作状态既可以达到全自动依次运行的效果直到洗衣结束,又可以通过按键操作单独运行。标准和强洗是系统开机默认状态。工作模式的转换由“程序”按键来实现,标准、经济、单独和排水是洗衣机的四种工作程序。当选择程序时对应的程序状态上的灯被点亮,一旦工作运行状态被选好,按下“启动”按键后系统就会运行相应的工作状态。当“单独”程序被选定后,通过“过程”按键就可以选择要单独运行的过程,液晶会显示器会显示所选择的过程。除此之外,洗涤的两种状态(强洗和弱洗)可以通过“强度”按键来选定,对应的指示灯也会点亮。停止键会瞬间暂停当下的状态,使屏幕回到初始状态下的“stopmode”的状态。下图2—2为本系统的原理框图。系统的原理框图清楚的反映出系统工作时的大致情况,便于对系统的整体运行有所把握。图2-2系统原理框图3.系统硬件设计3.1MCU电路设计STC89C52是此系统的芯片。此芯片的功耗很低,性能很高而且本身具备8K的系统可编程空间。80C51系列产品的全部指令和引脚都能被它很完美的兼容。在系统内的被写进程序和对常规编程器的写进程序都需要由片上Flash允许程序存储器来实现。精巧的8位处理器以及可对系统进行写进程序的空间都在芯片上,众多的嵌入式系统的解决方案都由STC89C52提供,而且所提供的解决方案的灵活度都很高还很有效。STC89C52本身的众多标准功能在前面已经有所陈述。除此之外,STC89C52能够达到0Hz静态逻辑操作状态,同样支持两种软件选择的节电模式。当不对系统作任何操作时,中央处理器不运行,但是RAM、定时器/计数器、串行口、外部中断都能保持持续的运行状态。在掉电保护模式下,RAM内容被保存而防止了数据的丢失,RAM的即时的工作状态被振荡器冻结住了,单片机都处于工作停止状态,当下一个中断或硬件复位时才单片机才会开始重新进入工作状态。STC89C52电路原理图如图3-1所示。图3-189c52最小系统电路图3.2电路设计中的液晶显示液晶1602是此系统的液晶显示模块。当洗衣机工作时,液晶1602会时刻显示出洗衣机的即时工作状态,此洗衣机的模拟系统共有4种工作模式,这四种工作模式指的是进水模式,洗涤模式,排水模式以及脱水模式。除此之外,当启动键或者停止键按下时,会显示出洗衣机的开启状态或者停止状态。当按下排水按钮时,屏幕会呈现出排水状态。下图3-2是液晶1602的管脚图和实物图。图3-2液晶1602的管脚图和实物图液晶1602共有16个引脚接口,其中的几个引脚在下面介绍:第1脚:VSS是电源地第2脚:VCC连接5V正电源第3脚:V0脚是调整对比度的端口,当此端口接电源正极时对比度最弱时对应端口接电源的正极,对比度最高时说明正在接电源(“鬼影”的产生源于对比度过高,所以为了防止产生鬼影而控制对比度,在使用时接一个10k的电位器来调整对比度)。第4脚:RS是选择寄存器的引脚,数据寄存器的选择对应着RS引脚出现高电平1、指令寄存器的选择对应着RS引脚出现低电平0。第5脚:RW是读写信号线读操作对应着RW出现高电平1,写操作对应着RW出现低电平0。第6脚:E(或者EN)端,英文enable。第7~14脚:8位的双向数据端口是从D0到D7的8个端口。第15~16脚:这个引脚的功能是空脚功能和背灯电源功能,背光正极是15脚的功能,1背光负极是16引脚的功能。图3-3为液晶1602的内部电路原理图。图3-3液晶1602电路图3.3电机驱动电路设计在此系统中,驱动电机旋转的驱动芯片为L298,L298N属于美国的SGS公司的产品之一,纵观其驱动芯片的内部结构,4通道逻辑驱动电路是它的内部设计电路。此驱动器专属于二相和四相电机中为电机提供驱动,驱动电机的工作。二个H桥的高电压大电流此类电机里面的驱动器的型号是双全桥式的,这种型号有两个H桥电路。这种驱动器可以驱动TTL信号,能够驱动电压和电流分别是46V、2A及以下的电机。图3-4是L298电机驱动芯片的管脚图。图3-4L298管脚图L298芯片的电路原理图就是下图3-5。逻辑电源和动力电源是它的两路电源,图中5V的电源是它的逻辑电源,而12V的电源是它的动力电源。倘若让ENA和ENB通过5V逻辑电源相连接,则两个电机始终都会保持在使能状态下运行,而电机的运行状态只能通过IN1和IN2,IN3和IN4两个接口来控制。鉴于此系统使用以线圈进行绕制的电机,所以当其瞬间由旋转切换为停止时会形成很大反向电流,以及电机瞬间由顺时针旋转切换为逆时针转转时同样在线圈中形成很大反向电流,因此我们装入一个二极管,它的主要作用就是当芯片中出现反向电流时立即进行泄流,防止烧毁芯片,以确保芯片的安全。此保护措施也被用于各个输入端,即在各个输入端也加入泄流二极管。3.4进出水开关电路设计传统的洗衣机进出水开关采用的都是排水电磁阀,从实际出发,鉴于电磁阀的成本较高,且此系统只用于模拟全自动洗衣机的各种工作状态,并不是真正要进水和洗涤衣物,因此此系统的进水阀和排水阀用两个继电器来模拟,其开关状态用指示灯来指示。下图3-6为此系统的水位开关电路图。在图中继电器的通断用三极管来控制,并且二极图3-5L298电路图管反向并联在继电器的两端,由于继电器在关断状态下会产生很大的电磁能,因此安装这个二极管是有原因的,他就是专门为继电器线圈中的电磁能提供释放通道用的。图3-6水位开关电路图3.5水位传感器的电路设计水位压力式传感器是传统洗衣机所采用的水位传感器,鉴于其成本较大且操作麻烦,因此本系统用两个红外对管代替。两红外对管分别放于桶的上面和桶的底部,来检测水的高度。红外线发射管、红外线接收管合起来就简称为红外对管,其工作原理是红外线发射管发射出红外线,若有物体在其前方红光被物体反射回来,反射回来的红光就会被对管中的另一个管收到,继而就会产生出一个电压,接收到的红外线强度就能反映出电压的大小。为了不使用AD转换器测量电压量,本系统利用电压比较器将这一过程所产生的电压与一电压值可调的电压做比较,来把红外对管的输出直接变为数字量,提供给单片机。它的电路原理图如图3-7所示。图中红外对管用的是ST188,比较器利用双运放LM358,且各有一个指示灯与两个传感器相连。图3-7水位传感器电路图3.6功能按键电路设计此系统共有5个功能按键,它们分别是“启动”、“停止”、“程序”、“过程”和“强度”按键。系统共有6个指示灯。其中4个分别指示标准、经济、单独和排水程序。另外2个指示洗涤是强洗还是弱洗。若在系统默认状态下按下启动按键,系统就会进入自动洗涤状态。若按下停止按键,系统停止,在停止状态下,4种工作程序可通过“程序”按键来选择,在单独模式下若要使进水,洗涤,排水,脱水过程单独执行,可通过“程序”按键实现。所选功能通过“启动”按键被执行。下图3-8是按键的电路原理图。图3-8功能按键电路图3.7系统报警电路设计蜂鸣器是本系统的报警模块,另外报警指示灯与蜂鸣器相连,当洗涤过程完成时,蜂鸣器报警且报警指示灯闪烁。其原理很简单,下图3-9就是此系统报警模块的原理图。图3-9系统报警电路图3.8系统电源电路设计此系统的电源设计取决于系统需要几种电源,鉴于系统的MCU的IO电压是5V,因此此系统需要一个5V的电源,此电源为系统中的继电器与蜂鸣器提供5V电压。而直流电机需要12V的电压,因此系统共需要2种电压等级来为系统供电,出于简化电路设计的考虑本系统的输入电压用12V,然后再利用稳压芯片7805将12V转换成5V。下图3-10为系统电源原理图。图3-10系统电源原理图4.系统软件设计4.1系统软件总体设计模块设计是此系统的软件设计方法,此系统软件共有5个模块,它们分别是系统停止软件模块,系统启动软件模块,系统工作模式切换软件模块,系统过程选择软件模块,系统洗涤强度切换软件模块。功能按键和液晶协调各个软件模块的工作,为了使系统的设计完美的达到任务要求。图4-1是软件设计的最顶层模块的程序流程图。首先需要经过一系列的初始化使软件设计的最顶层模块进入初始状态,然后进入功能按键扫描刷新MODE值,若任何按键都没有被按下,则MODE值不改变,最后依据MODE值进入到对应的底层软件模块。执行完后又从新按键开始重新扫描。图4-1软件总体流程图4.1.1洗衣机停止软件模块设计若MODE=0,则表示洗衣机正处在停机状态,停机程序的执行是很简单的,就是使液晶显示一直处于刷新状态,关闭洗衣机的直流电机,使其处于转速为零的状态,使进水开关和出水开关都处于关闭状态。下图4-2为其内部流程图。图4-2洗衣机停机软件模块流程4.1.2洗衣机启动软件模块设计如果MODE=1,则表示洗衣机系统使洗衣机启动进入全自动洗衣状态,下图4-3是启动洗衣机的软件设计的总体流程图。一开始系统会判断此程序是单独执行洗涤的某一个过程,还是执行洗涤的全部过程直到洗涤结束。如果单独工作模式要运行,所选择的过程就会被系统单独执行。在单独工作模式下,可以通过“过程”按键来选择将要单独执行的某一过程,MODE=3时会执行此过程。图4-3洗衣机启动软件模块流程图图4-4进水过程软件模块流程图当洗衣机的状态为进水状态时,进水开关会被系统首先打开,前面已陈述继电器模拟本系统的进水开关,进水开关继电器被打开后,就会等待直到高水位传感器发出水满信号。下图流程图中的K2是停止按键,因为要求系统在运行任何状态时都可以按K2键进入停机状态,因此在此过程中需要不断的检测K2的状态。上图4-4为其软件流程图。图4-5洗涤过程软件模块流程图洗涤状态是洗衣机的下一个运行状态。洗涤过程开始运行后,检测系统当下的工作模式和洗涤强度是首先进行的工作,洗衣机模拟系统会根据当下所处的工作模式和洗涤强度来运行相应的洗涤程序,例如:在强洗状态下电机的正、反转驱动时间都是8秒,中间间歇时间都为2秒;在弱洗状态下电机正、反转驱动时间都为6秒,中间间歇时间都是4秒。又例如,处于标准模式下时,本系统正反转洗涤循环次数为8次,处于经济模式下时系统的正反转循环洗涤次数为5次。上图4-5为其软件流程图。同样,在此状态下也需要重复的检测K2。为了能够随时使系统进入停止状态。当洗衣机洗涤过程结束后紧接着就是排水过程,需要知道的是执行排水软件模块时和执行进水软件模块时的过程是一样的,下图4-6是其软件的流程图。当系统执行排水过程完成后,同时系统显示界面也完成,然后排水开关就会被立即打开,随后直到低水位传感器检测到系统内水已经排空。当水排空信号发出后排水开关就会被系统立即关闭。同时也需要时刻检测K2(停机按键)。同前所述,也是为了能使系统随时停止。图4-6排水过程软件模块流程图当本系统执行完排水过程后会立即进入脱水过程,系统在脱水状态下,洗衣机的直流电机就会进入高速旋转状态。在设计系统的脱水过程时,脱水过程的脱水时间被我们用软件程序设定为30秒,下图4-7为其软件流程图。图4-7脱水过程软件模块流程图最后系统将执行洗涤完成报警过程,执行该过程时,蜂鸣器及报警LED灯会开启,报警3S停止。蜂鸣器和报警灯自动关闭退出。过程很简单,下图4-8为其软件流程图。图4-8报警软件模块流程图4.1.3洗衣机工作模式选择软件模块设计如果MODE=2;则表示系统此时正处在洗衣机工作模式下,本系统共有4种洗衣机工作模式,它们分别是标准、经济、排水和单独模式。下图4-9为其软件模块流程图。图4-9工作模式选择软件模块流程图4.1.4洗衣机工作过程选择软件模块设计如果MODE=3;则表示系统此时也正在处于洗衣机工作模式下,同样也共有4种系统设计的洗衣机工作模式,它们分别是进水、洗涤、排水和脱水过程。下图4-10为其软件模块流程图。图4-10工作模式选择软件模块流程图4.1.5洗衣机洗涤强度选择软件模块设计如果MODE=4;则表示系统此时正处于洗衣机洗涤强度的软件模块下,此软件模块的功能很简单,主要是转换电机正反转洗涤所需要的时间。具有两个状态,强洗和弱洗。在强洗状态下正转和反转的驱动时间都是8秒,间歇时间都是2秒;在弱洗状态下正转和反转的驱动时间都是6秒,间歇时间都是4秒。另外有两个指示灯指示其所处状态。设置出强弱两种的洗涤状态,是出于对使用者的可选择性方面考虑的。如果使用者认为衣物必须要强洗才能洗干净,那么用户可以设置强洗来达到最佳的洁净效果。但是强洗的唯一缺点是它的洗衣强度过大,对于容易毁坏的衣服如果设置强洗,则容易弄破衣服。因此,弱洗状态就可以发挥它的作用了,对于易破的衣服就可以设置强洗来使衣服在洗净的条件下又不至于损毁衣服,对衣服是有好处的。5.系统仿真设计本系统仿真所用的仿真软件是proteus7.8版本,其中三个此系统的总体仿真过程图(开机默认状态,洗涤过程,脱水过程)见附录二。接下来简单的讲述一下各个模块在仿真图中的设计状态。MCU系统仿真设计由前所述本系统的MCU所采用的单片机是STC89C52,由于这款单片机是完全国产的,因此在proteus仿真软件中找不到,就用了AT89C52单片机来代替,它们之间的区别仅仅在存储空间上。STC89C52单片机的存储空间为8K而AT89C52单片机的存储空间为4K,除此之外,引脚完全相同。本系统的设计之所以采用STC89C52单片机的原因是其存储空间大且完全能够实现系统所要求的功能,其次是它的结构简单,且价钱比较便宜。MCU的Proteus仿真图如下图5-1所示。图5-1MCU系统仿真图按键与液晶显示仿真设计“启动”、“停止”、“程序”、“过程”、“强度”按键是本系统的5个功能按键。另外此系统共有6个指示灯,其中有4个指示灯分别指示“标准”,“经济”,“单独”,“排水”程序。还有2个指示灯分别分配给强洗状态和弱洗状态,用来指示强洗和弱洗。当本系统被开启时,首先会进入系统开机默认状态,在默认状态下,“标准”程序的对应指示灯和强洗状态指示灯处于点亮状态。当启动按键被按下时,系统会自动进入衣物洗涤状态。当停止按键被按下时,系统就会立即停止所处的一切状态,在停止状态下,如果要选择4种工作程序的某一程序可通过“程序”按键来实现。如果想单独执行进水,洗涤,排水,脱水4个过程中的某一个过程,则可以在单独程序模式下通过“过程”按键来实现。所选功能的运行可以通过“启动”按键来执行。下图5-2为其系统按键仿真图,此仿真图不是系统的开关的开机默认状态,而是在强洗状态下,通过过程开关选择了单独模式,对应的单独模式的指示灯点亮。图5-2按键仿真图进水、洗涤、排水和脱水4个过程是洗衣机的4种工作过程。另外,当我们按下启动按键或者停止按键时,开启或者停止状态就会显示在洗衣机的液晶显示屏上。实物设计时运用的液晶显示屏是LCD1602,但是在proteus仿真软件中没有LCD1602这一电气元器件,因此仿真时利用LM016L取代LCD1602。其显示与LCD1602没有任何区别,而且可以很完美的达到显示要求。下图5-3为液晶显示器在仿真软件中的仿真图形。除此之外,仿真时下图5-4为液晶显示器在洗衣机运行过程中的各种状态。图中的“stopMode”说明此时系统正处于停机状态中,“IntoWater”则说明此系统正处于进水状态中,“WashClothes”说明此时系统正处于洗涤过程中。“DrainWater”说明此时系统正处于向外排水过程中。“Dehydration”说明此时系统正处于脱水过程中。最后的“WARNING:Finish”说明此时系统正处于洗涤完成报警过程中。图5-3液晶仿真图图5-4洗衣机各过程仿真显示图进出水开关仿真设计此系统的进水阀和排水阀是由两个继电器来模拟的,通过继电器的通断控制进水和排水。而且接有指示灯专用于指示其相应的开关状态,下图5-5是其仿真图。此处进出水开关的仿真图中灯处于点亮状态中。图5-5进出水开关仿真图水位检测仿真设计ST188红外对管是本系统的水位检测传感器,但是在Proteus7.8版本的仿真软件中没有红外对管,而且对于类似的无线设计一般情况下都没办法进行仿真,所以在仿真系统中就采用两个开关来代替。其仿真图如图5-6所示。此仿真图下,表示低水位开关打开,说明水位已空了。图5-6水位检测仿真图(5)完成报警仿真设计完成报警本身就很简单,如下图5-8就是本系统的完成报警仿真图。图中正处于报警状态。图5-8完成报警仿真图(6)电机驱动设计L298是洗衣机控制系统的电机驱动芯片,在仿真设计中,电机的驱动芯片仍然用L298来进行仿真模块。其仿真图如图5-9所示。图5-9电机驱动仿真图6.总结在这次设计的全自动洗衣机中,它的微控制器是单片机,单片机的型号是STC89C52。还用到了一个L298型号的电机驱动来驱动电机转动和两个ST188的红外对管来检测水位,另外还有功能按键和1602液晶显示屏。由于这些电子器件的价格比较合理,所以基本上解决了成本高的问题。从技术上来看,没有涉及到多么高深的专业性技术,主要都是大学本科期间所学到的知识,因此从技术和大批量生产上来看发展前景都很好。这就为全自动洗衣机的普及扫清了一切障碍。作为一名电气工程系的本科毕业生,应该能够很容易的设计出一些比较简单的系统电路来。但是我们应该关注的是,所设计出来的电路应该有较高的实用价值,是符合市场的要求和发展趋势的。这次设计的系统就是充分对市场进行调查的结果。尽管我一直都很专注于这次设计的完美性,但是依然有一些问题有待解决。例如在设计的人性化上如果能够用动听的音乐来提醒用户衣服洗涤的进度,那么会增加亲切感,会更加完美。在实际的电路设计中我的收获也是颇丰的,因为这次设计所涉及到的专业知识很多很杂乱,因此为了保质保量的完成毕业设计,对以前的知识温故,对大学里的所有知识也进行了系统的归纳和总结,为我的设计做出了很大的贡献。无论是从理论知识上还是从动手能力上我都感觉到自己的知识体系更加完备动手能力更加提高了。基于这些,对我未来走上工作岗位,更出色的完成我的本职工作,会有极大的帮助,同时我自己也具有对未来的工作学习的必胜的信心。7.致谢语光阴似箭,在忙忙碌碌中我结束了我这篇大学中的最重要的文章的撰写。这几年的大学生活也随着我的毕业论文的完成即将画上一个圆满的句号。从进入这座美丽的知识殿堂里时,我就感觉这里一定会是我通往未来成功的大门。在进入大学之前我就有着对这所大学无限的憧憬,当走进课堂时,在课堂上我就立即被各位老师的深厚的学术学识而深深地折服了。从在教室和图书馆之间的两点一线的奔波到业余时间生活的多姿多彩,现在回忆起来,仿佛这一切都发生在昨天,辛苦着并幸福着,让人感觉非常留恋,感觉非常珍惜。我相信我在河南理工大学这几年的学习生活终将会成为我的人生中一笔巨大的精神财富并且使我终生受益。在我的整个毕业设计期间,成功过也失败过,成功时从来不骄傲,失败时也从来不气馁,总结经验解决问题。在这里我首先要由衷的感谢我的指导老师王素玲老师,王老师严谨的治学风格,还有她实事求是的处世态度都深深地感动了我,并使我受益良多。我之所以能顺利的完成这次毕业设计正是得益于王老师的热心细致的指导和教诲。另外,此篇毕业设计的撰写参考了相当多的杂志期刊和相关专业方面的书籍,由于参考的书籍很多很杂,在这里就不一一列出了,只列出一些参考内容最多的书籍或杂志,敬请原谅。同时我还要向所有作者和刊物敬礼!另外由于涉及到跨专业的知识,本人的知识水平有限,有疏漏的地方存在在所难免,诚恳的请各位老师指出,不胜感激。最后还要感谢我的父母,你们一直都默默的支持我,为我无私奉献,当我面对失败时,你们总是给我信心让我不要气馁。在整个大学期间,我的学业能够如此顺利的完成正是得益于你们的关心和支持,你们永远都是我最亲最亲的亲人,是我心灵的避风港湾。在这里还要感谢陪同我渡过整个大学学习的电气本1402班的全体同学和我们专业令人尊敬的辅导员朱老师。在这个毕业季,与你们相处的每一天都是那样的弥足珍贵。能有你们的陪伴和支持,是我最大的幸运!参考文献[1]51单片机开发实战精讲[M].著作者:王守中,聂元铭。北京:清华大学出版社,2014.[2]单片机原理及应用[M].著作者:张毅刚。北京:高等教育出版社,2003.[3]单片机控制技术及应用[M],.著作者:韩全力。北京:电子工业出版社,2004.[4]单片机原理及应用[M].著作者:宋浩,田丰。北京:清华大学出版社,2005[5]数字电子技术基础[M].著作者:阎石。北京:高等教育出版社,2006[6]模拟电子技术基础[M].著作者:童诗白,华成英。北京:高等教育出版社,2006[7]新型传感器原理及应用[M].著作者:王元庆北京:机械工业出版社,2002[8]传感器原理及应用技术[M].著作者:刘竺仁。西安:西安电子科技大学出版社,2008[9]传感器与检测技术[M].著作者:宋雪晨。北京:人民邮电出版社,2009[10]常用传感器应用技术问答[M].著作者:孙克军。.北京:机械工业出版社,2009[11]XQB30-11全自动洗衣机电路图[J].家电维修技术,著作者:李诚,2011,8(1):1-4[12]洗衣机自动控制系统的设计[J].科技创新导报,著作者:史春雷2010,3(4):1-8[13]采用模糊控制的全自动洗衣机[J].山西电子技术,著作者:李卫东,2008,1(2):1-20[14]基于51单片机的全自动洗衣机控制器[J].科技资讯,著作者:林义周2005,3(5):1-5[15]单片机在控制系统中的应用[M].著作者:徐永权。北京:电子工业出版社,2003.[16]模拟电子技术基础学习指导与提高[M]著作者:李辉。.北京:北京航空航天大学,2003.[17]ThomasH.Lee.TheDesignofCMOSRadio-FrequencyIntegratedCircuits[M].London:CambridgeUniversityPress,2003.[18]PhillipE.Allen.AnalogCircuitDesign[M].Lundon:OxfordUniversityPress,2002.[19]VictorP.Nelson.LOGICCIRCUITANALYSIS&DESIGN[M].北京:清华大学出版社,2003.[20]Hubertkaeslin.DigitalIntegratedCircuitDesign[M].北京:人民邮电出版社,2010.附录一:程序代码/***************writer:shopping.w******************/#include<reg52.h>#include<string.h>#include"lcd1602.h"#include"Water_contrl.h"#include"l298.h"charMODE=0;charSTADE=0;externcharAlong_Flag;externcharProgram;externcharProcess;/*voidEX_INT0()interrupt0{ F0=!F0;}*/voidmain(){charkey=0;System_init(); Initialize_LCD(); Timer_Init(); L298_Init();//Init_Windows(); System_init(); while(1) { key=Get_Key(); if(key==0){ShowString(0,0,"***StopMode****");ShowString(0,1,"");} elseif(key==1){ if(Along_Flag==0) { key=Get_Key(); Water_In();if(MODE==0)break; Washing();if(MODE==0)break; Water_Out();if(MODE==0)break; Dehydration();if(MODE==0)break; Alarm(); } else switch(Process) { case0:{Water_In();if(MODE!=0)Alarm();MODE=0;Along_Flag=0;break;} case1:{Washing();if(MODE!=0)Alarm();MODE=0;Along_Flag=0;break;} case2:{Water_Out();if(MODE!=0)Alarm();MODE=0;Along_Flag=0;break;} case3:{Dehydration();if(MODE!=0)Alarm();MODE=0;Along_Flag=0;break;} default:break; } } elseif(key==2){if(Program==2){Process=2;key=Get_Key();Along_Flag=1;}} elseif(key==3){ if((Along_Flag==1)&&(Program==3)) {key=Get_Key(); switch(Process) { case0:{ShowString(0,0,"***IntoWater***");ShowString(0,1,"");break;} case1:{ShowString(0,0,"**WashClothes**");ShowString(0,1,"");break;} case2:{ShowString(0,0,"***DrainWater**");ShowString(0,1,"");break;} case3:{ShowString(0,0,"***Dehydration**");ShowString(0,1,"");break;} default:break; } } } elseif(key==4){key=Get_Key();} }}/***************writer:shopping.w******************/#include<reg52.h>#include<intrins.h>#include"lcd1602.h"#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^0;sbitRW=P2^1;sbitEN=P2^2;voidDelayms(uintms){ uchari; while(ms--) { for(i=0;i<120;i++); }}ucharBusy_Check(){ ucharLCD_Status; RS=0; RW=1; EN=1; Delayms(1); LCD_Status=P0; EN=0; returnLCD_Status;}voidWrite_LCD_Command(ucharcmd){ while((Busy_Check()&0x80)==0x80); RS=0; RW=0; EN=0; P0=cmd; EN=1; Delayms(1); EN=0;}voidWrite_LCD_Data(uchardat){ while((Busy_Check()&0x80)==0x80); RS=1; RW=0; EN=0; P0=dat; EN=1; Delayms(1); EN=0;}voidInitialize_LCD(){ Write_LCD_Command(0x38); Delayms(1); Write_LCD_Command(0x01); Delayms(1); Write_LCD_Command(0x06); Delayms(1); Write_LCD_Command(0x0c); Delayms(1); Write_LCD_Command(0x80);}voidShowString(ucharx,uchary,uchar*str){ uchari=0; if(y==0) Write_LCD_Command(0x80|x); if(y==1) Write_LCD_Command(0xc0|x); for(i=0;str[i]!='\0';i++) { Write_LCD_Data(str[i]); }}char*itoa(intvalue,char*str,intradix){staticcharszMap[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};//字符映射表intnCount=-1,nIndex;char*pStr=str,nTemp; unsignedintnValue;if(radix>=2&&radix<=36){//限制radix必须在2到36之间if(value<0&&radix==10){//如果是负数就在首位添加负号,并将字符串前移*pStr++='-';value=-value;//转为正数,}nValue=*(unsignedint*)&value;do{//循环转换每一个数字,直到结束pStr[++nCount]=szMap[nValue%radix];nValue/=radix;}while(nValue>0);//转换结束后字符串是翻的nIndex=(nCount+1)/2;//计算出一半的长度while(nIndex-->0){//将字符串的字符序翻转nTemp=pStr[nIndex];pStr[nIndex]=pStr[nCount-nIndex];pStr[nCount-nIndex]=nTemp;}}pStr[nCount+1]='\0';//置结束符returnstr;}//显示整形数x列地址(共8列)y行地址(共4行)numvoidShowInt(unsignedcharx,unsignedchary,unsignedintnum){charBuf[8]={0};itoa(num,Buf,10);ShowString(x,y,Buf);}/***************writer:shopping.w******************/#include<reg52.h>#include"l298.h"#defineuintunsignedint#defineucharunsignedcharexternPWM_Value;voidL298_Init(void){ MA=0; MB=0; ENA=0;}voidMotor_Posedge(void){ MA=1; MB=0; PWM_Value=40;}voidMotor_Negedge(void){MA=0; MB=1;PWM_Value=40;}voidMotor_All_Speed(void){MA=1;MB=0;PWM_Value=80;}voidMotor_Stop(void){ MA=0; MB=0;}#include<reg52.h>#include"Water_contrl.h"#include"l298.h"#include"lcd1602.h"#defineucharunsignedchar#defineuintunsignedintvoidShowString(uchar,uchar,uchar*);voidDelayms(uintms);sbitLED=P1^5;sbitBELL=P1^6;sbitWater_IN=P1^2;sbitWater_OUT=P1^3;sbitLEVEL_H=P2^3;sbitLEVEL_L=P2^4;sbitK1=P2^5;//启动sbitK2=P2^6;//停止sbitK3=P2^7;//程序sbitK4=P3^0;//过程sbitK5=P3^1;//强度sbitLED1=P3^2;//标准sbitLED2=P3^3;//经济sbitLED3=P3^4;//排水sbitLED4=P3^5;//单独sbitLED5=P3^6;//强洗sbitLED6=P3^7;//弱洗externcharMODE;externcharSTADE;charAlong_Flag=0;charProgram=0;charProcess;charStrength=1;charOpen=8;charStop=2;intCont=0;intPWM_Cont=0;intPWM_Value=50;charFlag=0;charclear[]="";voidSystem_init(void){LED=0;LED1=1;LED2=0;LED3=0;LED4=0;LED5=1;LED6=0;BELL=0;Water_IN=1;Water_OUT=1;Program=0;Strength=1;Motor_Stop();ShowString(0,0,"***StopMode****");}voidTimer_Init(void){TMOD=0x11;TH0=(65535-1000)/256; TL0=(65535-1000)%256; TH1=(65535-100)/256; TL1=(65535-100)%256; IE=0x8a; TR0=1; TR1=1;}charGet_Key(void){if(!(K1&&K2&&K3&&K4&&K5)){if(K2==0){MODE=0;}elseif(K1==0){MODE=1;}elseif(K3==0){MODE=2;Program++;if(Program>=4)Program=0;if(Program==3)Along_Flag=1;switch(Program) { case0:{LED1=1;LED2=0;LED3=0;LED4=0;Open=8;break;} case1:{LED1=0;LED2=1;LED3=0;LED4=0;Open=8;break;} case2:{LED1=0;LED2=0;LED3=1;LED4=0;break;} case3:{LED1=0;LED2=0;LED3=0;LED4=1;break;} default:{LED1=1;LED2=0;LED3=0;LED4=0;break;} } }elseif(K4==0){MODE=3;Process++;if(Process>=4)Process=0;}elseif(K5==0){MODE=4;Strength=~(Strength|0xFE);if(Strength==1){LED5=1;LED6=0;}else{Open=Open-2;LED5=0;LED6=1;} }while(!(K1&&K2&&K3&&K4&&K5));}returnMODE;}//报警voidAlarm(void){unsignedinti,j;ShowString(0,0,"*WARNING:Finish*

温馨提示

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

评论

0/150

提交评论