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

📄 control.c~

📁 这是电池检测仪的程序
💻 C~
📖 第 1 页 / 共 2 页
字号:
unsigned char start_flag;							//启动标志
extern void key_stop(void);
 
#define SET1_ON()	{DDRE|=0X04;PORTE|=0X04;}
#define SET1_OFF()	{DDRE|=0X04;PORTE&=0XFB;}
#define SET2_ON()	{DDRE|=0X08;PORTE|=0X08;}
#define SET2_OFF()	{DDRE|=0X08;PORTE&=0XF7;}
#define SET3_ON()	{DDRE|=0X40;PORTE|=0X40;}
#define SET3_OFF()	{DDRE|=0X40;PORTE&=0XBF;}
#define SET4_ON()	{DDRE|=0X80;PORTE|=0X80;}
#define SET4_OFF()	{DDRE|=0X80;PORTE&=0X7F;}
#define SET5_ON()   {DDRB.0=1;PORTB.0=1;}
#define SET5_OFF()	{DDRB.0=1;PORTB.0=0;}
#define YQ_ON()  	{DDRB.1=1;PORTB.1=1;}
#define YQ_OFF()	{DDRB.1=1;PORTB.1=0;}     

unsigned char k1_flag;
unsigned char k2_flag;
unsigned char k3_flag;
unsigned char k4_flag;
unsigned char k5_flag;   
unsigned char setoff_flag;   
unsigned char control_stop;

unsigned long int control_time;
unsigned long int control_timel;
unsigned long int control_timer;

unsigned char open_flag;
void set_operate(unsigned char seq,unsigned char open_flag){        //阀门控制
 if(open_flag==1){
  switch(seq){
        case 1:
         SET1_ON()
         delay_ms((unsigned int)eks[en][0]*100);
         break;
        case 2:
         SET2_ON()
         delay_ms((unsigned int)eks[en][1]*100);
         break;
        case 4:
         SET3_ON()
         delay_ms((unsigned int)eks[en][2]*100);
         break;
        case 8:
         SET4_ON()
         delay_ms((unsigned int)eks[en][3]*100);
         break;
        case 16:
         SET5_ON()
         delay_ms((unsigned int)eks[en][4]*100);
         break; 
  }
 }
 else if(open_flag==2){
  switch(seq){
        case 1:
         delay_ms((unsigned int)ejs[en][0]*100);
         SET1_OFF()
         break;
        case 2:
         delay_ms((unsigned int)ejs[en][1]*100);
         SET2_OFF()
         break;
        case 4:
         delay_ms((unsigned int)ejs[en][2]*100);
         SET3_OFF()
         break;
        case 8:
         delay_ms((unsigned int)ejs[en][3]*100);
         SET4_OFF()
         break;
        case 16:
         delay_ms((unsigned int)ejs[en][4]*100);
         SET5_OFF()
         break; 
  } 
 }
}
 unsigned int change(unsigned char p){ 
 	float a;
  	unsigned int b;  
  	
  	a=((float)p/100)*(5-(float)eqy/100);
  	b=(unsigned int)a*204.8;
  	return(b);   
  	
 }
 
void change_p(unsigned char p1,unsigned char p2,unsigned char t,unsigned char lr){
 	unsigned int a,b;  
 	float c;
 	unsigned char i; 
 
 	a=change(p1);
 	b=change(p2);   
 	c=a;
 	for(i=0;i<t;i++){
  		pwm(lr,1,(unsigned int)c);   
 	 	delay_ms(10);
 	 	if(b>a)c+=(float)(b-a)/t;
 	 	else c-=(float)(a-b)/t; 			 	
 	 
 	}  
  	pwm(lr,1,c);  	
 		
}
 void change_p1(unsigned char p1,unsigned char p2,unsigned char t,unsigned char lr){
 	unsigned int a,b;  
 	float c;
 	unsigned char i; 
 
 	a=change(p1);
 	b=change(p2);   
 	c=a;
 
  	
 	 	if(b>a)c+=(float)(b-a)/t;
 	 	else c-=(float)(a-b)/t; 			 	
 	 
 
  	pwm(lr,1,c);  	
 
 }      
 
	 
  	



void p_control(){      

   float pl_temp,pl_temp1;    
   float pr_temp,pr_temp1;  

    unsigned char start_l=0,start_r=0;
    unsigned char i,j;     
	unsigned int temp;
	unsigned char pl[5];
	unsigned char pr[5];  
	unsigned int tl[7];
	unsigned int tr[7]; 

        for(i=0;i<5;i++){			
        	pl[i]=epl[en][i];
        	pr[i]=epr[en][i];
	}
	for(i=0;i<7;i++){
        	tl[i]=etl[en][i];	
        	tr[i]=etr[en][i];
        }		
				
	switch(key_data3){
 		case 1:      								//左枪   	
         	pwm(1,1,change(pl[0]));
         	pwm(1,2,change(pl[0]));
         	change_p(pl[0],pl[1],tl[0],1);     
         	temp=(unsigned int)tl[1]*10;   
         	control_stop=0;    
         	control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}      
         	if(control_stop!=1){
         		change_p(pl[1],pl[2],tl[2],1);
           		temp=(unsigned int)tl[3]*10;  
            }            
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}      
         	if(control_stop!=1){
         		change_p(pl[2],pl[3],tl[4],1);
           		temp=(unsigned int)tl[5]*10;   
            }  
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}          	
         	if(control_stop!=1)change_p(pl[3],pl[4],tl[6],1);
         	pwm(1,3,0);  
         	break;
     
        case 2:      //右枪 
         	pwm(2,1,change(pr[0]));
         	pwm(2,2,change(pr[0]));
         	change_p(pr[0],pr[1],tr[0],2); 
         	temp=(unsigned int)tr[1]*10;  
         	control_stop=0;    
         	control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	} 
         	if(control_stop!=1){       	
         		change_p(pr[1],pr[2],tr[2],2);
         		temp=(unsigned int)tr[3]*10; 
         	} 
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	} 
         	if(control_stop!=1){     
          		change_p(pr[2],pr[3],tr[4],2);        	
           		temp=(unsigned int)tr[5]*10; 
           	}
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}       
         	if(control_stop!=1)change_p(pr[3],pr[4],tr[6],2);
         	pwm(2,3,0);  
         	break;
        case 3:      //左到右
        
         	pwm(1,1,change(pl[0]));
         	pwm(1,2,change(pl[0]));
         	change_p(pl[0],pl[1],tl[0],1);     
         	temp=(unsigned int)tl[1]*10;   
         	control_stop=0;    
         	control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}      
         	if(control_stop!=1){
         		change_p(pl[1],pl[2],tl[2],1);
           		temp=(unsigned int)tl[3]*10;  
            }            
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}      
         	if(control_stop!=1){
         		change_p(pl[2],pl[3],tl[4],1);
           		temp=(unsigned int)tl[5]*10;   
            }  
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}          	
         	if(control_stop!=1)change_p(pl[3],pl[4],tl[6],1);
         	pwm(1,3,0);  
                 
          	pwm(2,1,change(pr[0]));
         	pwm(2,2,change(pr[0]));
         	change_p(pr[0],pr[1],tr[0],2); 
         	temp=(unsigned int)tr[1]*10;  
         	control_stop=0;    
         	control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	} 
         	if(control_stop!=1){       	
         		change_p(pr[1],pr[2],tr[2],2);
         		temp=(unsigned int)tr[3]*10; 
         	} 
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	} 
         	if(control_stop!=1){     
          		change_p(pr[2],pr[3],tr[4],2);        	
           		temp=(unsigned int)tr[5]*10; 
           	}
            control_time=0;
         	while((control_time<temp)&(control_stop!=1)){
         		key_stop();
         		if(key_data1==7)control_stop=1;   
         	}       
         	if(control_stop!=1)change_p(pr[3],pr[4],tr[6],2);
         	pwm(2,3,0);  
         	break;
  
        case 4:      //左右枪同时   
        
        	control_time=0;  
           	start_l=0;
           	start_r=0;
           	
           	while((start_l<=8)|(start_r<=8)){     
           	
           		switch(start_l){	 				//左枪
           	    	case 0:							//p1
           				pwm(1,2,change(pl[0])); 
           				pl_temp=change(pl[0]);           				 
           				pl_temp1=((float)change(pl[1])-(float)change(pl[0]))/(float)tl[0];  
           				control_timel=0;
						start_l=1;
						break;  
					case 1:							//p1-p2
					   	if(control_timel>10){
					   		pl_temp+=pl_temp1;
           					pwm(1,1,pl_temp);	
           					control_timel=0;				   	
					   	} 
					   	if((unsigned int)(control_time/10)>tl[0]){
					   		start_l=2;  
           					pwm(1,1,change(pl[1]));						   	
					   	}
						break;
					case 2:     					//p2
					   	if((unsigned int)(control_time/10)>tl[1]+tl[0]){ 
					   		pl_temp=change(pl[1]);
           					pl_temp1=((float)change(pl[2])-(float)change(pl[1]))/(float)tl[2]; 
           					control_timel=0;
           					start_l=3;                                     
           				}
						break;    
					case 3:							//p2-p3
					   	if(control_timel>10){
					   		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]));						   	
					   	}					
						break;
					case 4:    						//p3
					   	if((unsigned int)(control_time/10)>tl[3]+tl[2]+tl[1]+tl[0]){ 
					   		pl_temp=change(pl[2]);
           					pl_temp1=((float)change(pl[3])-(float)change(pl[2]))/(float)tl[4];  
           					control_timel=0;
           					start_l=5;                                     
           				}					
						break;
					case 5:    						//p3-p4
					   	if(control_timel>10){
					   		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]));						   	

⌨️ 快捷键说明

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