📄 xiyiji.c
字号:
}
void delay_s(unsigned char timedata)
{
timedata=timedata*20;
TR0=1;
while(timedata!=0)
{
TH0=0x3c;
TL0=0xb0;
while(TF0!=1);
TF0=0;
timedata--;
}
TR0=0;
}
void Frequency(void)interrupt 1 using 2
{
if(flag==1)
{
TF0=0;
feng=!feng;
TH0=BTH0;
TL0=BTL0;
}
}
//-----定时器T1中断子函数-----------------------------------------------------------------------------------
void delay_50ms(void) interrupt 3 using 3
{
TF1=0;
p++;
TH1=0x3c; //定时50ms
TL1=0xb0;
if(p==20)
{
p=0;
s0--;
if(s0<0)
{
s0=9;
s1--;
if(s1<0)
{
s1=5;
m0--;
if(m0<0)
{
m0=9;
m1--;
if(m1<0) {TH1=0x3c;TL1=0xb0;if(dsd==1) gj=1;dsd=1;TR1=0;}
}
}
}
}
}
//-----主函数-------------------------------------------------------------------------------
void main(void)
{
init();
//-----洗衣程序选择------------------------------------------------------------------------
while(cout!=1) //1键为洗衣程序确认键
{
key_saomiao();
if(cout==2)
{
i++;
if(i>3) i=0; //i为洗衣程序 0为标准洗衣 1为经济洗衣 2为单独洗衣 3为单独脱水
}
if(cout==3)
{
i--;
if(i<0) i=3;
}
if((cout==2)||(cout==3)) cout=0;
senddata=tab[i];
sendbyte(senddata);
delay_ms(1);
}
lastdata=senddata;
cout=0;
//----选择单独脱水时间(当选择单独脱水时)-------------------------------------------------------------------
if(i==3)
{
while(cout!=1) //4键为选择脱水时间确认键
{
key_saomiao();
if(cout==2)
{
j++;
if(j>=100) j=99; //j为单独脱水时的脱水时间
}
if(cout==3)
{
j--;
if(j<0) j=0;
}
if((cout==2)||(cout==3)) cout=0;
sw=j/10; //脱水时间的十位
gw=j%10;
P0=led_code[gw];
WX_SM(1,1,1);
delay_ms(2);
P0=led_code[sw];
WX_SM(1,1,0);
delay_ms(2);
P0=0xff;
}
cout=0;
}
//-----设置高低水位(当选择为标准、经济、单独洗衣时)--------------------------------------------------------------------------
if(i!=3)
{
while(cout!=1) //4键为选择高低水位确认键
{
key_saomiao();
if((cout==2)||(cout==3))
{
k++;
if(k>5) k=4;
} //k为高低水位 4为高水位 5为低水位
if((cout==2)||(cout==3)) cout=0;
senddata=tab[k];
senddata=senddata&lastdata;
sendbyte(senddata);
delay_ms(1);
}
lastdata=senddata;
cout=0;
//-----设置强弱洗--------------------------------------------------------------------------------------------------------------
while(cout!=1)
{
key_saomiao();
if((cout==2)||(cout==3))
{
qr++; //qr为强弱洗 6为强洗 7为弱洗
if(qr>7) qr=6;
}
if((cout==2)||(cout==3))cout=0;
senddata=tab[qr];
senddata=senddata&lastdata;
sendbyte(senddata);
delay_ms(1);
}
lastdata=senddata;
cout=0;
//-----是否开启浸泡功能------------------------------------------------------------------------------------------
while(cout!=1)
{
key_saomiao();
if((cout==2)||(cout==3))
{
pao++;
if((pao>8)&&(pao<16)) pao=16;
if(pao>16) pao=8; //8为开启浸泡功能 16为关闭浸泡功能
}
if((cout==2)||(cout==3))cout=0;
senddata=tab[pao];
senddata=senddata&lastdata;
sendbyte(senddata);
delay_ms(1);
}
lastdata=senddata;
cout=0;
}
//-----脱水程序选择--------------------------------------------------------------------------------------
if(i!=2)
{
while(cout!=1)
{
key_saomiao();
if(cout==2)
{
m++;
if(m>12) m=9; //m为脱水程序 9为3分间歇脱水 10为5分间歇脱水 11为3分长脱水 12为5分长脱水
}
if(cout==3)
{
m--;
if(m<9) m=12;
}
if((cout==2)||(cout==3)) cout=0;
senddata=tab[m];
senddata=senddata&lastdata;
sendbyte(senddata);
delay_ms(1);
if(i==3)
{
P0=led_code[gw];
WX_SM(1,1,1);
delay_ms(2);
P0=led_code[sw];
WX_SM(1,1,0);
delay_ms(2);
}
}
lastdata=senddata;
cout=0;
}
//-----洗衣主程序------------------------------------------------------------------------------------------
if(i!=3) //在标准、经济、单独洗衣程序下进入进水程序
{
xy_jinshui();
//-----浸泡衣物------------------------------------------------------------
if(pao==8)
{
q=6;
while(q!=0) //先洗涤1分钟
{
q--;
zhengz=0;
delay_s(4); //正转4s
zhengz=1;
delay_s(1); //停止1s
fanz=0;
delay_s(4); //反转4s
fanz=1;
delay_s(1); //停止1s
}
m1=1,m0=0,s1=0,s0=0; //再浸泡10分钟
TR1=1;
while(dsd!=1) led();
dsd=0;
}
//-----标准洗衣、经济洗衣--------------------------------------------------------------
if(i!=3)
{
//----洗涤环节-------------------------------------------------------
F1: q=12-n*12; //第一次洗涤6分钟
xy_xidi();
//----排水环节--------------------------------------------------------
if(i==2) goto F2;
F0: paisf=0; //洗涤完成开始排水
m1=2,m0=0,s1=0,s0=0; //设置排水时间限制
TR1=1;
xy_paishui();
time0=(m1*60*10+m0*60+s1*10+s0);
time0=(1200-time0); //time0为排水花去的时间
time1=2*time0+60;
if(time1>=190) time1=190;
time0=(time1-time0);
P0=led_code[time0];
delay_s(2);
delay_s(time0);
//----脱水环节---------------------------------------------------------
if((m==9)||(m==10))
{
if(m==9) q=26;
if(m==10)q=43;
F3: while(q!=0)
{
q--;
tuoshui_jianxie();
if(pianx==0)
{
if(s==4)
{
m1=2,m0=0,m1=0,m0=0; //设定报警时间限 20分钟
TR1=1;
errcode=3; //设置故障代码:3表示脱水不平衡 衣物重心不在中心
alarm();
key_saomiao();
if(cout==4) dsd=0; //4键关闭报警
if(gj==1) stop=0; //报警20分钟若无任何人为动作,则自动关机
}
if(s!=0) xiuzheng();
s++;
}
}
}
else
{
if(m==11) m1=0,m0=3,s1=0,s0=0;
if(m==12) m1=0,m0=5,s1=0,s0=0;
TR1=1;
F4: while(dsd!=1)
{
zhengz=0; //长脱水,电机一直正转
if(pianx==0)
{
if(s==4)
{
m1=2,m0=0,m1=0,m0=0; //设定报警时间限 20分钟
TR1=1;
errcode=3; //设置故障代码:3表示脱水不平衡 衣物重心不在中心
alarm();
key_saomiao();
if(cout==4) dsd=0; //4键关闭报警
if(gj==1) stop=0; //报警20分钟若无任何人为动作,则自动关机
}
if(s!=0)
{
xiuzheng();
goto F0;
}
s++;
}
}
dsd=0;
zhengz=1;
}
delay_s(10);
paisf=1;
n++;
//-----标准洗衣-----------------------------------------------------------------------------------------------
if(i==0)
{
if(n<=2)
{
xy_jinshui();
goto F1;
}
}
//-----经济洗衣------------------------------------------------------------------------------------------------
if(i==1)
{
if(n<=1)
{
xy_jinshui();
goto F1;
}
}
}
}
else if(i==3)
{
if((m==9)||(m==10))
{
q=(sw*60*10+gw*60)/7+1;
goto F3;
}
if((m==11)||(m==12))
{
m1=sw,m0=gw,s1=0,s0=0;
TR1=1;
goto F4;
}
}
F2: q=10;
while(q!=0) //播放10遍音乐以提示用户洗衣完成、取走衣物
{
if(gqbm[y]==9)
{
y=0;
q--;
}
else if(gqbm[y]!=9)
{
if((gqbm[y]==0)&&(gqbm[y+1]==0))
{
BTH0=0;
BTL0=0;
}
else
{
x=gqbm[y]*12+gqbm[y+1]+tone[0];
BTH0=TH[x];
BTL0=TL[x];
}
time2=Beat[gqbm[y+2]];
sing();
y=y+3;
}
}
stop=0; //关闭洗衣机
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -