main.c

来自「通过智能车上的CCD摄像头采集道路状况」· C语言 代码 · 共 1,391 行 · 第 1/3 页

C
1,391
字号
     } 
     else if(AngleWay<6){      //弯,减速
       if(Samplespeed>105){
       
       PWMDTY1=10; 
       
       }
        if(Samplespeed<105)  //加速
         PWMDTY1=90;
     } 
      else if(AngleWay<9){      //弯,减速
       if(Samplespeed>105){
       
    
    
     PTP_PTP0=1;
    
     PWMDTY1=30; 
       
       }
        if(Samplespeed<105)  //加速
         PWMDTY1=90;
     } 
     else if(AngleWay<13){      //弯,减速
       if(Samplespeed>90){
       
   
    
     PTP_PTP0=1;
    
     PWMDTY1=10 ;
       }
        if(Samplespeed<90)  //加速
         PWMDTY1=80;
     } 
     else if(AngleWay<18){      //弯,减速
       if(Samplespeed>85){
      
    
     PTP_PTP0=1;
    
     PWMDTY1=10 ;
       }
        if(Samplespeed<85)  //加速
         PWMDTY1=90;
     }  else if(AngleWay<25){      //弯,减速
       if(Samplespeed>80){
       PTP_PTP0=1;
    
     PWMDTY1=10 ;
     }
        if(Samplespeed<80)  //加速
         PWMDTY1=90;
     } 
     
     else if(AngleWay<30){      //弯,减速
       if(Samplespeed>80){
        PTP_PTP0=1;
    
     PWMDTY1=30; 
     }
        if(Samplespeed<80)  //加速
         PWMDTY1=80;
     } 
        else if(AngleWay<38){      //弯,减速
       if(Samplespeed>75){
        
    
    
       PTP_PTP0=1;
    
     PWMDTY1=20 ; 
       
       }
        if(Samplespeed<75)  //加速
         PWMDTY1=80;
     } 
     else if(AngleWay<45){      //弯,减速
       if(Samplespeed>73){       
       
    
      
    
      PTP_PTP0=1;
    
     PWMDTY1=10 ; 
       
       }
        if(Samplespeed<73)  //加速
         PWMDTY1=80;
     } 
     else{      //弯,减速
       if(Samplespeed>70){
       
        
    
     PWMDTY1=10 ;   
       }
        if(Samplespeed<70)  //加速
         PWMDTY1=65;
     }
     }  
     else  if(top<4){
     if(AngleWay<26){      //弯,减速
       if(Samplespeed>85)
         PWMDTY1=0;
        if(Samplespeed<85)  //加速
         PWMDTY1=80;
     } else if(AngleWay<50){      //弯,减速
       if(Samplespeed>80)
         PWMDTY1=0;
        if(Samplespeed<80)  //加速
         PWMDTY1=80;
     } else{      //弯,减速
       
         PWMDTY1=70;
     }
     } else{
       
         PWMDTY1=65;
     }
   } 
   
   else {
       
         PWMDTY1=60;
     }
 }

//*******************************************************//  
   
void SpeedControl1(void){
                     //zhang zui disu      //张恒低速
 
  
  PTP_PTP0=0;
 
   if(top<12) {
   
     if(errWay>-2){
      
   
     if((errWay<2)||(s1==1&&s2==1)){
       if(Samplespeed<95)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>95) // /减速
         PWMDTY1=60;
    
     } 
     else if(errWay<7){      //s弯
       if(Samplespeed>92)
         PWMDTY1=60;
        if(Samplespeed<92)  //加速
         PWMDTY1=95;
     } 
     else if(errWay<12){      //弯,减速
       if(Samplespeed>85)
           PWMDTY1=0;
        if(Samplespeed<85)  //加速
           PWMDTY1=95;
     } 
     else if(errWay<35){      //弯,减速
       if(Samplespeed>83){
        
         PTP_PTP0=1;
         PWMDTY1=30;
       }
        if(Samplespeed<83)  //加速
         PWMDTY1=65;
     } 
     else{      //弯,减速
       if(Samplespeed>86)
         PWMDTY1=0;
        if(Samplespeed<86)  //加速
         PWMDTY1=65;
     }
     } 
     
     
     else  {
      
      
     
     if(errWay>-5){
       if(Samplespeed<95)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>95) // /减速
         PWMDTY1=50;
    
     } 
     else if(errWay>-10){      //弯,减速
       if(Samplespeed>90)
         PWMDTY1=30;
        if(Samplespeed<90)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-15){      //弯,减速
       if(Samplespeed>90)
         PWMDTY1=20;
        if(Samplespeed<90)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-35){      //弯,减速
       if(Samplespeed>85)
         PWMDTY1=10;
        if(Samplespeed<85)  //加速
         PWMDTY1=75;
     } 
     else{      //弯,减速
       if(Samplespeed>82)
         PWMDTY1=0;
        if(Samplespeed<82)  //加速
         PWMDTY1=70;
     }
     
     }
     
     }  
     else{      //弯,减速
       if(Samplespeed>83)
         PWMDTY1=0;
        if(Samplespeed<83)  //加速
         PWMDTY1=65;
     }
 
 
 
 
 

}   
 //***************************************************//
 void SpeedControl2(void){
 
                     
                                         //张恒 中速
 
  
  PTP_PTP0=0;
 
   if(top<12) {
   
     if(errWay>-2){
      
   
     if((errWay<2)||(s1==1&&s2==1)){
       if(Samplespeed<100)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>100) // /减速
         PWMDTY1=60;
    
     } 
     else if(errWay<7){      //s弯
       if(Samplespeed>93)
         PWMDTY1=60;
        if(Samplespeed<93)  //加速
         PWMDTY1=97;
     } 
     else if(errWay<12){      //弯,减速
       if(Samplespeed>88)
           PWMDTY1=0;
        if(Samplespeed<88)  //加速
           PWMDTY1=95;
     } 
     else if(errWay<35){      //弯,减速
       if(Samplespeed>85){
        
         PTP_PTP0=1;
         PWMDTY1=25;
       }
        if(Samplespeed<85)  //加速
         PWMDTY1=65;
     } 
     else{      //弯,减速
       if(Samplespeed>88)
         PWMDTY1=0;
        if(Samplespeed<88)  //加速
         PWMDTY1=65;
     }
     } 
     
     
     else  {
      
      
     
     if(errWay>-5){
       if(Samplespeed<100)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>100) // /减速
         PWMDTY1=50;
    
     } 
     else if(errWay>-10){      //弯,减速
       if(Samplespeed>90)
         PWMDTY1=30;
        if(Samplespeed<90)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-15){      //弯,减速
       if(Samplespeed>90)
         PWMDTY1=20;
        if(Samplespeed<90)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-35){      //弯,减速
       if(Samplespeed>85)
         PWMDTY1=10;
        if(Samplespeed<85)  //加速
         PWMDTY1=80;
     } 
     else{      //弯,减速
       if(Samplespeed>82)
         PWMDTY1=0;
        if(Samplespeed<82)  //加速
         PWMDTY1=70;
     }
     
     }
     
     }  
     else{      //弯,减速
       if(Samplespeed>83)
         PWMDTY1=0;
        if(Samplespeed<83)  //加速
         PWMDTY1=67;
     }
 
 
 
 
 
 }  
   //***************************************************//
 void SpeedControl3(void){                   //张恒  最高速
  PTP_PTP0=0;

   
   if(top<12) {
   
     if(errWay>-2){ 
      
   
     if((errWay<2)||(s1==1&&s2==1)){
       if(Samplespeed<105)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>105) // /减速
         PWMDTY1=60;
    
     } 
     else if(errWay<6){      //s弯
       if(Samplespeed>97)
         PWMDTY1=20;
        if(Samplespeed<97)  //加速
         PWMDTY1=100;
     } 
     else if(errWay<13){      //弯,减速
       if(Samplespeed>92)
           PWMDTY1=0;
        if(Samplespeed<92)  //加速
           PWMDTY1=80;
     } 
     else if(errWay<38){      //弯,减速
       if(Samplespeed>88) {
        PTP_PTP0=1;
         PWMDTY1=20;
       }
        if(Samplespeed<88)  //加速
         PWMDTY1=67;
     } 
     else{      //弯,减速
       if(Samplespeed>89)
         PWMDTY1=0;
        if(Samplespeed<89)  //加速
         PWMDTY1=67;
     }
     } 
     
     
     else  {
      
      
     
     if(errWay>-5){
       if(Samplespeed<105)  //直,可加速
         PWMDTY1=100;
       if(Samplespeed>105) // /减速
         PWMDTY1=50;
    
     } 
     else if(errWay>-10){      //弯,减速
       if(Samplespeed>100)
         PWMDTY1=30;
        if(Samplespeed<100)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-15){      //弯,减速
       if(Samplespeed>90)
         PWMDTY1=20;
        if(Samplespeed<90)  //加速
         PWMDTY1=90;
     } 
     else if(errWay>-35){      //弯,减速
       if(Samplespeed>86)
         PWMDTY1=10;
        if(Samplespeed<86)  //加速
         PWMDTY1=80;
     } 
     else{      //弯,减速
       if(Samplespeed>87)
         PWMDTY1=0;
        if(Samplespeed<87)  //加速
         PWMDTY1=70;
     }
     
     }
     
     }  
     else{      //弯,减速
       if(Samplespeed>84)
         PWMDTY1=0;
        if(Samplespeed<84)  //加速
         PWMDTY1=67;
     }
 
 
 }     
 //*************************Brake*************************************//
 void Brake(void){
 if(Samplespeed>15) {
  
    PTP_PTP0=1;
    
     PWMDTY1=30; 
 }
  else
         PWMDTY1=100;
 }

 //*********************Main function**********************************//
void main(void) {  
  BUSCLK_init() ;
  TIE_C6I=0;
  DDRS=0x00;               
  DDRB=0x00;     //拨码输入
  DDRA=0xff;
  Switch();
  SpeedSample();
  Init_servo();  
  Init_motor();
  
  //DDRP_DDRP7=1;   //PWM7  Latch
  DDRP_DDRP0=1;   //PWM0 
  PTP_PTP0=0;       //正转
  EnableInterrupts;
 
  for(;;){
    TFLG1_C6F=1;
    TFLG1_C2F=1;    
    ImageGetting();
  }
}

⌨️ 快捷键说明

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