logo资料库

智能车电磁组完整程序.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
#include #include "derivative.h" /* common defines and macros */ /* derivative-specific definitions */ int left1=0; int left2=0; int right1=0; int right2=0; int AR_LEFT=0;//left2-right2 int AR_RIGHT=0; int CR=0;//左边相加减右边相加 int preCR=0; int ppreCR=0; int mkp=0; int mki=0; int mkd=0; //设定速度 int ideal_speed=0; int speed=0; int s_ideal0[6]={75,80,42,42,42,42}; //普通道、长直道、普通到弯、长直道到弯、弯内、偏离 黑线 int s_ideal1[6]={70,75,42,42,42,42}; int s_ideal2[6]={62,70,42,40,41,40}; int s_ideal3[6]={54,66,42,40,41,40}; int table_mkp0[6]={30,30,30,30,30,30}; int table_mkp1[6]={25,25,25,25,25,25}; int table_mkp2[6]={5,4,4,20,20,20}; int table_mkp3[6]={4,4,4,10,8,9}; //稳定速度 //ni 16.31 ,shun 15.16 int table_mki0[6]={0,0,20,20,20,20}; int table_mki1[6]={0,0,20,20,20,20}; int table_mki2[6]={0,0,0,10,10,20}; int table_mki3[6]={0,0,0,0,0,0}; int table_mkd0[6]={0,0,0,0,0,0}; int table_mkd1[6]={0,0,0,0,0,0}; int table_mkd2[6]={0}; int table_mkd3[6]={0,0,0,0,0,0}; int s_table[6]; int b_mkp[6]=0; int b_mki[6]=0; int b_mkd[6]=0;
int table_rkp0[7]={5,3,2,550,550,550,8};//普通道中间、长直道低速、长直道高速、普到弯、 直到弯、弯、普通道两边 int table_rkp1[7]={7,5,4,450,450,400,9}; int table_rkp2[7]={6,3,2,150,150,150,9}; int table_rkp3[7]={5,3,2,150,150,150,9}; int table_rkd0[7]={0,0,0,400,400,400,100}; int table_rkd1[7]={0,0,0,500,500,500,100}; int table_rkd2[7]={0,0,0,200,300,400,100}; int table_rkd3[7]={0,0,0,200,300,400,100}; int b_rkp[7]=0; int b_rkd[7]=0; int rkp=0; int rkd=0; int f=0;// pwmDTY 要加的值 int pref=0; //脉冲数 int Pulse_count=0; int ganhuang=0; unsigned int ting=0; int i=0; //道路标志 int Flag_Chute=0; int GeneralCtn=0; int CurveCtn=0; int ChuteCtn=0; int WANCtn=0; int Flag_gaosu=0; unsigned char Flag_Pwm;//知道转弯道标志 int flag=0; /*********************** //PLL 超频到 40MHZ ****************/ void PLL_Init(void) { CLKSEL=0X00;
PLLCTL_PLLON=1; REFDV=0X80|0X01; SYNR=0X40|0X04; POSTDIV=0X00; asm nop; asm nop; while(!(CRGFLG_LOCK==1)); CLKSEL_PLLSEL=1; } //延时函数 cnt*1ms; void delay(unsigned int cnt) { unsigned int loop_i,loop_j; for(loop_i=0;loop_i) CRGINT_RTIE=1; asm cli; } //舵机初始化
void PWM_rudder_init(void) { PWME_PWME3=0; PWME_PWME2=0; PWMPRCLK_PCKB=2;//CLOCKB=BUS/4=10MHz PWMSCLB=2;//CLOCCSB=10/(2*2)=2.5MHz PWMCTL_CON23=1;//组合 PWM23 PWMCLK_PCLK3=1;//PWM3 使用 SB PWMPER23=50000;//写 PWM23 的周期寄存器,周期是 20ms PWMPOL_PPOL3=1;//极性为正 PWMCAE_CAE3=0;//左对齐 PWME_PWME3=1;//使能 PWM23 } //电机初始化 void PWM_init_motor(void){ //电机初始化 PWME_PWME0=0; PWME_PWME1=0; PWMPRCLK_PCKA=2; //Clock A=40M/4=10M PWMPOL_PPOL1=1;//通道 1 正极性输出 PWMCLK_PCLK1=0;//通道 1 选择 A 时钟 PWMCAE_CAE1=0;//左对齐 PWMCTL_CON01=1; PWMPER01=1000;//输出频率=10M/1000=10Khz PWMDTY01=0;//通道 1 占空比为 100/250 PWME_PWME1=1;//通道 1 使能 PWME_PWME4=0; PWME_PWME5=0; PWMPRCLK_PCKA=1; //Clock A=40M/2=20M PWMPOL_PPOL5=1;//通道 5 正极性输出 PWMCLK_PCLK5=1;//通道 5 选择 SA 时钟 PWMSCLA=1; PWMCAE_CAE5=0;//左对齐 PWMCTL_CON45=1; PWMPER45=1000;//输出频率=10M/1000=10Khz PWMDTY45=0;//初始通占空比 0 PWME_PWME5=1;//通道 5 使能 //ClockSB=20M/(2*1)=10M }
void AD_Init(void) ATD0CTL1=0x20; ATD0CTL2=0x40; ATD0CTL3=0xA0; ATD0CTL4=0x09; ATD0CTL5=0x30; ATD0DIEN=0x00; //选择 AD 通道为外部触发,10 位精度,采样前不放电 //标志位自动清零,禁止外部触发, 禁止中断 //右对齐无符号,每次转换 4 个序列, No FIFO, Freeze 模式下继续转 //采样时间为 4 个 AD 时钟周期,PRS=9,ATDClock=40/(2*(9+1))2MHz //特殊通道禁止,连续转换 4 个通道 ,多通道转换,起始通道为 0 转换 //禁止数字输入 { } /************************ /////////检测起跑线\\\\\\\\\\\ *****************/ void Checkstart(){ asm sei; TIOS_IOS0=0; TSCR1=0X80; TSCR2=0X07; //输入捕捉 TCTL4=0X01;//上升沿捕捉 TIE=0X01; //允许硬件中断 asm cli; } //拨码开关 void boman(){ if(PORTA_PA0==1) { b_rkp[0]=table_rkp0[0]; b_rkp[1]=table_rkp0[1]; b_rkp[2]=table_rkp0[2]; b_rkp[3]=table_rkp0[3]; b_rkp[4]=table_rkp0[4]; b_rkp[5]=table_rkp0[5]; b_rkp[6]=table_rkp0[6]; b_rkd[0]=table_rkd0[0]; b_rkd[1]=table_rkd0[1]; b_rkd[2]=table_rkd0[2];
b_rkd[3]=table_rkd0[3]; b_rkd[4]=table_rkd0[4]; b_rkd[5]=table_rkd0[5]; b_rkd[6]=table_rkd0[6]; b_mkp[0]=table_mkp0[0]; b_mkp[1]=table_mkp0[1]; b_mkp[2]=table_mkp0[2]; b_mkp[3]=table_mkp0[3]; b_mkp[4]=table_mkp0[4]; b_mkp[5]=table_mkp0[5]; b_mki[0]=table_mki0[0]; b_mki[1]=table_mki0[1]; b_mki[2]=table_mki0[2]; b_mki[3]=table_mki0[3]; b_mki[4]=table_mki0[4]; b_mki[5]=table_mki0[5]; b_mkd[0]=table_mkd0[0]; b_mkd[1]=table_mkd0[1]; b_mkd[2]=table_mkd0[2]; b_mkd[3]=table_mkd0[3]; b_mkd[4]=table_mkd0[4]; b_mkd[5]=table_mkd0[5]; s_table[0]=s_ideal0[0]; s_table[1]=s_ideal0[1]; s_table[2]=s_ideal0[2]; s_table[3]=s_ideal0[3]; s_table[4]=s_ideal0[4]; s_table[5]=s_ideal0[5]; } if(PORTA_PA1==1) { b_rkp[0]=table_rkp1[0]; b_rkp[1]=table_rkp1[1]; b_rkp[2]=table_rkp1[2]; b_rkp[3]=table_rkp1[3]; b_rkp[4]=table_rkp1[4]; b_rkp[5]=table_rkp1[5]; b_rkp[6]=table_rkp1[6];
b_rkd[0]=table_rkd1[0]; b_rkd[1]=table_rkd1[1]; b_rkd[2]=table_rkd1[2]; b_rkd[3]=table_rkd1[3]; b_rkd[4]=table_rkd1[4]; b_rkd[5]=table_rkd1[5]; b_rkd[6]=table_rkd1[6]; b_mkp[0]=table_mkp1[0]; b_mkp[1]=table_mkp1[1]; b_mkp[2]=table_mkp1[2]; b_mkp[3]=table_mkp1[3]; b_mkp[4]=table_mkp1[4]; b_mkp[5]=table_mkp1[5]; b_mki[0]=table_mki1[0]; b_mki[1]=table_mki1[1]; b_mki[2]=table_mki1[2]; b_mki[3]=table_mki1[3]; b_mki[4]=table_mki1[4]; b_mki[5]=table_mki1[5]; b_mkd[0]=table_mkd1[0]; b_mkd[1]=table_mkd1[1]; b_mkd[2]=table_mkd1[2]; b_mkd[3]=table_mkd1[3]; b_mkd[4]=table_mkd1[4]; b_mkd[5]=table_mkd1[5]; s_table[0]=s_ideal1[0]; s_table[1]=s_ideal1[1]; s_table[2]=s_ideal1[2]; s_table[3]=s_ideal1[3]; s_table[4]=s_ideal1[4]; s_table[5]=s_ideal1[5]; } if(PORTA_PA2==1) { b_rkp[0]=table_rkp2[0]; b_rkp[1]=table_rkp2[1]; b_rkp[2]=table_rkp2[2]; b_rkp[3]=table_rkp2[3]; b_rkp[4]=table_rkp2[4]; b_rkp[5]=table_rkp2[5]; b_rkp[6]=table_rkp2[6];
b_rkd[0]=table_rkd2[0]; b_rkd[1]=table_rkd2[1]; b_rkd[2]=table_rkd2[2]; b_rkd[3]=table_rkd2[3]; b_rkd[4]=table_rkd2[4]; b_rkd[5]=table_rkd2[5]; b_rkd[6]=table_rkd2[6]; b_mkp[0]=table_mkp2[0]; b_mkp[1]=table_mkp2[1]; b_mkp[2]=table_mkp2[2]; b_mkp[3]=table_mkp2[3]; b_mkp[4]=table_mkp2[4]; b_mkp[5]=table_mkp2[5]; b_mki[0]=table_mki2[0]; b_mki[1]=table_mki2[1]; b_mki[2]=table_mki2[2]; b_mki[3]=table_mki2[3]; b_mki[4]=table_mki2[4]; b_mki[5]=table_mki2[5]; b_mkd[0]=table_mkd2[0]; b_mkd[1]=table_mkd2[1]; b_mkd[2]=table_mkd2[2]; b_mkd[3]=table_mkd2[3]; b_mkd[4]=table_mkd2[4]; b_mkd[5]=table_mkd2[5]; s_table[0]=s_ideal2[0]; s_table[1]=s_ideal2[1]; s_table[2]=s_ideal2[2]; s_table[3]=s_ideal2[3]; s_table[4]=s_ideal2[4]; s_table[5]=s_ideal2[5]; } if(PORTA_PA3==1) { b_rkp[0]=table_rkp3[0]; b_rkp[1]=table_rkp3[1]; b_rkp[2]=table_rkp3[2]; b_rkp[3]=table_rkp3[3];
分享到:
收藏