功能描述:
1.用直流电机的转速快慢代表三种不同洗衣方式:弱洗、强洗、漂洗。
2.用三个按键设置待洗衣物的不同方式,由 LED 数码管显示定时时间。丝质衣服:漂洗3分钟;棉质衣服:强洗5分钟,漂洗3分钟,弱洗2分钟;化纤衣服:强洗4分钟,漂洗3分钟。3.可用按键自行设定洗涤方式,即自行调整弱洗、强洗、漂洗的定时时间。
一、Proteus仿真设计
元件清单:
原理图:
仿真图:
仿真运行:
程序框图设计
主程序设计
void main()
{
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
if(!k1)//丝质
{
mode=0;
write_com(1);
while(!k1);
}
if(!k2)//棉质
{
mode=1;
write_com(1);
while(!k2);
}
if(!k3)//化纤
{
mode=2;
write_com(1);
while(!k3);
}
if(!k6)//自定义
{
mode=3;
write_com(1);
while(!k6);
}
if(!k4)//启动
{
start=1;
write_com(1);
while(!k4);
}
if(!k5)//停止
{
start=0;
write_com(1);
while(!k5);
}
if(start==1)//洗涤控制
{
if(mode==0)//丝质,漂洗定时3分钟
{
fen=3;miao=0;
led1=1;
led2=1;
led3=0;
write_string(2,0,"piao ");
while((fen>0)||(miao>0))
{
pwm(3);
if(!k5)//停止
{
start=0;
break;
}
}
sec=30;
start=0;
}
if(mode==1)//棉质,强洗5分钟;漂洗3分钟;弱洗2分钟;
{
fen=10;miao=0;
led1=1;
led2=0;
led3=1;
write_string(2,0,"qiang ");
while(fen>4)
{
pwm(2);
if(!k5)//停止
{
start=0;
break;
}
}
led1=1;
led2=1;
led3=0;
write_string(2,0,"piao ");
while(fen>1)
{
pwm(3);
if(!k5)//停止
{
start=0;
break;
}
}
led1=0;
led2=1;
led3=1;
write_string(2,0,"ruo ");
while((fen>0)||(miao>0))
{
pwm(1);
if(!k5)//停止
{
start=0;
break;
}
}
sec=30;
start=0;
}
if(mode==2)//化纤,强洗4分钟;漂洗2分钟;
{
fen=6;miao=0;
led1=1;
led2=0;
led3=1;
write_string(2,0,"qiang");
while(fen>1)
{
pwm(2);
if(!k5)//停止
{
start=0;
break;
}
}
led1=1;
led2=1;
led3=0;
write_string(2,0,"piao ");
while((fen>0)||(miao>0))
{
pwm(3);
if(!k5)//停止
{
start=0;
break;
}
}
sec=30;
start=0;
}
if(mode==3)//自定义,弱洗,强洗,漂洗
{
fen=time1+time2+time3;miao=0;
led1=0;
led2=1;
led3=1;
write_string(2,0,"ruo ");
while(fen>time2+time3-1)
{
pwm(1);
if(!k5)//停止
{
start=0;
break;
}
}
led1=1;
led2=0;
led3=1;
write_string(2,0,"qiang ");
while(fen>time3-1)
{
pwm(2);
if(!k5)//停止
{
start=0;
break;
}
}
led1=1;
led2=1;
led3=0;
write_string(2,0,"piao ");
while((fen>0)||(miao>0))
{
pwm(3);
if(!k5)//停止
{
start=0;
break;
}
}
sec=30;
start=0;
}
}
else//停止状态
{
led1=1;
led2=1;
led3=1;
if(mode==3)//自定义设置
{
if(!k7)
{
if(time1<99)
time1++;
while(!k7);
}
if(!k8)
{
if(time1>0)
time1--;
while(!k8);
}
if(!k9)
{
if(time2<99)
time2++;
while(!k9);
}
if(!k10)
{
if(time2>0)
time2--;
while(!k10);
}
if(!k11)
{
if(time3<99)
time3++;
while(!k11);
}
if(!k12)
{
if(time3>0)
time3--;
while(!k12);
}
}
}
}
}
//定时器中断
void Timer0() interrupt 1
{
if(time<1)//20=1s 10=0.5s
time++;
else
{
time=0;
if(miao>0) //倒计时
miao--;
else
{
miao=59;
if(fen>0)
fen--;
else
{
miao=0;
}
}
disp[0]=fen/10+0x30;//显示
disp[1]=fen%10+0x30;
disp[3]=miao/10+0x30;
disp[4]=miao%10+0x30;
if(start==1)
{
write_string(2,8,disp);
}
else
{
if(mode<3)
write_string(2,0," ");
else
{ //显示设置
xian[0]=time1/10+0x30;
xian[1]=time1%10+0x30;
write_string(2,0,xian);
xian[0]=time2/10+0x30;
xian[1]=time2%10+0x30;
write_string(2,4,xian);
xian[0]=time3/10+0x30;
xian[1]=time3%10+0x30;
write_string(2,8,xian);
write_string(2,11,"min");
}
}
//模式显示
if(mode==0)
write_string(1,4," silk ");
if(mode==1)
write_string(1,4," Cotton ");
if(mode==2)
write_string(1,4,"Chemical");
if(mode==3)
write_string(1,4,"Self define");
}
if(sec>0)//蜂鸣器控制
{
sec--;
beep=0;
}
else
beep=1;
TH0=0X3C;
TL0=0XB0;
}
工程文件
工程渠道
链接:https://pan.baidu.com/s/1aa13PtR3PddfBTqTl3i5-w?pwd=yyds
提取码:yyds
也可私信UP,简介有联系方式,欢迎交流。