ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:332.62KB ,
资源ID:9547775      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9547775.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机自动洗衣机控制系统副本.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机自动洗衣机控制系统副本.docx

1、51单片机自动洗衣机控制系统 副本目 录一、题目 1二、题目分析及设计思路介绍 12.1 题目分析: 12.2 设计思路介绍: 1三、方案设计说明 23.1 洗衣程序 23.2控制系统的电路组成 3四、单元电路设计说明 54.1电源电路 54.2单片机控制电路 54.3单片机的时钟电路 74.4显示电路 84.5蜂鸣器报警电路 94.6电动机的控制电路 104.7进水/排水电路 114.8按键电路 11五、 软件设计 125.1 主程序设计 125.2 洗涤程序的设计 125.3 脱水程序的设计 13附整个洗衣程序 14六、调试过程出现的问题 19七、体会与总结 19参考文献 20一、题目设自

2、动洗衣机的控制要求是:启动后先开启进水阀进水,水位到达设定值后关闭,然后波轮按正转5秒、反转5秒,正、反转之间停3秒的规律不断循环转动,直至达到设定时间停止,之后打开排水阀放水,水放完后洗衣桶旋转脱水,1分钟后停止并关闭排水阀,洗衣过程结束。要求水位设置不少于高、中、低三档,洗衣时间在312分钟范围内可调,以1分钟为单位,排水时间定为1分钟,试设计该洗衣机的控制电路,作业具体要求如下:1.画出控制系统的框图,说明系统方案设计的思路、理由或依据;2.选择、确定组成控制系统的各个单元,并阐述选择确定的原则或依据;3.画出完整的电气原理图,介绍整体电路的工作原理、性能或特点; 4.如采用单片机控制,

3、给出单片机程序的流程图和清单,说明程序的工作原理。 5.制作实物电路,验证设计、制作是否正确。二、题目分析及设计思路介绍2.1 题目分析:本题主要是实现一种较为简单的全自动洗衣机的控制。设计的关键在于单片机的控制,即整个单片机的控制程序的编写。同时也要注意单片机输出端与受控对象的硬件电路设计问题。2.2 设计思路介绍:控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、2位7段共阳数码管、按键、蜂鸣器、LED指示灯组成;外部硬件电路有继电器、三极管、电动机、进水电磁阀、排

4、水电磁阀组成。进水部分没有采用传感器,而是采用定时器控制进水阀,通过不同的进水时间来实现低、中、高的水位控制。三、方案设计说明3.1 洗衣程序.洗涤过程通电后,若不设置洗衣时间和水位要求,则洗衣机默认洗涤三分钟,水位要求为低,从洗涤过程开始。进入洗涤过程,首先进水阀接通,开始向洗衣机供水,当到达要求水位时,进水阀断电关闭,停止进水;电机M接通,波轮按正转5秒、反转5秒,正、反转之间停3秒的规律不断循环转动,直至达到设定时间停止。.漂洗过程洗涤过程结束之后进入漂洗过程,与洗涤过程操作相同,只是时间短一些,漂洗时间为2分钟。.脱水过程漂洗过程结束后,电机M停止转动,排水阀M接通,开始排水。排水阀动

5、作,排水阀排水一分钟后,排水阀停止工作,电机M开始正转,带动内桶高速旋转,甩干衣物,时间也为一分钟。洗衣机工作流程如图3.1所示:图3.1 洗衣机流程图3.2控制系统的电路组成该电路主要组成部件是由AT89S51单片机、指示灯、电动机、蜂鸣器、电控水龙头、LED显示灯、及3只控制按键组成。其组成如图3.2所示。电动机有两个控制端,一端控制电动机正转且该端与P2.0相连,另一端控制电动机的反转且该端与P2.1相连。电控水龙头共两个,一个为进水水龙头且受P1.6的控制,另一个为排水水龙头而受P1.7的控制,当电控水龙头的控制端为“0”时水龙头打开,当电控水龙头的控制端为“1”时水龙头关闭。显示器通

6、过74HC573编码与单片机相连,采用动态显示显示洗涤时间。蜂鸣器有由P3.5控制,当P3.5输出为“1”时蜂鸣器发声,洗涤结束时发出提示音。本设计采用11.0592MHz的晶体振荡器定时器0和定时器1的 设置为每隔50ms产生一次中断,用于水位、洗涤、脱水和排水的定时。 图3.2洗衣机控制系统总体电路图四、单元电路设计说明4.1电源电路单片机系统电源部分的电气原理图如图4.1所示。市电220V经过变压器T变压为12V交流电,再通过4只二极管全桥整流,经过电容C9、C10滤波得到光滑的直流电压后,经过三端稳压管(7805)稳压得到稳定的+5V电压给各器件供电。图4.1电源部分电路图4.2单片机

7、控制电路AT89S51单片机作为控制部件,该型号单片机共有40个引脚采用双列直插式的,下面是各个引脚的功能:(1) 输入/输出口线P0.0P0.7 P0口的8位双向口线。P1.0P1.7 P1口的8位双向口线;内部具有上拉电阻。P2.0P2.7 P2口的8位双向口线;内部具有上拉电阻。P3.0P3.7 P3口的8位双向口线;内部具有上拉电阻。还具有第二功能见表4-2-1。表4-2-1 P3口的第二功能口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0的申请P3.3INT1外部中断1的申请P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数

8、器1计数输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通2)控制信号线RST-复位输入信号高电平有效,用以完成单片机的复位初始化操作。EA/Vpp-外部程序存贮器访问允许信号/编程电压输入端,当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始的,并可延至外部程序存储器。PSEN-低电平有效,可实现对外部ROM单元的读操作。ALE/PROG-低字节地址锁存信号/编程脉冲输入端3)电源和外部晶振引脚Vcc-电源电压输入引脚GND-电源地XAL1、XTAL2-外部晶振引脚4)存储器的分配 AT89S51的内部共有256

9、个数据存储单元,通常把这256个单元按其功能划分为两部分:低128单元和高128单元,其中低128个单元供用户暂存中间数据,可读可写,掉电后数据会丢失;高128个单元被专用寄存器占用。其中内部数据存储器的分配情况如图4.2所示:图4.2数据存储器的分配情况图4.3单片机的时钟电路时钟电路由晶振元件与单片机内部电路组成,产生的振荡频率为单片机提供时钟信号,供单片机信号定时和计时。在AT89S51单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端为XTAL2。只要在两引脚之间跨接晶体振荡器和微调电容C4、C5,就可以构成一个稳定的自激振荡器。本设计采用图4.3 所示电路。一般地,

10、电容C1和C2取33pf左右;晶体振荡器,简称晶振,频率范围是1.212MHz。晶振频率越高,系统的时钟频率也就越高,单片机的运行速度也就越快。在通常情况下,使用振荡频率为6MHz或12MHz的晶振。如果系统中使用了单片机的串行口通信,则一般使用频率为11.0592MHz的晶振。而在本次设计中采用的是频率为11.0592MHz的晶振。图4.3 单片机时钟电路4.4显示电路显示模块由发光二极管和LED显示器组成。LED(Light Emiting Diode)是发光二极管英文名称的缩写。本次设计中我们采用发光二极管主要是用来指示洗衣机的工作状态。5个发光二极管分别跟单片机的P1口的5个I/O口连

11、接,分别用来显示不同的洗衣机工作状态,如图4.4.1所示。当发光二极管的负极所对应的P1口为低电平时,发光二极管导通。图4.4.1 LED显示电路2.LED显示器是由发光二极管构成的,所以在显示器前面冠以“LED”。本次设计只是显示时间,所以采用LED显示器就可以达到目的了。如图4.4.2所示:图4.4.2 LED显示电路图本次设计中我们采用的是2位共阳极数码管,其中段码线占用1个8位I/O口,即为P0口,而位选占用2个I/O口,在P2.6和P2.7口。由于各位的段码线并联,8位I/O口输出的段码对各个显示位来说都是相同的。因此,在同一时刻,如果各位位选都处于选通状态的话,2位LED将显示相同

12、的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用动态显示,即在某一时刻,只让一位的位选线处于选通状态,而其他各位的位选处于关闭状态,同时,段码线上输出相应位要显示的字符段码。这样,在同一时刻,2位LED中只有选通的那位显示字符,而其他1位则是熄灭的。同样,在下一时刻,只让下一位的位选处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位都是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉

13、暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。4.5蜂鸣器报警电路本设计采用无源蜂鸣器,单片机必须输出固定频率的方波信号,其工作电压范围宽,4-12V,需要外围元件少,电压增益可调范围为20-200。通过CPU的P3.5输出高电平来控制蜂鸣器报警。如图4.5所示:图4.5 蜂鸣器电路4.6电动机的控制电路1.继电器的作用继电器是在自动控制电路中起控制与隔离作用的执行部件,它实际上是一种可以用低电压、小电流来控制高电压、大电流的自动开关。2.电动机控制电路的工作原理电动机M控制部分的电气原理图如图4.6所示。电动机有两个控制端,一端控制电机正传该端与P2.0相

14、连,另一端控制电机反转该端与P 2.1相连。系统供电时交流220V电压经过继电器加在电动机的两个控制端。当洗衣机接到“正转”指令时P2.0输出高电平经过R2、Q4使得继电器RL1线圈得电导通RL1,从而使得电机正转。当洗衣机接到“反转”的指令时P2.1输出高电平经过R3、Q5使得继电器RL2线圈得电导通RL2,从而使得电机反转。图4.6电机控制电路4.7进水/排水电路如图4.7所示,进水阀受P1.6的控制,出水阀受P1.7的控制。当电控水龙头的控制端P1.6为“0”时,RL4线圈得电使得进水阀打开。当电控水龙头的控制端P1.7为“0”时,RL3线圈得电使得出水阀打开。图4.7 进/出水电路图4

15、.8按键电路如图4.8所示,按键未按下时单片机P1.5-7均为高电位,有按键按下时,相应的单片机端口就能检测到低电位,从而完成按键的检测。图4.8 按键电路5、软件设计5.1 主程序设计根据硬件设计要求控制主程序流程图如图5.1所示。洗衣机通电之后单片机上电首先进行程序的初始化以及各参数初值的设定。默认洗衣时间为3分钟,水位为低水位。然后扫描按键的状态确定洗衣过程。当发现启动键按下洗衣机从待命状态进入工作状态。完成进水、洗涤、排水、脱水、提醒的循环过程。当洗衣结束时控制蜂鸣器发声。图5.1 主程序流程图5.2 洗涤程序的设计洗涤是洗衣过程中的主要步骤。当进水结束后进入洗衣状态,洗衣开始,电动机

16、正转-停止-反转一直循环,当洗衣时间等于零时,洗衣结束且进入排水。程序流程图如图5.2所示:图5.2 洗涤程序流程图5.3 脱水程序的设计脱水前先打开排水阀排水。然后启动电动机脱水并保持排水阀开启,然后停止脱水,并且蜂鸣器报警提醒用户洗衣完成。程序流程图如图5.3所示:图5.3 脱水程序流程图附整个洗衣程序 #include #define uchar unsigned char #define uint unsigned int sbit dula=P26; sbit wela=P27; sbit key1=P15; sbit key2=P16; sbit key3=P17; uchar c

17、ode talbe= /编码LED 0-12 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c; void delayms(uint); /延时子程序 void keyscan(); /按键扫描 void wash(uint,uint); /洗涤子程序 void display(uint); /显示子程序 void water(uint); /进水子程序 void dry(); /脱水子程序 void main() while(1) keyscan(); while(time*60)0) /洗涤过程 (time*60)-

18、; P23=0; /打开排水阀 delayms(30000) delayms(30000) /延时1分钟 P23=1; /关闭排水阀 dry(); /脱水过程 beep(); /蜂鸣提示洗衣结束 void delayms(uint xms) /延时约xms uint i,j; for(i=xms;i0;j-);void beep() P10=1; /运行灯熄灭 P11=0; /点亮结束指示灯 P12=1; /关闭水位指示灯 P13=1; P14=1; P35=1; /蜂鸣器启动void display(uint) /显示子函数 uchar shiwei,gewei; shiwei=time%1

19、0; /取时间的十位 gewei=time/10 /取时间的个位 whlie(1) dula=1; P0=tableshiwei; /送十位段选数据 dula=0; P0=0xff; /送位选数据前关闭所有显示,防止打乱显示 wela=1; P0=0xfe; /送位选数据 wela=0; delayms(20); /延时 dula=1; P0=tablegewei; /送十位段选数据 dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delayms(20); void dry() uint num; TMOD=0x11; /设置定时器0为工作方式1 TH0=(

20、65536-45872)/256; /装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; /开总中断 ET0=1; /开定时器0中断 TR0=1; /启动定时器0P23=0; /打开排水阀 P20=1; / 开电机正转线圈 void T0() interrupt 1 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; num+; if(num=1200) /1分钟后关闭线圈 P20=0; void keyscan() uint x=2,time=3; if(key1=0) delay

21、ms(10); if(key1=0) water(x); P10=0; /运行灯点亮 if(key2=0) /检查洗涤时间设置 delayms(10); if(key2=0) time=time+1; if(time12) /最长洗涤时间为12分钟 time=3; display(time); if(key3=0) /检查水位设置 delayms(10); if(key2=0); x=x+1; P1(x)=0; if(x=4) x=2; void wash(uint time,uint x) uint num1,num2; TMOD=0x11; /设置定时器0为工作方式1,定时器1为工作方式1

22、 TH0=(65536-45872)/256; /装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; /开总中断 ET0=1; /开定时器0中断 TR0=1; /启动定时器0 P20=1; /电机正转 while(time*60)0) /等待发生 (time*60)-; void T0() interrupt 1 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; num1+; if(num1=100) /5s P20=0; /电机停止正转 ET1=1; /开定时器1中断 TR1=1

23、; /启动定时器1 void T1() interrupt 3 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; num2+; if(num2=60) /3s P21=1; /电机反转 void water(uint x) /进水子程序 uint num; TMOD=0x11; /设置定时器0为工作方式1 TH0=(65536-45872)/256; /装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; /开总中断 ET0=1; /开定时器0中断 TR0=1; /启动定时器0 P2

24、2=0; / 开进水阀 void T0() interrupt 1 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; num+; switch(x) case 2: if(num=1000) /进水50s P22=1; /进水阀关闭 低水位 break; case 3: if(num=2000) /进水100s P22=1; /进水阀关闭 中水位 break; case 4: if(num=3000) /进水150s P22=1; /进水阀关闭 高水位 break; 六、调试过程出现的问题调试的时候,电机可以按照要求正常运转,水位控制也正常

25、,但是7段数码管显示乱码。经过检查,排除硬件的问题,进而将矛头转向程序。经过仔细检查,发现在每次送完段选数据后,没有关闭P0口,造成原来保持在P0口的段选数据立即通过位选锁存器直接加在数码管上,在数码管高速显示状态下,数码管就出现显示混乱的现象了。加上“P0=0xff”之后,再送入位选数据,就不会出现7段数码管显示混乱的现象了。七、体会与总结通过本次运动控制的实训洗衣机的控制设计,收获主要为一下几个方面:(1)、对洗衣机的控制流程有了深刻的认识;(2)、对于单片机如何控制电机有了更深刻的了解;(3)、巩固了C语言的知识,尤其是单片机定时器中断方面,认识到C语言对于单片机的编程的重要性;(4)、巩固了Protues、Keil、Office等专业必备软件的基本操作使用知识;(5)、通过解决该设计过程中出现的问题,加强了自己独立分析解决问题的能力。参考文献新概念51单片机C语言教程 郭天祥 编著 电子工业出版社西门子PLC开发入门与典型实例 海心 马银忠 编著 人民邮电出版社基于单片机的洗衣机智能控制系统 MCS-51单片机原理及应用实例 南建辉等 编著 清华大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1