目录
设计课题:全自动洗衣机 1
二、设计任务书 1
1、题目 1
2、设计要求 2
三、主要技术指标和说明 2
摘 要 2
(5)各种操作和洗衣机的运行状态均用LED显示. 2
一、设计任务与要求 3
(3) 通过“K3”键控制洗衣机运行、暂停和解除报警功能。 3
(1) 开机默认状态为标准方式、强洗。 3
(3) 在进水和脱水过程中,相应的指示灯亮,继电器吸合。 3
二、 方案设计与论证 3
三、 硬件电路设计 3
(1) 电动机驱动模块电路设计 4
(2) 电源模块电路设计 4
(3) 控制按键 4
(4) 进水阀和排水阀控制继电器 4
五、 调试与分析 6
1、软件调试: 6
2、硬件调试: 6
六、 总结 6
七、 程序代码: 6
二、设计任务书
1、题目
全自动洗衣机
2、设计要求
请参照主要技术指标和说明完成本次设计。
画出硬件连接电路图,说明各个控制信号的作用。
画出程序流程图,编写程序,硬件连接调试,直至正确。
编写设计报告。
三、主要技术指标和说明
● 由独立式按键确定功能键,包括“标准”、“经济”、“单独”、“排水”、“强洗”、“弱洗”等等;
● 排水与进水由时间控制;
● 开机默认状态为标准方式、强洗;
● 在洗涤和漂洗过程中,电动机正转一次,反转一次,连续运行;
● 在进水和脱水过程中,相应指示灯亮,继电器吸合;
● 当在执行某个步骤时,只有“K3”键有效,按下暂停,再按下恢复运行。
#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar num=0,num1=0,num2=0,num3=0,num4=0,num5=0,num6=0,flag=0,flag1=0,flag4=0,flag5=0,circle=0;sbit ledbiaozhun=P1^0; //LED指示灯sbit ledjingji =P1^1;sbit leddandu =P1^2;sbit ledpaishui =P1^3;sbit ledqiangxi =P1^4;sbit ledruoxi =P1^5;sbit ledxidi =P1^6;sbit ledpiaoxi =P1^7;sbit ledtuoshui =P2^0;sbit sshuiwei =P3^6; //水位开关sbit sgai =P3^7; //盖开关sbit paishui=P2^3; //排水阀控制sbit jinshui=P2^2; //进水阀控制sbit U2=P2^4;sbit U3=P2^5;sbit k1=P3^0; // 步进改变"标准、经济、单独、排水"四种方式sbit k2=P3^1; //强洗、弱洗sbit k3=P3^2; //运行、暂停和解除报替功能void init(){uchar a=0,b=0,c=0;TMOD=0x01; //T0工作于方式1TH0=(65536-50000)/256; //定时时间50msTL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开T0中断TR0=0; //关闭T0EX0=1; //开外部中断0IT0=1; //外部中断0边沿触发方式U2=1; //电机停转U3=1;P0=0xff;}void delayms(uint xms) //延时{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void key() //控制按键{circle=1;if(k1==0) //标准、经济、单独、排水按下{delayms(10); //延时消抖if(k1==0) //再判{num++; //K1按下次数加1if(num==4)num=0; //等于4,按下次数清0while(!k1); //等待按键释放}}if(k2==0) //强弱选择{delayms(10); //延时消抖if(k2==0) //再判{num1++; //按下次数加1if(num1==2)num1=0; //等于2,按下次数清0while(!k2); //等待按键释放}}}void qiang() //强{if(flag4==0) //电机正转{ U2=0;U3=1;}if(flag4==1) //电机反转{U2=1;U3=0;} }void ruo() //弱{if(flag5==0) //电机正转{ U2=0;U3=1;}if(flag5==1) //电机反转{U2=1;U3=0;}}void qbiaozhun() //强标准{/*******洗涤********/num=0;num1=0;ledbiaozhun=0;//标准洗LED亮ledqiangxi=0; //强洗LED亮jinshui=0; //打开进水阀ledxidi=1; //洗涤ledpiaoxi=1; //漂洗LED亮ledtuoshui=1; //脱水LED亮delayms(5000);//水位监测jinshui=1; //关闭进水阀ledxidi=0;flag1=1; // TR0=1; //启动定时器T0while(flag==0)//flag为洗涤次数标志位{ if(flag==0&&num2==1){ TR0=1;flag1=1; //qiang();}if(flag==0&&num2==2){TR0=0; //关闭定时器T0U2=1; //电机停止U3=1;}};//漂洗U2=1;U3=1; TR0=0;flag1=0;paishui=0; //排水ledtuoshui=1;ledpiaoxi=1;ledxidi=1;delayms(5000);paishui=1; //关闭排水delayms(100);jinshui=0; //打开进水delayms(5000);jinshui=1; //关闭进水ledpiaoxi=0;flag1=2;TR0=1;num3=0;num4=0;while(flag==1){if(flag==1&&num2==1)//强漂洗{ TR0=1;flag1=2;qiang();}if(flag==1&&num2==2)//暂停强漂洗{TR0=0;U2=1;U3=1;}};//漂洗U2=1;U3=1;TR0=0;flag1=0;paishui=0;ledtuoshui=1;ledpiaoxi=0;delayms(5000);paishui=1;delayms(100);jinshui=0;delayms(5000);jinshui=1;flag1=2;TR0=1;num3=0;num4=0;while(flag==2){if(flag==2&&num2==1){ TR0=1;flag1=2;qiang();}if(flag==2&&num2==2){TR0=0;U2=1;U3=1;}} ;//脱水U2=1;U3=1;TR0=0;flag1=0;paishui=0;//打开排水ledtuoshui=0;ledpiaoxi=1;while(sgai);paishui=1;delayms(1000);flag1=3;TR0=1;num3=0;num4=0;while(flag==3){if(flag==3&&num2==1){TR0=1;U2=0;U3=1;flag1=3;}if(flag==3&&num2==2){TR0=0;U2=1;U3=1;}};ledtuoshui=1;U2=1;U3=1;flag1=0; }