📄 washing.c
字号:
}
/************************************************************************************************
* 函数原形:select_0(void) ;
* 功 能:洗衣机水位等级选择及其界面
*************************************************************************************************/
void select_0(void) /*水位等级选择界面*/
{
lcd_clr();
w_limit[14]=w_number[scale/10];
w_limit[15]=w_number[scale%10];
display_lcd(w_limit,0x80);
display_lcd(w_fun1,0x90);
display_lcd(w_fun2,0x88);
}
/************************************************************************************************
* 函数原形:select_1(void) ;
* 功 能:洗衣机工作方式选择及其界面
*************************************************************************************************/
void select_1(void) /*工作方式选择界面*/
{
lcd_clr();
display_lcd(w_style,0x80); /*选择工作方式*/
w_style[14]=w_number[style/10];
w_style[15]=w_number[style%10];
display_lcd(w_fun3,0x90);
display_lcd(w_fun1,0x88);
display_lcd(w_fun2,0x98);
}
/************************************************************************************************
* 函数原形:select_2(void) ;
* 功 能:洗衣机漂洗次数选择及其界面
*************************************************************************************************/
void select_2(void) /*漂洗次数选择*/
{
lcd_clr();
display_lcd(w_time,0x80);
w_time[14]=w_number[time/10];
w_time[15]=w_number[time%10];
display_lcd(w_fun1,0x90);
display_lcd(w_fun2,0x88);
}
/************************************************************************************************
* 函数原形:select_3(void) ;
* 功 能:LCD显示清屏
*************************************************************************************************/
void select_3(void)
{
lcd_clr(); /*清除*/
display_lcd(w_endset,0x80);
display_lcd(w_fun2,0x90);
}
/************************************************************************************************
* 函数原形:select(void) ;
* 功 能:功能确认,调用洗衣机开始工作界面和其他工作、洗涤、漂洗方式控制函数。
*************************************************************************************************/
void select(void)
{
do{
switch(step)
{
case 0:begin();delay1ms(100);break;
case 1:select_0();delay1ms(100);break;
case 2:select_1();delay1ms(100);break;
case 3:select_2();delay1ms(100);break;
case 4:select_3();delay1ms(100);break;
default:break;
}
}while(step<5);
}
/************************************************************************************************
* 函数原形:void adc0809(void) ;
* 功 能:进行A/D转换
*************************************************************************************************/
void adc0809(void)
{
uchar xdata *ad_adr;
ad_adr=&A0809;
*ad_adr=1; /* 启动AD转换 */
delay1ms(1);
vol=*ad_adr; /* 取转换值 */
}
/************************************************************************************************
* 函数原形:void wtinput(uchar t) ;
* 功 能:对洗衣机进行上水
*************************************************************************************************/
void wtinput(uchar t) /*上水子模块*/
{
limit=128+t*40;
display_lcd(w_wtin,0x90);
alarm=1;
wtcon=0; /*打开进水开关*/
do
{alarm=0; /*低水位报警*/
adc0809();
display_lcd(w_wtin,0x90);
}while(vol<limit);
wtcon=1;
alarm=1; /*停止报警*/
display_lcd(w_wtover,0x88);/*显示上水结束*/
delay1ms(1000);
}
/************************************************************************************************
* 函数原形:void wtout() ;
* 功 能:洗衣机进行脱水
*************************************************************************************************/
void wtout()
{
uchar i,j;
display_lcd(w_wtout,0x90);
for(i=6;i>0;i--) /*控制6秒*/
{
w_left[4]=w_number[(i-1)/10];
w_left[5]=w_number[(i-1)%10];
display_lcd(w_wtout,0x90);
display_lcd(w_left,0x88); /*显示剩余时间*/
for(j=0;j<100;j++) /*电机控制部分 ,先看1秒转动步数*/
{
P1=*run++;
if(*run==0) run=run-8; /*边界控制*/
delay1ms(10) ; /*转速控制*/
}
}
}
/************************************************************************************************
* 函数原形:void jp(void) ;
* 功 能:洗衣机浸泡并显示剩余时间。
*************************************************************************************************/
void jp(void)
{
uchar i;
lcd_clr();
display_lcd(w_jp,0x80);
for(i=30;i>0;i--) /*浸泡30秒*/
{
w_left[4]=w_number[(i-1)/10];
w_left[5]=w_number[(i-1)%10];
display_lcd(w_left,0x90);
delay1ms(1000);
}
}
/************************************************************************************************
* 函数原形:void wash_display(uchar www[16],uchar time,uchar round) ;
* 功 能:洗衣机洗涤并显示剩余时间。
*************************************************************************************************/
void wash_display(uchar www[16],uchar time,uchar round) /*洗涤,漂洗*/
{
uchar idata i,k;
uchar idata *tempt;
tempt=www;
lcd_clr();
display_lcd(www,0x80);
for(i=time;i>0;i--)/*以一秒为周期,控制*/
{
w_left[4]=w_number[(i-1)/10];
w_left[5]=w_number[(i-1)%10];
display_lcd(w_left,0x90);/*显示剩余时间*/
for(k=0;k<(1000/round);k++) /*电机控制部分 ,先看1秒转动步数*/
{
if(i%8<4) /*设定正反4秒正反交替一次*/
{
if(*runplus++==0) runplus=runplus-8;
run=runplus;
}
else
{
if(*runminus++==0) runminus=runminus-8;
run=runminus;
}
P1=*run;
delay1ms(round) ; /*转速控制*/
}
}
}
/************************************************************************************************
* 函数原形:void shg(void) ;
* 功 能:洗衣机甩干并显示剩余时间。
*************************************************************************************************/
void shg(void) /*甩干*/
{
uchar i,k;
lcd_clr();
display_lcd(w_shg,0x80);
run=&plus[0];
for(i=10;i>0;i--) /*以一秒为周期,控20秒*/
{
w_left[4]=w_number[(i-1)/10];
w_left[5]=w_number[(i-1)%10];
display_lcd(w_left,0x90); /*显示剩余时间*/
for(k=0;k<200;k++) /*电机控制部分*/
{
P1=*run++;
if(*run==0) run=run-8; /*边界控制*/
delay1ms(5) ;
}
}
}
/************************************************************************************************
* 函数原形:void main(void) ;
* 功 能:洗衣机调用函数实现所设功能。
*************************************************************************************************/
void main(void) /* 洗衣机主函数*/
{
uchar i; /*初始化*/
step=0;
start=0; /*开始洗衣控制位*/
run=runplus=&plus[0];
runminus=&minus[0];
IE=0x85; /*开外部中断0和1*/
IP=0x04; /*外部中断1优先*/
lcd_init();
while(1)
{
select(); /*选择程序*/
lcd_clr();
wtinput(scale);
jp();
if(flag==0) /*洗涤*/
{
wash_display(w_qx,20,10);
wash_display(w_qix,10,20);
}
else if(flag==1)
{
wash_display(w_qix,10,20);
}
wash_display(w_rx,10,30);
for(i=0;i<time;i++) /*漂洗time次*/
{
wtout() ;
wtinput(scale);
wash_display(w_px,10,10);
}
wtout() ;
shg();
lcd_clr();
work_end(); /*结束*/
delay1ms(2000);
step=0;
start=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -