手机版
您的当前位置: 诚达文秘网 > 范文大全 > 公文范文 > 基于单片机全自动洗衣机控制系统设计

基于单片机全自动洗衣机控制系统设计

来源:公文范文 时间:2023-11-26 08:25:03

XX学院 毕 业 论 文 题目:基于51单片机的全自动洗衣机控制系统设计 专业:电气工程及其自动化 姓名:
班级:电气班 学 号:
指 导 老 师 :
摘要 该系统是《基于单片机的全自动洗衣机控制系统设计》。系统采用AT89C51单片机作为核心控制芯片。并且辅以必要的外围器件和电路,通过I/O口输出控制电动机运行和停止,通过AT89C51单片机内部定时器中断来记录洗衣时间和进水时间,通过按键来进行洗衣参数设置。通过AT89C51单片机驱动数码管显示洗衣机的工作时间,LED指示灯用作洗衣机的工作状态显示,用两个电控水龙头进行加水和放水,通过蜂鸣器提示洗衣结束。通过外部中断来控制进水和放水。论文重点阐述单片机和控制系统模块的设计。

关键词:单片机,全自动洗衣机,数码管,蜂鸣器,中断,定时器 Summary The system is <<based on single-chip automatic washing machine control system design>>. System uses AT89C51 microcontroller as the core control chip. And supplemented by the necessary peripheral devices and circuits, through the I/O port output control and stop the motor running, AT89C51 microcontroller via an internal timer interrupt to record the laundry time and water time, through the key parameters for laundry. AT89C51 microcontroller driven by digital display washing machine working hours, LED indicator for status display of washing machines work, carried out by two electronically controlled tap water and turn on the water, laundry tips by the end of the buzzer. Water through an external interrupt to control and turn on the water. Paper focuses on the single-chip module design and control system. keywords: MCU ,Automatic washing machine, LE Buzzer ,Interrupt ,Timer 目录 绪论 2 第一章 系统整体设计 5 1.1设计功能要求 5 1.2系统设计方案 5 1.3芯片选择 6 1.3.1什么是单片机 6 1.3.2单片机的应用领域 6 1.3.3单片机的确定 7 1.4单片机的结构 8 1.4.1 STC89C516RD+单片机的引脚功能 8 1.4.2电源 9 1.4.3时钟 9 1.4.4控制信号引脚线 9 1.4.5输入/输出引脚(I/O口线)
10 1.5 继电器的选择 11 第二章 系统硬件设计 12 2.1 电源电路设计 12 2.2 保护电路设计 12 2.3 显示电路设计 13 2.4 按键控制设计 14 2.5 状态指示电路设计 14 2.6 硬件总体电路设计 15 第三章 系统软件设计 17 3.1 软件整体结构设计 17 3.2主程序结构设计与分析 17 3.3子程序结构设计与分析 26 3.3.1 定时器中断1子程序 27 3.3.2 外部中断0子程序 28 3.3.3 定时器中断0子程序 30 3.3.4 外部中断1子程序 31 3.3.5 数码管显示子程序 31 总结 33 致谢 34 参考文献 35 绪论 1.全自动洗衣机的发展过程 洗衣机的出现给人们的生活带来了诸多方便,它是现代人必备的日常生活家电,它的发明和应用使人们的洗衣工作变得省时又省力,很好地缓解了人们在家务劳动方面的压力,由洗涤脱水系统,进水排水系统,传动系统,程序控制器等部分组成。各种测量浑浊度,温度,水位,位置,泡沫量等一系列的传感器也在洗衣机中得到了应用。家用洗衣机从发明到现在已经经历了一个多世纪,经历以下一些发展阶段:
世界上第一台洗衣机实在1874年由美国的比尔.布莱克斯通(Bill Blackstone)研制成功的。1910年前后,第一台卧轴滚筒式电动洗衣机问世,标志着人类家务劳动自动化的开始。20世纪20年代,第一台立轴搅拌式洗衣机再美国试制成功,由此,洗衣机开始了“立轴”与“卧轴”之分。50年代中叶,日本三洋公司推出单桶波轮式洗衣机。开始确定了滚筒式、搅拌式和波轮式三种工作方式。60年代,日本推出了带甩干桶半自动洗衣机,并且大量应用塑料,使洗衣机的发展进入一个新的阶段。70年代,日本推出波轮式套桶全自动洗衣机,从此开始有了“全自动”洗衣机的概念。70年代后期,日本推出了微电脑控制的全自动洗衣机。完成了由机械—电动程序控制到电脑控制的过渡,开始了电脑控制时代。这时,洗衣机在发达国家已进入饱和期,而在亚太地区发展中国家开始进入普及期。80年代后期,“模糊控制”洗衣机开始出现,实现了家电器控制方式上的高度自动化。出现“白色家电”的概念。90年代,随着变频技术的发展,日本最先推出了电动机直接驱动洗衣机,实现了洗衣机驱动方式上的革命。今后洗衣机将以高可靠性,完善的功能,节水省电,降噪省时以及规格品种多样化为发展方向。

2.洗衣机的发展前景及待解决的问题 ①国外先进技术及开发前景:
当今世界是技术、知识大爆炸的年代,只要人们有需要,就有可能生产出某种产品来满足人们的需要。洗衣机的发展正是这样,人们在生活中发现了它的某些不便,就会在实际中不断地改进和完善它,新型的洗衣机正是在这种情况下诞生的。

(1)超声波洗衣机超声振动产生空穴现象,在洗涤中通过气泡的生产和消失的运动,产生强水压,再加入小量洗衣剂,振动纤维,超声乳化,去污,水中气泡上升,产生了从洗涤桶中央向外侧翻动的水流,使衣服之间相互摩擦,并与洗涤剂充分接触产生很有效的洗涤作用。这种洗衣机洗涤桶小,桶内无运动部件,无机械电气故障,修理方便。不缠绕,不伤布料,洗衣效果好,省水,省电。

(2)电磁洗衣机这种洗衣机洗涤桶内有4个洗涤头,上面各有有个夹子,把衣物伸展夹住,每个洗涤头上有有个电磁线圈,接通电源发生2500次/秒的微击振动,使衣物在洗涤液中洗涤。因不用电机驱动,无噪声,省水50%,省电75%。

(3)高温泡沫洗衣机日本大阪大研制的一种不用水用高温泡沫来洗净衣物的洗衣机。洗涤剂罐于洗衣机低部,放衣物后拨动开关,开始鼓风,将空气送入罐中产生泡沫,由加热到70C高温泡沫洗净衣物,然后进入洗衣桶旁边的消泡装置,一般洗5~10分钟/次,21L/1kg干衣。

(4)真空洗衣机原苏联研制的不用洗衣粉或洗涤剂的洗衣机,真空泵将洗衣桶内吸成真空状态,桶中水运动产生气泡爆破并去污。洗净度高,不损衣、无噪声、造价高。实际上是采用冷沸腾洗涤原理,在几秒钟内从洗涤桶的上部那空气抽空出。稀薄空气与水如沸腾壮,衣物在泡沫旋涡钟搅动,1.5~2分钟就能洗净衣物,一般洗衣服7~10分钟即可完成全过程。

(5)喷射式洗衣机意大利扎努西公司研制一种将洗涤剂不断喷向衣物的洗衣机,似乎无水,可以省水20%,省洗涤剂30%,省能35%,省时间10%。这种洗衣机完全不同于前装式滚筒洗衣机,安装在喷淋系统内的喷射装置持续不断地将水和洗涤剂喷淋在衣物上进行洗涤,并在不锈钢桶内搅动衣物。衣物在液体中不停地搅动,就像桶内根本没有水一样。然而水却渗透过衣物流入位于滚筒底部的一个储水槽中。在槽中,水被从新加热再次循环喷射到衣物上去,洗涤桶做周期性脱水,以排去水和污物,随后漂洗3次,最后脱水洗完。

②洗衣机待解决的一些问题: 由于我国洗衣机厂起步晚,加上技术方面的一些问题,不可避免的在现有的机型中出现一些弊端。主要弊端有:噪声大,耗水、耗电,进水不畅或进水不止或排水不畅,工作周期不平稳、振动大,损伤洗涤物,洗涤效果不佳,脱水桶自动性不佳,脱水不良,重量大,容量不合理。具体来说,洗衣机的问题存在于结构、质量、原材料和模具及管理方面 (1)结构类型方面我国洗衣机多属波轮式。今后波轮式仍然是主要型式。为了适应国外市场的不同需求,要适当地生产些新型式的滚筒式和搅拌式洗衣机,进而生产具有波轮式、搅拌式两种洗衣机优点的新机型。为了使波轮式洗衣机洗涤更合理,应努力将全自动洗衣机提高到电脑型的水平。双桶洗衣机再提高漂洗的条件下,以重点生产全自动型喷淋式洗衣机为宜。同时要注意避免新水流洗衣机一味地提高波轮式的转数极其转动时间或增高波轮筋高的倾向,以免损伤衣率和缠绕率回升增高,降低了新水流洗衣机的优越性。

(2)质量方面我国洗衣机的质量问题,具体反映再功能、外观和可靠性三方面,与国外存在再较大的差距。国内外洗衣机相比较:从功能、电源插头、面板装饰、旋钮结合,塑料件的光整度(光洁、毛刺和变形),外箱和螺丝钉的成形及防锈,皮带的耐磨及噪音,进排水阀和水位开关质量,电脑控制各种功能的能力,电脑的抗电压波动、抗干扰防静电的能力,以及传感器的灵敏度等方面,很容易看出整体质量的好坏。再加上装配工艺较落后,致使我国洗衣机的质量稳定性差,出口有一定的困难。目前我国洗衣机无故障运行水平约为250~500小时,而国外同类产品达1500~2000小时,即十年不需修理。因此提高洗衣机的质量要从提高零部件的质量入手。关键电器件和传动件应组织专业分工,制定标准,组织攻关,进行认证,在改进功能方面、外观质量和可靠性三方面,进行全面整理,提高水平。

综合以上分析介绍,全自动洗衣机由于具有对衣物的磨损小、洗涤量大、节约水电等特点,越来越得到广大家庭的青睐。由于人们对全自动洗衣机在价格低廉的基础上也提出了功能齐全、操作简单、不缠绕、不伤布料、洗衣效果好、性能可靠、工作效率高、便于维修等更高的要求。为满足人们这种需求,特设计出这种有微控制器控制的全自动洗衣机控制系统。

第一章 系统整体设计 在进行系统设计之前,首先应根据对系统的功能要求及其应用环境等确定合理的、具体的功能和技术指标,对应用系统的可靠性、通用性、先进性、可维护性、以及成本等进行综合考虑,以尽量合理并符合相应的标准。然后根据市场上各种单片机的货源情况和单片机的性能及开发工具等因素选择合适的机型。接下来要根据系统中遇到的重要器件进行选择,使之符合系统在精度、速度和可靠性等方面的要求。最后确定硬件和软件的功能划分。由于在系统设计中某些功能用硬件和软件都能实现,在设计中应综合考虑研制周期和成本等因素具体划分软硬件功能。

1.1设计功能要求 (1)通过遥控按键控制洗衣机。

(2)12864用于显示相应的持续时间,当前时间和处于什么工作方式中。

(3)洗衣机具有强洗,弱洗,自定义功能,并且可以进行单项操作。

(4)增加水位传感器控制进水时间(在设计中用红外传感器)。

(5)当洗衣结束时蜂鸣器唱歌。

(6)洗衣时交替正、反转。洗衣和脱水时电机转速不同。

1.2系统设计方案 通过设对计要求的分析,主控制系统运用的是STC89C516RD单片机,控制对象包括:继电器1(进水阀)、继电器2(出水阀)、小型直流电机、12864显示、LED状态指示灯、蜂鸣器等。这些被控对象需要根据不同的洗衣程序来设定他们的工作状态和工作时间,继电器1(进水阀)和继电器2(出水阀)来控制进水和出水,同时需要LED指示灯和12864显示不同的工作状态和剩余时间,遥控输入 用来控制程序运行和设置洗衣模式,蜂鸣器用来提示洗衣完成提示。按照上述的系统方案得到的系统整体构架如图1-1:
图1-1系统整体构架 1.3芯片选择 1.3.1什么是单片机 单片机即单片微型计算机。(Single-Chip Microcomputer ),是 集CPU 、RAM 、ROM 、定时器、计数器和多种接口于一体的微控制器。这样所组成的芯片级芯片级微型计算机称为单片微型计算机(Single-Chip Microcomputer ),简称位单片微机或单片机。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。由于单片机的硬件结构与指令系统都是按工业控制要求设计的,常用于工业的检测、控制装置中,因而也称为微控制器或嵌入式控制器。单片机按用途可分为通用型和专用型两大类,按内部数据通道的宽度又可分为4位、8位、16位及32位。而51 单片机是各单片机中最为典型和最有代表性的一种。

1.3.2单片机的应用领域 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:
(一)在智能仪器仪表的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。

(二)
在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

(三)在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

(四)在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

(五)单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。

1.3.3单片机的确定 通过设计方案整体分析,根据单片机的使用性、技术性、经济性、以及对控制系统的设计要求与性能,本系统选择STC89C516RD单片机作为核心控制对象。其中STC89C516RD单片机具有以下基本特性:STC89C516RD是一种带128K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,外围电路简单、硬件设计方便、I/O口操作简单、资源丰富、能满足一般的使用功能、 价格便宜、容易购买。

通过以上的介绍和分析,STC89C516RD完全满足设计要求和性能。因此,本系统选择STC89C516RD单片机作为核心控制对象。

1.4单片机的结构 STC89C516RD芯片内部集成了 CPU、RAM、ROM、定时/计数器和I/O口等各功能部件,并由内部总线把这些部件连接在一起。

STC89C516RD单片机内部包含以下一些功能部件:
(1) 一个8位CPU;

(2) 一个片内振荡器和时钟电路;

(3) 4KB 的ROM (4) 128x8字节内部RAM;

(5) 可寻址64KB的外ROM和外RAM控制电路;

(6) 两个16位定时/计数器;

(7) 21个特殊功能寄存器;

(8) 4个8位并行I/O口,共32条可编程I/O端线;

(9) 一个可编程全双工串行口;

(10) 5个中断源;

1.4.1 STC89C516RD单片机的引脚功能 STC89C516RD单片机一般采用双列直插DIP封装,共40个引脚,图1-2为单片机引脚排列图。40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

图1-2 单片机引脚排列图 1.4.2电源 (1)VCC(40脚)——芯片电源,接+5V;

(2)VSS(GND20脚)——接地端。

1.4.3时钟 XTAL1(19脚)、XTAL2(18脚)——晶体振荡电路反相输入端和输出端。使用内部振荡电路时外接石英晶体如图1-3。

图1-3晶体振荡电路 1.4.4控制信号引脚线 控制线共有4根,其中3根是复用线。所谓复用线是指具有两种功能,正常使用时是一种功能,在某种条件下是另一种功能。

(1)ALE/PROG(30脚)地址锁存允许/片内EPROM编程脉冲。

①ALE功能:用来锁存P0口送出的低8位地址。

STC89C516RD在并行扩展外存储器(包括并行扩展I/O口)时,P0口用于分时传送低8位地址和数据信号,且均为二进制数。那么如何区分是低8位地址还是8位数据信号呢?当ALE为高电平时,P0口传送的是低8位地址信号;
ALE为低电平时,P0口传送的是8位数据信号。在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。

需要指出的是,当CPU不执行访问外RAM指令(MOVX)时,ALE以时钟振荡频率1 / 6的固定频率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。但是,当CPU执行MOVX指令时,ALE将跳过一个ALE脉冲。ALE端可驱动8个LSTTL门电路。

②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

(2) PSEN(29脚)——外ROM读选通信号。

80C51读外ROM时,没个机器周期内PSEN两次有效输出。PSEN可作为外ROM芯片输出允许OE的选通信号。在读内ROM或读外RAM时,PSEN无效。PSEN可驱动8个LSTTL门电路。

(3) RST/Vpd(9脚)——复位/备用电源。

①正常工作时,RST(Reset)端为复位信号输入端,只要在该引脚上连续保持两个机器周期以上高电平,80C51芯片即实现复位操作,复位后一切从头开始,CPU从0000H开始执行指令。8051的复位方式可以是自动复位,也可以是手动复位,见下图1—4上电自动复位电路 和图1—5手动复位电路。

图1-4上电自动复位电路 图1-5 手动复位电路 ②Vpd功能:在Vcc掉电情况下,该引脚可接上备用电源,由Vpd向片内供电,以保持片内RAM中的数据不丢失。

(4) EA/VPP(31脚)
——内外ROM选择/片内EPROM编程电源。

①EA功能:正常工作时,EA为内外ROM选择端。AT89C51单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外。当EA保持高电平时,先访问内部ROM,但当PC(程序计数器)值超过4KB(0FFFH)时,将自动转向执行外ROM中的程序。当EA保持低电平时,则CPU只访问外ROM,当EA为高电平时,则CPU要先对内部ROM访问,然后自动延至外部超过4KB的ROM。

②Vpp功能:片内有EPROM的芯片,在EPROM编程期间,此引脚用于施加编程电源Vpp。

1.4.5输入/输出引脚(I/O口线)
(1)P0口(32—39脚)——8位双向I/O口。在不并行扩展外存储器(包括并行扩展I/O口)时, P0口可用作双向I/O口。在并行扩展外存储器(包括并行扩展I/O口)时, P0口可用于分时传送低8位地址(地址总线)和8位数据信号(数据总线)。P0口能驱动8个LSTTL门。

(2)P1口(1——8脚)——8位准双向I/O口(“准双向”是指该口内部有固定的上拉电阻)。

P1口能驱动为4个LSTTL门。

(3) P2口(21——28脚)——8位准双向I/O口。在不并行扩展外存储器(包括并行扩展I/O口)时, P2口可用作双向I/O口。在并行扩展外存储器(包括并行扩展I/O口)时, P2口可用于传送高8位地址(属地址总线) 。P2口能驱动4个LSTTL门。引脚上拉电阻同P1口。在结构上,P2口比P1口多一个输出控制部分。

(4) P3口(10——17脚)——8位准双向I/O口。可作一般I/O口用,同时P3口每一引脚还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。P3口驱动能力为4个LSTTL门。

P3口第二功能如下: P3.0——RXD:串行口输入端; P3.1——TXD:串行口输出端; P3.2——INT0:外部中断0请求输入端; P3.3——INT1:外部中断1请求输入端 P3.4——T0:定时/计数器0外部信号输入端; P3.5——T1:定时/计数器1外部信号输入端; P3.6——WR:外RAM写选通信号输出端; P3.7——RD:外RAM读选通信号输出端。

上述4个I/O口,各有各的用途。

在不并行扩展外存储器(包括并行扩展I/O口)时, 4个I/O口都可作为双向I/O口用。在并行扩展外存储器(包括并行扩展I/O口)时, P0口专用于分时传送低8位地址信号和8位数据信号,P2口专用于传送高8位地址信号。P3口根据需要常用于第二功能,真正可提供给用户使用的I/O口是P1口和一部分未用作第二功能的P3口端。

1.5 继电器的选择 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,用来接通和断开控制电器,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。根据控制电路的电源电压,能提供的最大电流,被控电路需的触点形式。根据单片机的控制特点AT89C51单片机带负载能力不强,一般用三极管控制继电器,因此本系统采用的是:松乐T73 SRD-5VDC-SL-C继电器。

第二章 系统硬件设计 2.1 电源电路设计 电源为单片机提供+5V电压供电,原理图如图2-1所示,交流220V电源经变压器降压在经过整流、滤波后产生直流电压,输入到集成稳压器7805的输入端,7805输出稳定的+5V电压为单片机供电。

图2-1电源电路 2.2进排水电路设计 2-2保护电路 2.3 显示电路设计 显示部分主要是通过一个两位数码管显示系统的工作时间信息。该数码管共有10个管脚,其中A——G 7个管脚为数码管的段选,1和2为数码管的位选,DP为小数点显示。其中数码管的段选与单片机的P0.0——P0.6口相连接,数码管的位选1和2分别与单片机的P2.0和P2.1相连接。具体电路如图2—3所示。

图2-3 显示电路 电机驱动电路设计:
红外检测电路设计 报警电路设计:
2.4 按键控制设计 该系统通过四个独立按键来控制系统的启动、停止和工作状态设置,四个键分别为:程序、增加、减少、启动,其中四个键分别与单片机的P1.0—P1.3口相连接:具体连接如图2—4所示。

图2-4 按键连接 2.5 状态指示电路设计 状态指示是通过8个LDE显示系统的工作状态,LED与74LS138的输出端相连接,其中74LS138的三个使能端分别与单片机的P1.4—P1.6相连接,通过单片机输出高低电平控制74LS138相应的引脚,使LED点亮,指示出工作状态。具体连接如图2-5所示。

图2—5指示灯电路 2.6 硬件总体电路设计 通过上面的分析硬件电路(如图2-6)主要有这几部分组成:
1.单片机最小系统:(1)复位电路 (2)时钟电路 (3)AT89C51 2.按键控制部分 3.LED与数码显示部分 4. 74LS138译码器 5.报警部分(蜂鸣器)
6.继电器控制部分 7.电动机部分 其中按键部分为四个独立按键与单片机的P1.0—P1.3口相连接,分别是程序的增加、减少和启动主要用于设置洗衣机的工作状态。D0—D7是洗衣机的工作状态指示灯,其中D0—D5与38译码器的Y0—Y5相连接分别表示:进水时间设定,脱水剩余时间,脱水定时,洗衣剩余时间,洗衣定时,洗涤次数。D6与D7分别与单片机的P2.6与P2.7相连接表示:弱洗和强洗。数码管用于显示洗衣机工作的时间,其中P0口控制数码管的段选,P2.0与P2.1控制数码管的位选。报警部分(蜂鸣器)用于洗衣完毕是的报警,通过三极管驱动与单片机的P1.7相连接。继电器控制部分主要用于电动机的正反转控制,通过三极管驱动与单片机的P2.2—P2.5相连接。单片机的P3.0与P3.2分别连接两个电控水龙头用于洗衣机的进水和脱水。

2-6 电路原理图 第三章 系统软件设计 3.1 软件整体结构设计 该系统的主要程序图框如图3-1所示。系统程序可以分为:主程序,定时器中断1程序,定时器中断0程序,外部中断0和外部中断1程序,延时程序,数码管显示程序,等几部分组成。定时中断1和外部中断0来控制电控水龙头进水,利用定时器中断0记录洗衣时间,通过外部中断1判断水是否放完,来进行脱水,定时中断1记录脱水时间。下面分别以各部分的程序流程图进行分析程序 3.2主程序结构设计与分析 首先,开机可以先进行选择强洗和弱洗(弱洗是电动机进行正反转每10s交替运行)并且相应指示灯亮。连续按下“程序”键可进行相应功能的选择,当进水时间、洗衣时间、脱水时间、洗涤次数、脱水时间以及强洗或弱洗设置完成后,按下“启动”键系统开始工作,进水龙头打开,当进水时间到或水加满开始进行洗衣,当洗衣时间到,开始进行脱水。当脱水时间到,若洗涤次数不到,继续下一次洗涤,否则结束工作且蜂鸣器报警5秒,工作结束。其应用程序如下:
开始 启动键按下否 否 洗衣参数设定状态 是 洗衣加水 是 加水时间到否或满否 启动键按下否 否 是 是 洗衣状态 脱水状态 是 洗衣时间到否 否 是 脱水时间到否 否 洗涤次数到否 否 是 是 结束 图3-1 主程序图框 main() { int a; P1=0xff; TMOD=0x11;//定时器0和定时器1同时工作在模式0;

ET0=1; //打开内部中断0 ET1=1; //打开内部中断1 led7=0; while(d) { shao_maio(); if(b==1200)//b=20刚好1秒 { b=0; m=m-1; if(m<0) { m=0; } if(t<0) { t=0; } shao_maio(); //扫描数码管 } /*************进水控制****************************/ shao_maio(); if(b1==1200) { b1=0; jins_time=jins_time-1; } if(jins_time==0) { sw1=1;//关闭水龙头 jins_time=1; EX0=1; //开外部中断0 EA=1;//开总中断 TMOD=0x11; jins_time=1; TH0=(65536-50000)/256; //定时50毫秒 TL0=(65536-50000)%256; ET0=1; //打开内部中断0 TR0=1; if(x==4) { sn1=0;//4 点亮洗衣剩余时间指示灯 sn2=1;//2 sn3=1;//1 ET0=1; //打开内部中断0 TR0=1; } //if(x==3)//洗衣剩余时间 else { sn1=0; //4 sn2=1; //2 sn3=1;//1 x=3; ET0=1; //打开内部中断0 TR0=1; } if(led6==0&&led7==1) //弱洗 { if(b>=0&&b<200||(b>=600&&b<800))//10m {q2=1;q3=1; q1=0;q4=0; } if(b>=400&&b<600||(b>=800&&b<1000)) {q1=1;q4=1; q2=0;q3=0; } } if(led6==1&&led7==0) //强洗 { q1=0; q4=0; q2=1; q3=1; } } /*****************开始脱水************************/ if(m==0) { sw1=1;//关水龙头1 sw2=0;//开水龙头2 EX0=0;//关外部中断0 ET0=0;//关定时器中断0 TR0=0; EA=1;//开总中断 TMOD=0x11; TH1=(65536-50000)/256; //定时50毫秒 TL1=(65536-50000)%256; ET1=1; //打开内部中断0 TR1=1; EX1=1; //外部中断1打开为放水准备 sn1=0; //4 脱水剩余时间指示灯亮 sn2=0; //2 sn3=1;//1 x=5;//显示脱水剩余时间 } if(tuo_s==1200) { tuo_s=0; t=t-1; } if(t<=0) { jins_time=jins_time1; m=m1; t=t; d=d-1; x=0; xi_di=1;//判断是否跳转 } if(d<=0) { EA=0;//关总中断 sw2=1;//关水龙头2 sm1=sm2=0;//数码管熄灭 sn1=sn2=sn3=1;//LED熄灭 q1=q2=q3=q4=1;//电动机停止 feng_m_qi=0;//蜂鸣器响 delay(2);//延时5秒 feng_m_qi=1;//蜂鸣器停止 } else goto start; /************强洗弱洗选择***********************/ if(sb2==0&&x==0)//弱洗 { for(a=0;a<140;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==0) { led6=0; led7=1; } } if(sb3==0&&x==0)//强洗 { for(a=0;a<140;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==0) { led6=1; led7=0; } } /****************功能选择*************************/ if(sb1==0) { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb1==0) { x=x+1; if(x==1)//洗涤次数设置 { sn1=1; //4 sn2=0; //2 sn3=1;//1 } if(x==2)// 洗衣定时 { sn1=1; //4 sn2=0; //2 sn3=0;//1 } if(x==3)//洗衣剩余时间 { sn1=0; //4 sn2=1; //2 sn3=1;//1 } if(x==4)//脱水定时时间 { sn1=0; //4 sn2=1; //2 sn3=0;//1 } if(x==5)//脱水剩余时间 { sn1=0; //4 sn2=0; //2 sn3=1;//1 } if(x==6)//进水时间 { sn1=0; //4 sn2=0; //2 sn3=0;//1 } if(x==7)//强洗 { x=0; led6=1; led7=0; } } } /****************增加设置*****************/ if(sb2==0&&x==1) //洗涤次数增加 { //EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==1) { d=d+1; if(d>99) { d=0; } } } /*****************************************/ if(sb2==0&&x==2) //洗衣定时增加 { for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==2) { m=m+1; m1=m; if(m>99) { m=0; } } } /************************************************/ if(sb2==0&&x==4)//脱水定时增加 { for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==4) { t=t+1; t1=t; if(t>99) { t=0; } } } /************************************************/ if(sb2==0&&x==6)//进水水定时增加 { for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==6) { jins_time=jins_time+1; jins_time1=jins_time; if(jins_time>99) { jins_time=0; } } } /***************减少设置***********************/ if(sb3==0&x==1)//洗涤次数减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&x==1) { d=d-1; if(d<0) { d=0; } } } /***************************************************/ if(sb3==0&x==2)//洗衣定时减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&x==2) { m=m-1; m1=m; if(m<0) { m=m1; } } } /**************************************************/ if(sb3==0&&x==4) //脱水定时减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==4) { t=t-1; t1=t; shao_maio(); if(t<0) { t=0; } } } /**************************************************/ if(sb3==0&&x==6) //进水定时减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==6) { jins_time=jins_time-1; jins_time1=jins_time; shao_maio(); if(jins_time<0) { jins_time=0; } } } /*****************启动******************************/ if(sb4==0&&x>0) { start: xi_di=0;//如果洗涤次数不到重新赋值 for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb4==0&&x>0) { EA=1;//开总中断 EX0=1; //开外部中断0 sw1=0;//开水龙头1 sw2=1; TMOD=0x11; TH1=(65536-50000)/256; //定时50毫秒 TL1=(65536-50000)%256; ET1=1; //打开内部中断0 TR1=1; x=6; sn1=0; //4 sn2=0; //2 sn3=0;//1 } } } } 3.3子程序结构设计与分析 3.3.1 定时器中断1子程序 图3-2为定时器中断1程序框架,当启动键按下后,系统将打开定时器中断1,每50ms中断一次,作为进水时间的记录,当进水时间到定时器中断1关闭停止计时。或者水加满后,利用外部中断0来停止加水。其主要程序如下:
洗衣参数设定状态 启动键按下否 否 是 开始每50ms中断一次 进水时间到否 否 是 开始进入洗衣状态 关闭定时器中断1 打开定时器中断0 图3-2定时器中断1 void ds1zhong_duan() interrupt 3 //定时器1中断 //进水水和脱水时间 { //shaomaio(); //扫描数码管 TH1=(65536-50000)/256;//高8位 TL1=(65536-50000)%256;//低8位 if(EX0==1) { b1=b1+1; } //记录中断次,数每次中断50ms else { tuo_s=tuo_s+1; } } 3.3.2 外部中断0子程序 外部中断0程序框架(如图3-3所示),其主要功能是:当设置加水时间过长,水就会溢出,为防止水溢出,当水加到一定高度时就会进入该中断子程序关闭进水阀,开始执行下一步任务。其主要程序如下:
图3-3 外部中断0 void wai0_zhong_duan() interrupt 0//外部中断0 { sw1=1;//关闭水龙头 jins_time==1; if(led6==0&&led7==1) //弱洗 { void dian_zf(); } if(led6==1&&led7==0) //强洗 { led6=1; led7=0; } sw1=0;//关闭水龙头1 EA=1;//开总中断 TMOD=0x11; jins_time=1; TH0=(65536-50000)/256; //定时50毫秒 TL0=(65536-50000)%256; ET0=1; //打开内部中断0 TR0=1; if(x==4) { sn1=0; //4 点亮脱水剩余时间指示灯 sn2=1; //2 sn3=1;//1 ET0=1; //打开内部中断0 TR0=1; } else {sn1=0; //4 sn2=1; //2 sn3=1;//1 x=3; ET0=1; //打开内部中断0 TR0=1; } if(led6==0&&led7==1) //弱洗 { if(b>=0&&b<200||(b>=600&&b<800))//10m {q2=1;q3=1; q1=0;q4=0; } if(b>=400&&b<600||(b>=800&&b<1000)) {q1=1;q4=1; q2=0;q3=0; } } if(led6==1&&led7==0) //强洗 { q1=0; q4=0; q2=1; q3=1; } } 3.3.3 定时器中断0子程序 图3-4为定时器中断0程序框架。当系统进入洗衣状态时,定时器中断1开始每50ms中断一次,用来记录洗衣的时间,当洗衣时间到时,关闭定时器中断0,进入下一步工作。其应用程序如下:
图3-4 定时器中断0 void ds0zhong_duan() interrupt 1 //定时器0中断 洗衣时间 { TH0=(65536-50000)/256;//高8位 TL0=(65536-50000)%256;//低8位 b=b+1; //记录中断次,数每次中断50ms } 3.3.4 外部中断1子程序 图3-5为外部中断1程序框架。当洗衣时间到时,打开出水阀,开始放水,当水放完时通过电平触发进入外部中断1,启动电动机进入脱水状态。其应用程序如下:
图3-5为外部中断1 void wai1_zhong_duan() interrupt 2//外部中断1 { q1=0;//电动机正转脱水 q4=0; q2=1; q3=1; } 3.3.5 数码管显示子程序 该程序的主要功能是通过两位数码管显示一些时间信息,如 加水时间、洗衣定时时间、脱水时间、洗衣剩余时间、洗衣次数等显示。根据工作指示灯进行判断,并显示出相应的时间信息。

其主要程序如下:
int shao_maio() { int a,i; { if(x==1) { chun_shu[1]=d/10; //洗涤次数显示数码管十位 chun_shu[0]=d%10;//洗涤次数显示数码管个位 } if(x==5||x==4) { chun_shu[1]=t/10; //脱水定时显示数码管十位 chun_shu[0]=t%10;//脱水定时显示数码管个位 } if(x==6) { chun_shu[1]=jins_time/10; //进水时间 chun_shu[0]=jins_time%10;//进水时间 } if(x==3||x==2) { chun_shu[1]=m/10; //显示数码管十位 chun_shu[0]=m%10;//显示数码管个位 } for(i=0;i<1;i++) { sm1=0; sm2=1; P0=table[chun_shu[i]]; } for(a=0;a<100;a++); for(i=1;i<2;i++) { sm2=0; sm1=1; P0=table[chun_shu[i]]; } for(a=0;a<100;a++); } } 总结 随着科学技术的发展,现代社会对专业人才的要求越来越高,尤其作为机电一体化专业的人员,不仅要有坚实的理论知识,更应该具备丰富的实践经验和较强的动手能力。

毕业设计不仅是对前面所学知识的一种综合检验,而且也是对自己能力的一种提高。通过本次毕业设计,是把学到的理论知识和现场的实际工作经验又一次有机地融合在一起,也使我熟练掌握了工程设计的方法和步骤,进一步提高了对一些软件的应用(如proteus、KEIL、c++、Protel99se等)工程设计能力、理论计算能力、实验研究能力、经济分析能力、外文阅读能力、计算机应用能力以及文献查阅和文字表达能力。对于在此次单片机控制系统应用中还存在一些问题,在控制电动机正反转设计中采用单片机进行控制,存在着一些缺点,例如所选用的单片机不太合理以及调试过程比较麻烦。在控制数码管显示时,数码管不能正常显示,通过查找质料根据人眼的暂留效应,结果正常显示。

在设计过程中,我通过网络查阅大量有关资料,与同学交流经验和自学并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获巨大。

总之,在进行毕业设计的过程中,我深刻体会到我的基础功并不是那么的扎实,知识面较为局限,例如我的文字表达能力,以及我的英语水平等,经过毕业设计让我懂得在日常生活中,我们不能随便去浪费我们宝贵的时间而是要充分利用时间来学习更多的知识来充实自己。

此外,我还得出一个结论:知识必须通过应用才能实现其价值! 致谢 在这大学X年的生活里,在这即将毕业的时刻,我要感谢学校以及老师们对我的教育和培养,在老师的细心教导下,我学到了很多的知识。在此,首先要感谢我的指导老师李仁老师。他能够在百忙之中给我指导,耐心解答我的疑难问题。

在论文成稿期间,无论在选题上,还是资料的应用上,李老师都给予我耐心细致的教导,在论文研究及撰写过程中,李老师提出了许多宝贵意见,我学到了许多课外的知识,使我的综合能力得到了提升。老师严谨的治学态度,一丝不苟的敬业精神,诲人不倦的高尚师德,为我树立了做人、做事的楷模,对我今后的人生之旅将产生深远的影响。

在此,向大学三年在各方面给予我帮助的教师、同学表示衷心的感谢。论文中的很多材料取于相关书籍和互联网,也向相关资料的作者表示衷心的感谢。由于我的能力有限,所以疏漏和不足在所难免,请各位老师批评指正,感谢各位老师。

参考文献 1.韩全立,赵德申 主编《微机控制技术及应用》
机械工业出版社. 2003 2.付植桐 主编《电子技术》
第3版 高等教育出版社. 2008 3.刘金琨 编著《智能控制》
电子工业出版社. 2008 4.马忠梅 张凯 马岩 主编《单片机的c语言程序设计》第4版 北京航空航天大学出版社. 2007 5.谭浩强 主编 《c语言程序设计》
第4版 清华大学出版社. 2010 6.张文涛 主编《Proteus 仿真软件及应用》华中科技大学出版社. 2010 7.林立 主编《单片机原理及应用——基于Proteus和Keil C》
电子工业出版 社. 2009 8.彭伟 主编《单片机c语言程序设计实训100例——基于 8051+Proteus仿真》电子工业出版社. 2009

诚达文秘网 https://www.rk1k.cn Copyright © 2019-2024 . 诚达文秘网 版权所有

Powered by 诚达文秘网 © All Rights Reserved. 备案号:浙ICP备19042126号-1

Top