亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 武漢大學參加飛思卡爾智能汽車大賽的小車程序
?? C
字號:
#include <hidef.h>      /* common defines and macros */
#include <string.h>
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

/*PortB各管腳名稱定義*/
#define VSYN      PORTB_BIT0
#define DRV1			PORTB_BIT1
#define DRV2      PORTB_BIT2
#define V_en      PORTB_BIT3
#define LED_en    PORTB_BIT4
#define EF        PORTB_BIT5
#define R_en      PORTB_BIT6
#define FifoReset PORTB_BIT7
#define LED       PTP_PTP7

/*系統(tǒng)常量定義*/
#define SIZE_X 60       //定義列數(shù)
#define SIZE_Y 12		  	//定義行數(shù)
#define DATASIZE 720    //圖像總點數(shù)
#define SERVO_MID 4380  //舵機中心位置       4400
#define SERVO_R 1250     //右極限            1230
#define SERVO_L -1250    //左極限             -1250



//*********************
//    全局變量定義
//*********************

//系統(tǒng)參數(shù)類
unsigned char AutoFlag=1;     //手自動循線標志 1:自動 0:手動
unsigned char DebugEn=1;      //調試信息使能
unsigned char CaptureCommand; //串口命令
unsigned char BadFrameCnt;    //壞幀計數(shù)
unsigned char ErrLineCnt;     //錯誤行計數(shù)
unsigned int  time=0;           //系統(tǒng)計時

//圖像數(shù)據(jù)
unsigned char VideoData[SIZE_Y][SIZE_X]; //圖像信息存儲空間
unsigned char Threshold=60;       //兩像素之間灰度差閾值 80

//控制參數(shù)
signed char diff[SIZE_Y];       //每行黑線與中心的偏差
unsigned char BadFrame=0;       //壞幀標志位

//最小二乘法擬合參數(shù)
signed int a,b;
unsigned long Ee2;

//小車轉角控制參數(shù)

//單行轉角控制參數(shù)
unsigned char line;		                //單行控制采集的線
signed char diff_sum,diff_last;       //偏差之和、上次偏差
signed char P1,I1,D1;                 //PID參數(shù)
unsigned char P1_en,I1_en,D1_en;      //PID參數(shù)使能
signed int P1_out,PID1_out;            //PID輸出

//斜率控制參數(shù)
unsigned char Pa_en,Da_en;            //PID參數(shù)使能
signed char a_last;                   //上次斜率偏差
signed char Pa,Da;                    //PID參數(shù)
signed int  Pa_out,PIDa_out;          //Pa輸出

signed int PID_out;                   //PID總輸出
signed int PID_out1,PID_out2,PID_out3;//前N次的PID輸出
signed int servo_out;                 //舵機輸出偏差量

/*速度控制部分*/
unsigned int Speed_cnt,Speed_set;  //測速脈沖個數(shù),設定車速
signed int Speed_d=0,Speed_d_last=0;  //定義設定車速及最大、最小車速

/*撥碼開關速度設定*/
unsigned int Speed_zhi,Speed_s,Speed_wan,Speed_bad;

//*********************
//    函數(shù)聲明部分
//*********************

//  main.c
void delay_us(unsigned int time);
void delay_ms(unsigned int time);
void reset_FIFO(void);
void read_all(void);
void send_data(void);
void send_num(signed int);

//  init.c
void init_PLL(void);
void init_CMOS(void);
void init_PWM(void);
void init_ECT(void);
void init_PB(void);
void init_PA(void);
void init_PAD(void);
void init_IO(void);

//  IIC.c
void init_IIC(void);            //init DG128's iic port
void iic_write(byte sub_address,byte write_record); //write byte to iic client

//  printp.c
void sci_init(void);            //init DG128's sci port
void sci_putchar(char data);    //send a char
void sci_prints(char* ctrl);    //send a string

//  Control.c
void ScanLine(void);
void CalcuLine(void);
void init_Control(void);
void ServoControl(void);
void SpeedControl(void);



//*********************
//      主程序
//*********************
void main(void){
  init_PLL();         //系統(tǒng)時鐘設定:24MHz
  delay_ms(1000);		//啟動延時
  /*系統(tǒng)初始化*/
  init_PA();
  init_PB();
  init_PAD();
  init_IO();
  init_PWM();
  init_ECT();
  sci_init();
  init_IIC();
  init_Control();
  init_CMOS();
  
  
  //曝光設置
  //根據(jù)撥碼開關第2位確定圖像曝光設置,適應不同光照環(huán)境
  //  撥碼開關第2位   曝光設定
  //      0           自動曝光(光線充足)
  //      1           手動曝光(光線較暗)
  if(PTM_PTM1==1){
    iic_write(0x13,0x00);
    iic_write(0x10,0x60);     //理論計算結果為0x46
  }
  else{
    iic_write(0x13,0x01);
  }
  
  //電機設置                           
  //撥碼開關第一位決定是否開機自動打開電機
  //  撥碼開關第1位   電機狀態(tài)
  //      0           開
  //      1           關
  DRV1=PTM_PTM0;    //是否打開電機
  DRV2=1;

  
  
  //速度設定
  /*Speed_zhi=150;
  Speed_wan=110;
  Speed_bad=90;
  Speed_s=155;
  */
  
  
  //直道速度--撥碼開關1、2、3號
  if(PTP_PTP0==0&&PTP_PTP1==0&&PTT_PTT2==0)     Speed_zhi=110;			 
  else if(PTP_PTP0==0&&PTP_PTP1==0&&PTT_PTT2==1)Speed_zhi=120;			 
  else if(PTP_PTP0==0&&PTP_PTP1==1&&PTT_PTT2==0)Speed_zhi=130;			
  else if(PTP_PTP0==0&&PTP_PTP1==1&&PTT_PTT2==1)Speed_zhi=140;		
  else if(PTP_PTP0==1&&PTP_PTP1==0&&PTT_PTT2==0)Speed_zhi=150;		
  else if(PTP_PTP0==1&&PTP_PTP1==0&&PTT_PTT2==1)Speed_zhi=160;		
  else if(PTP_PTP0==1&&PTP_PTP1==1&&PTT_PTT2==0)Speed_zhi=170;		
  else                                          Speed_zhi=180;
  
  //彎道速度--撥碼開關4、5、6號
  if(PTT_PTT3==0&&PTT_PTT4==0&&PTT_PTT5==0)     Speed_wan=80; 
  else if(PTT_PTT3==0&&PTT_PTT4==0&&PTT_PTT5==1)Speed_wan=90;  
  else if(PTT_PTT3==0&&PTT_PTT4==1&&PTT_PTT5==0)Speed_wan=100;
  else if(PTT_PTT3==0&&PTT_PTT4==1&&PTT_PTT5==1)Speed_wan=110;
  else if(PTT_PTT3==1&&PTT_PTT4==0&&PTT_PTT5==0)Speed_wan=120;
  else if(PTT_PTT3==1&&PTT_PTT4==0&&PTT_PTT5==1)Speed_wan=130;
  else if(PTT_PTT3==1&&PTT_PTT4==1&&PTT_PTT5==0)Speed_wan=140;
  else                                          Speed_wan=150;
  
  //BadFrame速度--撥碼開關7、8號
  //1:高速  0:低速
  if(PTT_PTT6==0&&PTT_PTT7==0)      Speed_bad=85; 		 
  else if(PTT_PTT6==0&&PTT_PTT7==1) Speed_bad=90;				
  else if(PTT_PTT6==1&&PTT_PTT7==0) Speed_bad=95;
  else                              Speed_bad=100;
  
  if(Speed_zhi>=170){
    Speed_s=Speed_zhi;
  }
  else{
    Speed_s=Speed_zhi+5;
  }  
  
    
  //TSCR1_TEN=1;
  EnableInterrupts;
  for(;;){
    if(AutoFlag==1){
      /*圖像數(shù)據(jù)寫入FIFO*/
      reset_FIFO();
      PACN0=0;
      ICPAR_PA0EN=1;             
      while(VSYN!=0);
      while(VSYN!=1);
      V_en=1;
      while(PACN0<SIZE_Y);
      V_en=0;
      ICPAR_PA0EN=0;
      /*圖像數(shù)據(jù)寫入FIFO完成*/
      
      /*速度控制,若能保證每次控制周期在16ms內完成,則
      每次得到的計數(shù)脈沖應為16.67ms內的脈沖數(shù),計速可靠*/
      SpeedControl();
      /*讀圖像數(shù)據(jù)至RAM*/
      read_all();

      /*控制算法部分*/
      ScanLine();
      CalcuLine();
      ServoControl();
    }
    time++;
    
    /*
    //正常沖刺方案
    if(PTS_PTS2){
      //開啟第二圈沖刺方案
      //初賽14s后,決賽25s后,設定速度++
      if((time==840&&PTS_PTS3==0)||(time==1500&&PTS_PTS3==1)){
        Speed_zhi+=10;
        Speed_wan+=5;
        Speed_bad+=2;
        Speed_s+=5;
      }
    }
    */
    
    //瘋狂版方案
    //時間一到,立刻自爆
    if((time==840&&PTS_PTS2==0&&PTS_PTS3==1)||(time==1500&&PTS_PTS2==1&&PTS_PTS3==0)||(time==1800&&PTS_PTS2==1&&PTS_PTS3==1)){
      Speed_bad+=30;
    }
    
    
    }
  }




//*********************
//    main.c函數(shù)
//*********************

//FIFO復位
void reset_FIFO(void){
  FifoReset=0;
  asm{
    nop;
    nop;
    nop;
    nop;
    nop;
    nop;
    nop;
  } /*延遲至少150ns*/
  FifoReset=1;
}
              

void read_all(void){
  int read_cnt;                                  
  byte *VideoData_ptr;
    VideoData_ptr=VideoData;
   
  for(read_cnt=0;read_cnt<DATASIZE;read_cnt++){
    R_en=0;
    *(VideoData_ptr+read_cnt)=PORTA;
    R_en=1;
  }
}

//******************
//控制及圖像處理部分
//******************

#include "Control.c"

//******************
//系統(tǒng)功能函數(shù)
//包括延遲和串口通訊
//******************

/*延遲函數(shù)delay_us(),delay_ms()*/
//微秒級延時函數(shù)
void delay_us(unsigned int time){
  for(;time>0;time--){
    asm{
      nop;
      nop;
      nop;
      nop;
      nop;
      nop;
      nop;
      nop;
      nop;
      nop;
    }
  }
}

//毫秒級延時函數(shù)  
void delay_ms(unsigned int time){
  static int delay_i;
  for(;time>0;time--){
    for(delay_i=0;delay_i<2517;delay_i++){
      asm{
        nop;
        nop;
        nop;
      }
    }
  }
} /*---延遲函數(shù)---*/


//串口發(fā)送一幀圖像數(shù)據(jù)至串口
void send_data(void){
  int send_cnt;
  byte *data_ptr;
  data_ptr=VideoData;
  
  for(send_cnt=0;send_cnt<DATASIZE;send_cnt++){
    sci_putchar(*(data_ptr+send_cnt));
  }
}

//發(fā)送一個有符號的三位數(shù)至串口
void send_num(signed int num){
  if(num<0){
		  num=-num;
		  sci_putchar('-');
		}
		sci_putchar(num/100+48);
    sci_putchar(num%100/10+48);
    sci_putchar(num%10+48);
    sci_putchar(' ');
}


//****************
//系統(tǒng)中斷處理部分
//****************
#pragma  CODE_SEG  NON_BANKED

void interrupt 10 DebugSend(void){
  unsigned char i;
  TFLG1_C2F=1;	          //clear the interrupt flag
  
  sci_prints("d=");
  send_num(diff[line]);
  sci_prints(" a=");
  send_num(a);
  sci_prints(" b=");
  send_num(b);  
  sci_prints(" E=");
  send_num(Ee2/10);
  sci_putchar('\n');
  sci_putchar('\r');

}


//SCI輸入中斷
void interrupt 20 RxInterrupt(void){
	 //byte i;
	 DisableInterrupts;
   //i=SCI0SR1_RDRF;
   if(SCI0SR1&0x20){
    CaptureCommand=SCI0DRL;
   }

   
   switch(CaptureCommand){
    case '1':
    case '7':
      reset_FIFO();
      PACN0=0;
      ICPAR_PA0EN=1;
      while(VSYN!=0);
      while(VSYN!=1);
      V_en=1;
      while(PACN0<SIZE_Y);
      //while(VSYN!=1);
      V_en=0;
      ICPAR_PA0EN=0;
      read_all();
      ScanLine();
      send_data();
      break;
      
    case '2':
      DRV1=!DRV1;
 			break;		
    case '3':							//Left
      PWMDTY45=PWMDTY45-100;
      break;
    case '4':						  //Center
  		PWMDTY45=SERVO_MID;
  		break;
    case '5':							//Right
      PWMDTY45=PWMDTY45+100;
      break;
    case '6':             
      ServoControl();
			break;
    case '8':             //加速
      PWMDTY3+=8;
      break;
    case '9':             //減速
      PWMDTY3-=8;
      break;
    case '0':
      AutoFlag=!AutoFlag; //手自動切換
      break;
    case 'd':
    case 'D':
      DebugEn=!DebugEn;
      break;
    case 'b':
    case 'B':
      if(PWMPOL==0x20){
        PWMPOL=0x2C;
      }
      else if(PWMPOL==0x2C){
        PWMPOL=0x20;
      }
      break;
		default:
		  break;
   }
   EnableInterrupts;
   /*switch語句結束*/ 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线观看免费| 精品日韩在线观看| 日韩一级二级三级精品视频| 亚洲国产精华液网站w| 偷拍与自拍一区| 99精品久久99久久久久| 日韩视频123| 亚洲成人av电影| 99国产精品久| www国产精品av| 青青草原综合久久大伊人精品优势| 不卡在线观看av| 久久麻豆一区二区| 免费观看日韩电影| 欧美日高清视频| 亚洲综合久久久久| 91在线免费播放| 成人免费小视频| 国产精品一区二区视频| 精品日韩成人av| 青草国产精品久久久久久| 欧美日韩精品一区二区三区蜜桃| 亚洲欧美区自拍先锋| av动漫一区二区| 亚洲欧洲日韩综合一区二区| 粉嫩久久99精品久久久久久夜 | 日韩二区三区四区| 日本道在线观看一区二区| 中文字幕一区二| 国产在线日韩欧美| 久久免费午夜影院| 国产福利一区二区三区| 国产日韩欧美高清| 高清成人免费视频| 亚洲国产高清在线观看视频| 国产 欧美在线| 亚洲欧洲国产日本综合| 91亚洲精品久久久蜜桃| 亚洲美女区一区| 在线亚洲精品福利网址导航| 亚洲一线二线三线视频| 欧美久久久久久蜜桃| 日韩电影在线免费看| 日韩色在线观看| 国产在线视频一区二区| 国产日韩欧美不卡| 99久久久久久99| 香蕉久久一区二区不卡无毒影院| 欧美精品 日韩| 国产久卡久卡久卡久卡视频精品| 久久亚洲欧美国产精品乐播| 成人美女在线观看| 亚洲夂夂婷婷色拍ww47| 欧美一区二区三区视频| 国产在线精品一区二区不卡了 | 午夜不卡av免费| 精品国产成人在线影院| av动漫一区二区| 亚洲一区二区影院| 精品成人佐山爱一区二区| 高清在线不卡av| 亚洲国产视频直播| 2023国产一二三区日本精品2022| 成人精品鲁一区一区二区| 亚洲另类中文字| 欧美xxxx在线观看| 91亚洲国产成人精品一区二区三| 亚洲第一av色| 欧美国产一区二区在线观看| 91丨九色丨尤物| 日本不卡的三区四区五区| 国产精品久久久久一区二区三区共| 欧洲在线/亚洲| 国产宾馆实践打屁股91| 一区二区三区加勒比av| wwwwww.欧美系列| 欧美日韩国产综合久久| 国产成人自拍在线| 美女脱光内衣内裤视频久久影院| 中文字幕不卡的av| 欧美成人一区二区| 欧美亚洲国产怡红院影院| 国产成人av电影在线播放| 日日摸夜夜添夜夜添国产精品| 国产精品久久久久影院亚瑟 | 精品国产乱码久久久久久久| 91在线观看美女| 国产尤物一区二区| 日韩中文字幕一区二区三区| 中文字幕永久在线不卡| 日韩精品一区二区三区在线观看| 91免费看片在线观看| 国产高清精品在线| 麻豆91在线观看| 午夜国产不卡在线观看视频| 亚洲欧美在线观看| 欧美激情一区二区三区| 欧美变态口味重另类| 欧美日韩不卡一区| 欧美系列在线观看| 色综合久久中文字幕综合网| 成人国产精品免费观看视频| 韩国理伦片一区二区三区在线播放| 首页欧美精品中文字幕| 亚洲r级在线视频| 亚洲精品中文在线影院| 国产精品久久久久久妇女6080| 精品久久人人做人人爽| 欧美一区二区三区四区五区| 欧美高清视频在线高清观看mv色露露十八 | 欧美伊人久久大香线蕉综合69| 99久久精品免费观看| 不卡的电影网站| 91在线观看成人| 色一情一乱一乱一91av| 国产成人亚洲综合a∨婷婷| 老司机免费视频一区二区三区| 日韩av电影天堂| 看电视剧不卡顿的网站| 麻豆成人91精品二区三区| 久久99精品国产麻豆不卡| 五月婷婷色综合| 麻豆国产精品视频| 精品无码三级在线观看视频| 极品美女销魂一区二区三区免费| 久久69国产一区二区蜜臀 | 亚洲永久免费av| 偷拍亚洲欧洲综合| 看电影不卡的网站| 国产精品主播直播| 91在线观看视频| 欧美日韩久久不卡| 日韩欧美国产高清| 国产亚洲精品bt天堂精选| 国产精品久久久久一区| 夜夜夜精品看看| 日本中文字幕一区二区视频| 狠狠色狠狠色综合| 成人亚洲一区二区一| 色噜噜狠狠一区二区三区果冻| 欧美日韩一卡二卡| 久久久不卡影院| 亚洲欧美日韩电影| 美女视频黄频大全不卡视频在线播放| 国产一区二区三区在线观看免费| 成人爱爱电影网址| 欧美日韩免费视频| 久久精品一级爱片| 亚洲国产日产av| 国产精品综合一区二区三区| 色婷婷久久一区二区三区麻豆| 91麻豆精品国产91久久久更新时间| 亚洲精品一线二线三线无人区| 18欧美亚洲精品| 蜜桃传媒麻豆第一区在线观看| 成人黄动漫网站免费app| 欧美私人免费视频| 国产亚洲欧美一级| 天天综合天天做天天综合| 久久成人免费网站| 色一区在线观看| 久久嫩草精品久久久精品| 亚洲国产综合人成综合网站| 国产精品中文欧美| 欧美日韩视频不卡| 国产精品久久久久久久久免费樱桃| 日韩在线观看一区二区| 99久久免费国产| 久久五月婷婷丁香社区| 首页国产欧美久久| 色偷偷成人一区二区三区91| 久久影院午夜论| 天天影视色香欲综合网老头| www.色精品| 国产婷婷一区二区| 美女爽到高潮91| 欧美区一区二区三区| 中文字幕亚洲电影| 国产伦精品一区二区三区免费迷| 在线电影一区二区三区| 亚洲精品国产一区二区精华液 | 337p日本欧洲亚洲大胆精品 | 在线视频欧美精品| 国产精品久久二区二区| 激情综合网激情| 日韩欧美国产一区在线观看| 亚洲成人黄色小说| 欧美三级一区二区| 亚洲午夜激情av| 色婷婷国产精品久久包臀| 国产精品久99| 国产宾馆实践打屁股91| 国产午夜精品理论片a级大结局| 经典一区二区三区| 精品国产一区二区三区久久久蜜月 | 日本在线观看不卡视频| 在线视频综合导航| 亚洲欧美日韩电影| 欧美制服丝袜第一页| 亚洲一区视频在线观看视频|