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

📄 control.h~

📁 这是电池检测仪的程序
💻 H~
📖 第 1 页 / 共 2 页
字号:
					case 2:     					//p2
					   	if((unsigned int)(control_time/10)>tl[1]+tl[0]){ 
					   		pl_temp=change(pl[1],1);
           					pl_temp1=((float)change(pl[2],1)-(float)change(pl[1],1))/(float)(tl[2]*2); 
           					control_timel=0;
           					start_l=3;                                     
           				}
						break;    
					case 3:							//p2-p3
					   	if(control_timel>5){
					   		pl_temp+=pl_temp1;
           					pwm(1,1,pl_temp);	
           					control_timel=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tl[2]+tl[1]+tl[0]){
					   		start_l=4;  
           					pwm(1,1,change(pl[2],1));						   	
					   	}					
						break;
					case 4:    						//p3
					   	if((unsigned int)(control_time/10)>tl[3]+tl[2]+tl[1]+tl[0]){ 
					   		pl_temp=change(pl[2],1); 
           					pl_temp1=((float)change(pl[3],1)-(float)change(pl[2],1))/(float)(tl[4]*2);  
           					control_timel=0;
           					start_l=5;                                     
           				}					
						break;
					case 5:    						//p3-p4
					   	if(control_timel>5){
					   		pl_temp+=pl_temp1;
           					pwm(1,1,pl_temp);	
           					control_timel=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tl[4]+tl[3]+tl[2]+tl[1]+tl[0]){
					   		start_l=6;  
           					pwm(1,1,change(pl[3],1));						   	
					   	}							
						break; 
					case 6:         				//p4
					   	if((unsigned int)(control_time/10)>tl[5]+tl[4]+tl[3]+tl[2]+tl[1]+tl[0]){ 
					   		pl_temp=change(pl[3],1);
           					pl_temp1=((float)change(pl[4],1)-(float)change(pl[3],1))/(float)(tl[6]*2);  
           					control_timel=0;
           					start_l=7;                                     
           				}						
						break;
					case 7:							//p4-p5
					   	if(control_timel>5){
					   		pl_temp+=pl_temp1;
           					pwm(1,1,pl_temp);	
           					control_timel=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tl[6]+tl[5]+tl[4]+tl[3]+tl[2]+tl[1]+tl[0]){
					   		start_l=8;  
           					pwm(1,1,change(pl[4],1));						   	
					   	}							
						break;  	
					case 8:
     					pwm(1,3,0);						
						start_l=9;
					break;
           	    }
                switch(start_r){	 				//右枪
           	    	case 0:							//p1
           				pwm(2,2,change(pr[0],2)); 
           				pr_temp=change(pr[0],2);           				 
           				pr_temp1=((float)change(pr[1],2)-(float)change(pr[0],2))/(float)(tr[0]*2);  
           				control_timer=0;
						start_r=1;
						break;  
					case 1:							//p1-p2
					   	if(control_timer>5){
					   		pr_temp+=pr_temp1;
           					pwm(2,1,pr_temp);	
           					control_timer=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tr[0]){
					   		start_r=2;  
           					pwm(2,1,change(pr[1],2));						   	
					   	}
						break;
					case 2:     					//p2
					   	if((unsigned int)(control_time/10)>tr[1]+tr[0]){ 
					   		pr_temp=change(pr[1],2);
           					pr_temp1=((float)change(pr[2],2)-(float)change(pr[1],2))/(float)(tr[2]*2); 
           					control_timer=0;
           					start_r=3;                                     
           				}
						break;    
					case 3:							//p2-p3
					   	if(control_timer>5){
					   		pr_temp+=pr_temp1;
           					pwm(2,1,pr_temp);	
           					control_timer=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tr[2]+tr[1]+tr[0]){
					   		start_r=4;  
           					pwm(2,1,change(pr[2],2));						   	
					   	}					
						break;
					case 4:    						//p3
					   	if((unsigned int)(control_time/10)>tr[3]+tr[2]+tr[1]+tr[0]){ 
					   		pr_temp=change(pr[2],2);                 
					   		pr_temp1=((float)change(pr[3],2)-(float)change(pr[2],2))/(float)(tr[4]*2);  
           					control_timer=0;
           					start_r=5;                                     
           				}					
						break;
					case 5:    						//p3-p4
					   	if(control_timer>5){
					   		pr_temp+=pr_temp1;
           					pwm(2,1,pr_temp);	
           					control_timer=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tr[4]+tr[3]+tr[2]+tr[1]+tr[0]){
					   	    start_r=6;  
           					pwm(2,1,change(pr[3],2));						   	
					   	}							
						break; 
					case 6:         				//p4
					   	if((unsigned int)(control_time/10)>tr[5]+tr[4]+tr[3]+tr[2]+tr[1]+tr[0]){ 
					   		pr_temp=change(pr[3],2);
           					pr_temp1=((float)change(pr[4],2)-(float)change(pr[3],2))/(float)(tr[6]*2);  
           					control_timer=0;
           					start_r=7;                                     
           				}						
						break;
					case 7:							//p4-p5
					   	if(control_timer>5){
					   		pr_temp+=pr_temp1;
           					pwm(2,1,pr_temp);	
           					control_timer=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tr[6]+tr[5]+tr[4]+tr[3]+tr[2]+tr[1]+tr[0]){
					   		start_r=8;  
           					pwm(2,1,change(pr[4],2));						   	
					   	}							
						break;  	
					case 8:
     					pwm(2,3,0);						
						start_r=9;
					break;    

           	    }
           }

  }
} 
        
void set_control(unsigned char on_flag){ 
    unsigned char b;
    if(esd==2)b=5;
    else b=3; 
 	if(on_flag==1){              //开阀门标志1开 2关
    	set_operate(eksset[0],1);
    	if(control_stop!=1)set_operate(eksset[1],1);
    	if(control_stop!=1)set_operate(eksset[2],1);
    	if((control_stop!=1)&(b==5))set_operate(eksset[3],1);
    	if((control_stop!=1)&(b==5))set_operate(eksset[4],1);
  	}
 	else if(on_flag==2){
   		set_operate(ejsset[0],2);
   		set_operate(ejsset[1],2);
   		set_operate(ejsset[2],2);
   		if(b==5){
   			set_operate(ejsset[3],2);
   			set_operate(ejsset[4],2);
   		}   
  	}  
  	
 }
 
   
 void yq_control(){
 unsigned long int temp;
 	YQ_ON()         						//开氩气
    temp=(unsigned long int)eyq[en]*100;
   	control_time=0;
    while((control_time<temp)&(control_stop!=1)){
		if(control_dd==1){ 
			key_start();   //检测点动				
  			if(key_data1==9)control_stop=1; 				
		}
		else {     
			key_stop();   	 //检测停止			
			if(key_data1==7)control_stop=1;							
		}
  	} 	        						
    if(control_stop!=1)p_control();
   	temp=(unsigned long int)elq[en]*100;
   	control_time=0;
    while((control_time<temp)&(control_stop!=1)){
			if(control_dd==1){ 
				key_start();  				
    			if(key_data1==9)control_stop=1; 				
			}
			else {     
				key_stop();   				
				if(key_data1==7)control_stop=1;							
			}
   	} 
   	YQ_OFF()
}    
void init_control(){
	if(control_state!=key_data2){
  		picture9(0);
  		k1_flag=0;
  		k2_flag=0;
  		k3_flag=0;
  		k4_flag=0;
  		k5_flag=0;
  		start_flag=0;
  		control_stop=0;
  		control_dd=0;
  		SET1_OFF()
  		SET2_OFF()
  		SET3_OFF()
  		SET4_OFF()
  		SET5_OFF()
  		YQ_OFF() 
    	control_state=key_data2;
    }
 } 		
 /*****************************************************************************************
   							   				控制程序
 *****************************************************************************************/
       

void control(){ 
    unsigned char b;
    if(esd==1)b=3;
    else b=5;     
 	if(picture_number!=9)return;      //不是九画面不工作   
	switch(key_data2){
  		case 1:           							//自动      
  			if(control_state!=key_data2){
    			picture9(0); 
    			init_control();
    			control_state=key_data2;
    		} 		
  			if(key_data1==6){
   				set_control(1);        						//开SET1-SET4 
   				yq_control();
   				set_control(2);    							//关SET1-SET4
   				control_stop=0;
  			}
  			break;      
 		case 2:           							//半自动      
 			if(control_state!=key_data2){
    			picture9(0); 
    			init_control();
    			control_state=key_data2;
    		} 		
  			if(start_flag==0){
   		   		switch(key_data1){
    		   		case 1:
     					if(k1_flag==0){
      						SET1_ON()
      						k1_flag=1;
     					}
     					else {
      						SET1_OFF()
      						k1_flag=0;
     					}
     			   		break;
   			   		case 2:
    					if(k2_flag==0){
     				   		SET2_ON()
     				   		k2_flag=1;
    					}
    					else{
     				   		SET2_OFF()
     				   		k2_flag=0;
    					}
    					break;
  			   		case 3:
   				   		if(k3_flag==0){
    						SET3_ON()
    			   			k3_flag=1;
   				 		}
   				 		else{
    				 		SET3_OFF()
    				 		k3_flag=0;
   						} 
   						break;
  			   		case 4:
  			   		 if(b==5){
   				 		if(k4_flag==0){
     			  			SET4_ON()
     						k4_flag=1;
    					}
    			  		else{
    						SET4_OFF()
    						k4_flag=0;
   				  		} 
   				  	 }
   				  			break;
  			   		case 5:
  			   		 if(b==5){
   				  		if(k5_flag==0){
     			   			SET5_ON()
     						k5_flag=1;
    					}
    					else{
    						SET5_OFF()
    						k5_flag=0;
   						}
   					 } 
   							break;  					
  					case 6:									//启动      
   						start_flag=1;
   						break;
   				}
  			}
  			if(start_flag==1){
				yq_control();
   				set_control(2);    							//关SET1-SET4 
   				control_stop=0;
   				start_flag=0;
   				k1_flag=0;
   				k2_flag=0;
   				k3_flag=0;
   				k4_flag=0;
   				k5_flag=0;
  			}
  	   		break;      
          
 		case 3:           							// 手动       
    		if(control_state!=key_data2){    
    			init_control();
    			picture9(0); 
    			control_state=key_data2;
    		} 		
  			if(start_flag==0){
   				switch(key_data1){
    				case 1:
     					if(k1_flag==0){
      						SET1_ON()
      						k1_flag=1;
     					}
     					else {
      						SET1_OFF()
      						k1_flag=0;
     					}
     			   		break;
   			   		case 2:
    					if(k2_flag==0){
     				   		SET2_ON()
     				   		k2_flag=1;
    					}
    					else{
     				   		SET2_OFF()
     				   		k2_flag=0;
    					}
    					break;
  			   		case 3:
   				   		if(k3_flag==0){
    						SET3_ON()
    			   			k3_flag=1;
   				 		}
   				 		else{
    				 		SET3_OFF()
    				 		k3_flag=0;
   						}   
   						break;
  			   		case 4:
  			   		 if(b==5){
   				 		if(k4_flag==0){
     			  			SET4_ON()
     						k4_flag=1;
    					}
    			  		else{
    						SET4_OFF()
    						k4_flag=0;
   				  		}
   				  	 }
   				  		break;
  			   		case 5:
  			   		 if(b==5){
   				  		if(k5_flag==0){
     			   			SET5_ON()
     						k5_flag=1;
    					}
    					else{
    						SET5_OFF()
    						k5_flag=0;
   						} 
   					 } 
   						break; 					
  					case 6:									//启动      
   						start_flag=1;
   						break;
   				}
  			}   		
  			else if(start_flag==1){
   			    yq_control();
   			    control_stop=0;
   				start_flag=2;
  			}
  			else if(start_flag==2){
   				switch(key_data1){
    				case 1:      
      					SET1_OFF()
      					k1_flag=0;
      					break;
    				case 2:
      					SET2_OFF()
      					k2_flag=0;
      					break;
     				case 3:
      					SET3_OFF()
      					k3_flag=0;
      					break;
    				case 4:
      					SET4_OFF() 
      					k4_flag=0;
      					break;
      				case 5:
      					SET5_OFF() 
      					k5_flag=0;
      					break;	
      			} 
      			if(k1_flag|k2_flag|k3_flag|k4_flag|k5_flag==0){
   			    start_flag=0;
   		   	}    					
   	 	} 
    }
}
    	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -