⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 washing.c

📁 学单片机时好友开发的个人觉得很不错的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
}

/************************************************************************************************
*       函数原形: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 + -