基于的51单片机全自动洗衣机设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

全自动洗衣机课程设计基于51单片机,C语言实现。基本要求模拟全自动洗衣机工作过程。以电机替代洗衣机电机。显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。显示工作剩余时间(洗衣程序可自定义,时间精度:秒)。洗衣时交替正、反转。扩展要求洗衣和脱水时电机转速不同。增加水位传感器输入。故障报警。增加声音提示。其它自定义功能。设计用Preteus仿真:仿真图如下:C文件函数代码:#includereg51.h//****************************//#defineucharunsignedchar#defineuintunsignedint//*******************************////***************************//sbitmo_r=P3^2;//电机右控制线sbitmo_l=P3^3;//电机左控制线//****************************//sbitkey_menu=P3^4;//菜单按键sbitkey_on=P3^5;//开始按键sbitkey_off=P3^6;//结束按键sbitkey_se=P3^7;//菜单选择按键//***************************//sbitled_in=P0^0;//进水指示灯sbitled_xi=P0^1;//洗衣指示灯sbitled_pao=P0^2;//泡洗指示灯sbitled_xx=P0^3;//脱水指示灯sbitled_out=P0^4;//出水指示灯sbitled_over=P0^5;//洗衣结束指示灯sbitled_work=P0^6;//电机工作指示灯sbitled_wring=P0^7;//报警指示灯sbitother=P3^1;//脱水电源控制开关sbitanther=P3^0;//洗衣电源控制开关//******************************//ucharcodenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};////*****************************//charsec=0;//时间秒charmin=0;//时间分ucharcount=0;//中断计数ucharflag0=0;//洗衣机工作状态标志ucharflag1=0;//进水次数标志ucharflag2=0;//出水次数标志ucharflag3=0;//泡洗次数标志ucharerr=0;//报警标志ucharquan=0;//正反转计数//**********************************////函数声明//*************************************//voiddelay();//延时函数voidin();//进水子程序voidout();//出水子程序voidover();//结束子程序voidxi();//洗衣子程序voidpao();//泡衣子程序voidxx();//脱水子程序voidon();//工作on处理子程序voidse();//显示菜单选择voidSEG_display();//显示时间子程序voidkey_scan();//按键扫描子程序//*****************************////延时函数//****************************//voiddelay(uinti){uintx,y;for(x=i;x0;x--)for(y=120;y0;y--);}//******************************////工作on处理子程序//********************************//voidon(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;P0=0xff;if(flag0==0)in();if(flag0==1)xi();if(flag0==2)pao();if(flag0==3)xx();if(flag0==4)out();}//*******************************////结束子程序//*********************************//voidover(){other=0;anther=0;P0=0xff;mo_r=0;mo_l=0;led_over=0;EA=0;}//*********************************////进水子程序//*********************************//voidin(){anther=0;other=0;P0=0xff;led_in=0;flag1++;mo_r=0;mo_l=0;min=0;sec=8;}//*********************************////洗衣子程序//*********************************//voidxi(){anther=1;other=0;P0=0xff;led_work=0;led_xi=0;mo_r=1;mo_l=0;min=1;sec=36;quan=0;}//*********************************////泡衣子程序//*********************************//voidpao(){anther=1;other=0;P0=0xff;led_pao=0;led_work=0;flag3++;mo_r=1;mo_l=0;min=1;sec=35;quan=0;}//*********************************////脱水子程序//*********************************//voidxx(){other=1;anther=0;P0=0xff;led_xx=0;mo_r=0;mo_l=1;min=0;sec=50;}//*********************************////出水子程序//*********************************//voidout(){anther=0;other=0;P0=0xff;led_out=0;flag2++;mo_r=0;mo_l=0;min=0;sec=5;}//*********************************////显示菜单选择//*********************************//voidse(){P0=0xff;if(flag0=5)flag0=0;if(flag0==0){led_in=0;}if(flag0==1){led_xi=0;}if(flag0==2){led_pao=0;}if(flag0==3){led_xx=0;}if(flag0==4){led_out=0;}}//********************************////菜单处理子程序//**********************************//voidmenu(){min=0;sec=0;mo_r=0;mo_l=0;SEG_display();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);over();break;}}//****************************//if(key_se==0){delay(5);if(key_se==0){while(!key_se);flag0++;se();}}}}//*********************************////按键扫描子程序//*********************************//voidkey_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();}}//*********************************//if(key_off==0){delay(5);if(key_off==0){while(!key_off);over();}}}//*******************************////显示子程序//*********************************//voidSEG_display(){P1=0x01;P2=num[min/10];delay(10);P1=0x02;P2=num[min%10];delay(10);P1=0x04;P2=num[sec/10];delay(10);P1=0x08;P2=num[sec%10];delay(10);}//*********************************////主函数//*********************************//voidmain(){led_in=0;anther=0;other=0;while(1){SEG_display();key_scan();}}//**********************************////定时器0中断处理程序//**********************************//voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;sec--;if((flag0==1)||(flag0==2)){quan++;switch(quan){case1:mo_r=1;mo_l=0;break;case10:mo_r=0;mo_l=0;break;case15:mo_r=0;mo_l=1;break;case25:mo_r=0;mo_l=0;break;default:;}if(quan==30){quan=0;}}//**********************************//if((sec==0)&&(min!=0)){min--;sec=59;}//**********************************//if((sec0)&&(min==0)&&(flag0==0))//进水结束{switch(flag1){case1:flag0=1;xi();break;case2:flag0=2;pao();break;case3:flag0=2;pao();break;case4:flag0=2;pao();break;default:err=1;led_wring=0;}}//**********************************//if((sec0)&&(min==0)&&(flag0==1))//洗衣结束{flag0=4;out();}//**********************************//if((sec0)&&(min==0)&&(flag0==2))//泡衣结束{switch(f

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功