基于的51单片机全自动洗衣机设计北理工.docx

上传人:b****5 文档编号:3431443 上传时间:2022-11-23 格式:DOCX 页数:16 大小:202.29KB
下载 相关 举报
基于的51单片机全自动洗衣机设计北理工.docx_第1页
第1页 / 共16页
基于的51单片机全自动洗衣机设计北理工.docx_第2页
第2页 / 共16页
基于的51单片机全自动洗衣机设计北理工.docx_第3页
第3页 / 共16页
基于的51单片机全自动洗衣机设计北理工.docx_第4页
第4页 / 共16页
基于的51单片机全自动洗衣机设计北理工.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于的51单片机全自动洗衣机设计北理工.docx

《基于的51单片机全自动洗衣机设计北理工.docx》由会员分享,可在线阅读,更多相关《基于的51单片机全自动洗衣机设计北理工.docx(16页珍藏版)》请在冰豆网上搜索。

基于的51单片机全自动洗衣机设计北理工.docx

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

全自动洗衣机课程设计

基于51单片机,C语言实现。

基本要求

模拟全自动洗衣机工作过程。

以电机替代洗衣机电机。

显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。

显示工作剩余时间(洗衣程序可自定义,时间精度:

秒)。

洗衣时交替正、反转。

扩展要求

洗衣和脱水时电机转速不同。

增加水位传感器输入。

故障报警。

增加声音提示。

其它自定义功能。

设计用Preteus仿真:

仿真图如下:

C文件函数代码:

#include

//****************************//

#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;x>0;x--)

for(y=120;y>0;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((sec<0)&&(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((sec<0)&&(min==0)&&(flag0==1))//洗衣结束

{

flag0=4;

out();

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==2))//泡衣结束

{

switch(flag3)

{

case1:

flag0=4;out();break;

case2:

flag0=4;out();break;

case3:

flag0=4;out();break;

default:

err=1;led_wring=0;

}

}

//**********************************//

if((sec<0)&&(min==0)&&(flag0==4))//出水结束

{

switch(flag2)

{

case1:

flag0=0;in();break;

case2:

flag0=0;in();break;

case3:

flag0=0;in();break;

case4:

flag0=3;xx();break;

default:

err=1;led_wring=0;

}

}

//***********************************//

if((sec<0)&&(min==0)&&(flag0==3))

{sec=0;

over();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

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

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