智能车模块源程序+很详细(6)

1970-01-01 08:00

第三届全国大学生智能汽车大赛

volatile unsigned int IC0Counter=0; volatile unsigned int IC0Counter_1=0; volatile unsigned int stop_flag=0; volatile int NowSpeed;

//2.083ms one int

volatile unsigned int GearWidth[4]={0} ; volatile unsigned int GearIndex=0; unsigned long GearWidthSum; unsigned long AveGearWidth ; unsigned long AveSpeed ;//测速

unsigned int pulse_counter=0; //计数 int DCDuty;

int Object_Speed=SPEED;

//100cm/s

int stop_stop=0xff,stop_stop1=0;

/******************转弯PID函数********************/ int pid1(int a,int b,int c) { int x=0;

x=(KP1*(a-b)+KI1*a+KD1*(a-2*b+c)); return (x); }

/*********************主函数*********************/ void main(void) {

SpdPID.ProportionalGain=30000;//1.52 0.15 0.05 0.94 1.84 24903

SpdPID.ProportionalGainScale=13; (0-1):GainScale=14

//0.76

25

第三届全国大学生智能汽车大赛

//(0-2):gainscale=13 0-128 0-256 ..

//(0-4) 0-8 0-16 0-32 0-64

//.0-32768--不能取最后的那个数,可以有小数,随着数的增大,小数数减少,从15位到0位 //精度1/32768----1

SpdPID.IntegralGain=25000;//20480;15000

1.45(pian da) 0.925 SpdPID.IntegralGainScale=14;//14;//0.6250.45 0.15 0.85 的系数 SpdPID.DerivativeGain=20000;// 0 SpdPID.DerivativeGainScale=14; SpdPID.PositivePIDLimit=DC_Limit; SpdPID.NegativePIDLimit=0; SpdPID.IntegralPortionK_1=0;//=0 SpdPID.InputErrorK_1=0;//=0

RTI_Init(); SET_PLL(); ATD_Init(); Servo_Init(); Forward_Init(); ECT_Init();

DDRT=0x00;

boma=PTIT;//读入拨码开关; boma>>=4;

boma&=0b00001111;

26

1.25

第三届全国大学生智能汽车大赛

zhidao_speed=90+7*boma; wangdao_speed=75+4*boma; chongchu_speed=50;//60+boma;

EnableInterrupts; for(;;) {

/////////////////////调速///////////////////// if(abs(ave_weight[2])<3) {

Object_Speed=zhidao_speed; }

else if(abs(ave_weight[2])<14) Object_Speed=wangdao_speed; else

Object_Speed=chongchu_speed;

/////////////////////转弯/////////////////////

cha1=pid1(ave_weight[2],ave_weight[1],ave_weight[0]); cha1=(cha1*100+cha0*0)/100; cha0 =cha1;

Sensor=4785-38*ave_weight[2];//pid1(ave_weight[2],ave_weight[1],ave_weight[0]);

if(Sensor>MID+MAXTURN) {

Sensor=MID+MAXTURN;

27

第三届全国大学生智能汽车大赛

}

if(Sensor

Sensor=MID-MAXTURN; }

PWMDTY01=Sensor;

ave_weight[0]=ave_weight[1]; ave_weight[1]=ave_weight[2]; count0=0; } }

#pragma CODE_SEG NON_BANKED /**********************************************/ 定时void interrupt 7 RTI_int() {

int i,j,k,l,m; static int pulse_t; CRGFLG|=0x80; pulse_t++; if(pulse_t>5) {

pulse_t=0; DDRA=0xff;

28

中1ms断

第三届全国大学生智能汽车大赛

PORTA_BIT0=1; for(i=0;i<1500;i++);

ATD0CTL5=0x90;//启动一个新的转换 ,ch0 begin ATD1CTL5=0x90;

while(!(ATD0STAT0&0x80)); //等待队列转换结束

AD_Value[0]=ATD0DR0L;//ATD0DR0L; //读取相应结果寄存器值清相应转换完成通道标志ATD0STAT1 AD_Value[1]=ATD0DR1L; AD_Value[2]=ATD0DR2L; AD_Value[3]=ATD0DR3L; AD_Value[4]=ATD0DR4L; AD_Value[5]=ATD0DR5L; AD_Value[6]=ATD0DR6L; AD_Value[7]=ATD0DR7L;

//begin ATD1,ch0 begin

while(!(ATD1STAT0&0x80));//等待ATD1队列转换结束 AD_Value[8]=ATD1DR0L; AD_Value[9]=ATD1DR1L; AD_Value[10]=ATD1DR2L; AD_Value[11]=ATD1DR3L; AD_Value[12]=ATD1DR4L;

AD_Value[13]=ATD1DR5L;//ATD1DR5L;

PORTA_BIT0=0; for(i=0;i<14;i++) {

29


智能车模块源程序+很详细(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:毕业论文加多宝策略分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: