📄 洗衣机源程序.c
字号:
delay(2);
mainlyinterface();
break;
} */
default:{
flag3=0;
mainlyinterface();
break;
}
}
}
break;
}
/*运行甩干部分*/case 5: { clear();
dlbjdj=35;
display(0x80,shuaigan0);
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,15);
}
yes=0;
sum++;
}
sum=0;
clear();
mainlyinterface();
break;
}
default:{
flag1=0;
mainmenu();
break;
}
}
}
flag1=1;
break;
}
/*自动操作过程*/
case 2:{
p31=0;
clear();
display(0x90,water0);
while(!p31)
{adc0809(ad);}
clear();
display(0x90,water1);
delay(3);
clear();
display(0x80,jinpao0);
while(sum<10)
{
display1(sum);
while(!yes);
yes=0;
sum++;
}
sum=3;
clear();
display(0x90,jinpao1);
delay(2);
clear();
display(0x80,qiangxi0);
dlbjdj=35;
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,10);
ctrl(1,10);}
yes=0;
sum++;
}
sum=4;
clear();
display(0x90,qiangxi1);
delay(2);
clear();
sum=4;
display(0x80,qingxi0);
dlbjdj=55;
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,7);
ctrl(1,7);}
yes=0;
sum++;
}
sum=4;
clear();
display(0x90,qingxi1);
delay(2);
clear();
display(0x80,ruoxi0);
dlbjdj=70;
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,6);
ctrl(1,6);}
yes=0;
sum++;
}
sum=4;
clear();
display(0x90,ruoxi1);
delay(2);
clear();
display(0x80,water2);
while(p31)
{adc0809A(ad);}
delay(3);
p31=1;
clear();
display(0x80,water3);
delay(2);
dlbjdj=50;
display(0x80,tuoshui0);
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,10);
ctrl(0,10);
}
yes=0;
sum++;
}
sum=0;
clear();
display(0x90,tuoshui1);
delay(2);
clear();
clear();
p31=0;
display(0x90,water0);
delay(3);
while(!p31)
{adc0809(ad);}
clear();
display(0x90,water1);
delay(3);
clear();
dlbjdj=50;
display(0x80,piaoxi0);
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,10);
ctrl(1,10);}
yes=0;
sum++;
}
sum=0;
clear();
display(0x90,piaoxi1);
delay(2);
clear();
p31=1;
display(0x80,water2);
while(p31)
{adc0809A(ad);}
p31=1;
clear();
display(0x80,water3);
delay(2);
dlbjdj=40;
display(0x80,shuaigan0);
while(sum<10)
{
display1(sum);
while(!yes)
{ctrl(0,15);
}
yes=0;
sum++;
}
sum=0;
clear();
display(0x90,zidong1);
delay(2);
display(0x90,zidong2);
delay(4);
clear();
mainmenu();
break;
}
}
}
}
/*各种菜单显示*/
void Welcome()
{
clear();
display(0x80,welcom0);
display(0x90,welcom1);
display(0x88,welcom2);
display(0x98,welcom3);
}
void mainmenu()
{ clear();
display(0x80,menu);
display(0x90,menu0);
display(0x88,menu1);
}
void mainlyinterface()
{
clear();
display(0x80,handwash);
display(0x90,list21);
display(0x88,list22);
display(0x98,list23);
}
void choose()
{ clear();
display(0x80,shuiwei);
display(0x90,yiji);
display(0x88,erji);
display(0x98,sanji);
}
void IntensitySelectMenu()
{ clear();
display(0x80,xidicaidan);
display(0x90,fangshi0);
display(0x88,fangshi1);
}
void washtime(void)
{ clear();
display(0x80,piaoxicishu0);
display(0x90,piaoxicishu1);
display(0x88,piaoxicishu2);
}
void dlms(uint speed) /*步进电机节拍控制*/
{
uint i;
uint j;
for(i=0;i<speed&&p30;i++)
{
for(j=0;j<10;j++);
}
}
void delay(uint n)
{ uint i;
for(i=0;i<n;i++)
{
delay1();
}
}
/* LCD 函数 */
void lcd_busy(void) /*LCD忙状态检测函数 */
{
do
{
status=r_s_add; /* 读状态字地址的第7位 */
}
while(busy);
}
void clear()
{
lcd_busy();
w_c_add=0x30; /* 功能设置:8位数据 */
lcd_busy();
w_c_add=0x0C; /* 显示状态:整体显示,游标位置无效*/
lcd_busy();
w_c_add=0x01;/* 清除显示:将DDRAM填满“20H”,并且设定DDRAM的地址计数器到“00”*/
lcd_busy();
w_c_add=0x02;/* 地址归位:设定DDRAM的地址计数器到“00”,将游标移到开头原点位置 */
display(0x80,space);
display(0x90,space);
display(0x88,space);
display(0x98,space);
}
void display(uint m,uchar *p)
{ uint n;
uint add;
add=m; /* 设置显示坐标,80H对应字符的第一行第一列 */
lcd_busy();
w_c_add=add; /* 写数据 */
for(n=0;n<8;n++)
{
lcd_busy();
w_d_add=p[2*n];
lcd_busy(); /* 写数据 ,上半字节*/
w_d_add=p[2*n+1]; /* 写数据 ,下半字节*/
}
}
/*倒计时显示函数*/
void display1(uchar time)
{ uchar n;
uchar add;
lcd_busy();
add=0x90; /* 设置显示坐标,80H对应字符的第一行第一列 */
lcd_busy();
w_c_add=add; /* 写数据 */
for(n=0;n<8;n++)
{
lcd_busy();
w_d_add=xidi[2*n];
lcd_busy(); /* 写数据 ,上半字节*/
w_d_add=xidi[2*n+1]; /* 写数据 ,下半字节*/
}
add=0x94;
lcd_busy();
w_c_add=add;
lcd_busy();
w_d_add=number[time];
lcd_busy();
}
/*键盘函数*/
uint getkey()/*取键值函数*/
{ uchar i;
while(ifkey()==0);/*无键按下等待*/
COM=0x40;/*读fifo ram命令*/
i=DAT;
i=i&0x3f;/*取键值低6位*/
return(i);/*返回键值*/
}
uint ifkey(void)/*判断fifo有键按下函数*/
{ uint k;
k=COM;
return(k&0x0f);/*有键按下*/
}
/*步进电机*/
void ctrl(bit cf,uint n)
{ uint i;
uchar j=0;
uint k;
if(cf==0) /*正转标志*/
for(k=0;k<n;k++)
{for(i=0;i<11;i++)
{P1=plus[j];
dlms(dlbjdj);
j+=1;
if(plus[j]==0) j=0;
}
}
else /*反转标志*/
for(k=0;k<n;k++)
{ for(i=0;i<11;i++)
{P1=minu[j];
dlms(dlbjdj);
j+=1;
if(minu[j]==0) j=0;
}
}
}
/*ad转换函数*/
/*上水检测函数*/
void adc0809(uchar idata *x)
{ uchar i;
uchar xdata *ad_adr;
p31=0;
ad_adr=&IN0;
for(i=0;i<2;i++) /* 1个通道 */
{ *ad_adr=i; /* 启动AD转换 */
delaymm(); /* 延时等待 */
x[i]=*ad_adr; /* 取转换值 */
}
if(x[1]>180)p31=1;
else p31=0;
}
/*上水检测函数*/
void adc0809A(uchar idata *x)
{ uchar i;
uchar xdata *ad_adr;
p31=0;
ad_adr=&IN0;
for(i=0;i<2;i++) /* 1个通道 */
{ *ad_adr=i; /* 启动AD转换 */
delaymm(); /* 延时等待 */
x[i]=*ad_adr; /* 取转换值 */
}
if(x[1]>100)p31=1;
else p31=0;
}
void delaymm(void) /*ad用延时 */
{ uchar i,j;
for(i=0;i<10;i++)
{
for(j=0;j<200;j++)
{;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -