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

📄 control.c~

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

           	    }
           }

  }
} 
        
void set_control(unsigned char on_flag){  
 
 	if(on_flag==1){              //开阀门标志1开 2关
    	set_operate(eksset[0],1);
    	set_operate(eksset[1],1);
    	set_operate(eksset[2],1);
    	set_operate(eksset[3],1);
    	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);
   		set_operate(ejsset[3],2);
   		set_operate(ejsset[4],2);   
  	}  
  	
 }
 
 
 /*****************************************************************************************
   							   				控制程序
 *****************************************************************************************/
       

void control(){ 
unsigned int test; 
         
 	if(picture_number!=9)return;         
	switch(key_data2){
  		case 1:           							//自动 
  			if(key_data1==6){
   				set_control(1);        						//开SET1-SET4
   				YQ_ON()   
   			 	test=(unsigned int)eyq[en]*100;   				        							//开氩气
   			 	delay_ms(test); 
   				p_control();
   			 	test=(unsigned int)elq[en]*100;     				  
   				delay_ms(test);
   				YQ_OFF()
   				set_control(2);    							//关SET1-SET4
  			}
  			break;      
 		case 2:           							//半自动      
 			if(key_data1==0)break;
  			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(k4_flag==0){
     			  			SET4_ON()
     						k4_flag=1;
    					}
    			  		else{
    						SET4_OFF()
    						k4_flag=0;
   				  		} 
   				  			break;
  			   		case 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_ON()   
   			 	test=(unsigned int)eyq[en]*100;   				        							//开氩气
   			 	delay_ms(test); 
   				p_control();
   			 	test=(unsigned int)elq[en]*100;     				  
   				delay_ms(test);
   				YQ_OFF()
   				set_control(2);    							//关SET1-SET4 
   				start_flag=0;
   				k1_flag=0;
   				k2_flag=0;
   				k3_flag=0;
   				k4_flag=0;
   				k5_flag=0;
  			}
  	   		break;      

 		case 3:           							// 手动
 		    if(key_data1==0)break;
  			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(k4_flag==0){
     			  			SET4_ON()
     						k4_flag=1;
    					}
    			  		else{
    						SET4_OFF()
    						k4_flag=0;
   				  		}
   				  		break;
  			   		case 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_ON()         							//开氩气
   			 	test=(unsigned int)eyq[en]*100;   				        							//开氩气
   			 	delay_ms(test); 
   				p_control();    							//根据各种情况输出功率
   			 	test=(unsigned int)elq[en]*100;     				  
   				delay_ms(test);
   				YQ_OFF() 
   				start_flag=2;
   				setoff_flag=0x1f;
  			}
  			else if(start_flag==2){
   				switch(key_data1){
    				case 1:
      					SET1_OFF()
      					setoff_flag&=0x1e;
      					break;
    				case 2:
      					SET2_OFF()
      					setoff_flag&=0x1d;
      					break;
     				case 3:
      					SET3_OFF()
      					setoff_flag&=0x1b;
      					break;
    				case 4:
      					SET4_OFF()
      					setoff_flag&=0x17;
      					break;
      				case 5:
      					SET5_OFF()
      					setoff_flag&=0x0f;
      					break;	
      			}			
     			if(setoff_flag==0){
   			      	start_flag=0;
   					k1_flag=0;
   					k2_flag=0;
   					k3_flag=0;
   					k4_flag=0;
   					k5_flag=0; 
   		    	}    					
    		
   			} 

   			
    	case 4:           							//点动    
    	
    		break;
   }
   
}
    	

⌨️ 快捷键说明

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