基于磁场导航智能车控制器的设计(6)

2018-12-25 22:40

Led_left=1; }

if(z==2) {

FB=90; SH=45; SH1=45; V1=85; V2=85; V3=80; V4=150; V5=90; V6=80;

Led_right=0; Led_left=1; delay(500); Led_right=1; }

if(z==3) {

FB=100; SH=45; SH1=45; V1=95; V2=95; V3=90; V4=160; V5=100; V6=100;

Led_right=0; Led_left=0; delay(500); Led_right=1; Led_left=1; }

if(z==4) {

z=0; FB=100; SH=45; SH1=45;

V1=95; V2=95; V3=90; V4=170; V5=100; V6=100;

Led_right=1; Led_left=0; delay(500); Led_left=1; } } } }

//////////////////////////////////// ///////////速度控制///////////////// //////////////////////////////////// void Speed_con(void) {

while(!ATD0STAT0_SCF); //等待当前队列转换完成*/ AD_1=ATD0DR0L; AD_2=ATD0DR1L; AD_3=ATD0DR2L; AD_4=ATD0DR3L; AD_5=ATD0DR4L; AD_6=ATD0DR5L;

//////////////////////////////// /////////斜坡检测////////////// ///////////////////////////////

//if(AD_1>90 && AD_4>90 || AD_1<50 && AD_4<50) //{

// PWMDTY23=1565; //Sudu(num_last2); //} //else // {

if(AD_1>3 || AD_4>3) {

x1=AD_2-82; //中间左 x2=AD_3-82; //中间右 if(AD_1

if(AD_4

y=Steer_PID(x1,x2); //舵机PID if(y>650) y=650;

if(y<-650) y=-650;

numm=1570-y; PWMDTY23=numm;

if(AD_1>40 || AD_4>40) //弯道 {

if(flag==1 && FeedBack>FB) {

if(AD_1>AD_4) {

Led_left=0; PWMDTY23=numm; shacheV(SH); Sudu(V1); }

else {

Led_right=0; PWMDTY23=numm; shacheV(SH1); Sudu(V2); } }

else {

Sudu(V3); }

//////////////////////////////// /////////保存numm值///////////// //////////////////////////////// if(5

numm_last0=numm; }

}

else //直道 {

if(AD_2>50 && AD_3>50 && AD_5>40 && AD_6>40) {

//////////斜坡检测//////////////

if(AD_1>95 && AD_4>95 || AD_1<30 && AD_4<30) {

PWMDTY23=1570; Sudu(num_last2); } else {

PWMDTY23=1570; flag=1; Sudu(V4);

num_last0=FeedBack; } }

else {

Sudu(V5); } }

numm_last1=numm_last0; numm_last2=numm_last1; }

else {

PWMDTY23=numm_last2; Sudu(V6); }

num_last1=num_last0; num_last2=num_last1; if(num_last2==0) {

num_last2=100; }

}

//----- 时钟初始化程序 --------// void SetBusCLK_64M(void) {

CLKSEL=0X00; //disengage PLL to system PLLCTL_PLLON=1; //turn on PLL

SYNR =0xc0 | 0x07; REFDV=0x80 | 0x01;

POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz; _asm(nop); //BUS CLOCK=64M _asm(nop);

while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system; }

//-------------PWM初始化程序----------// void PWM_Init() {

PWME=0;

PWMPRCLK=0X53; //时钟预分频设置 A=4MHz B=2MHz PWMCLK=0x03; //时钟源选择SA,SA,B

PWMSCLA=0X02; //分频寄存器,时钟设置SA=A/2^PWMSCLA=1MHz PWMPOL=0x0f; //极性设置,开始输出高电平

PWMCAE=0x0f; //对齐方式选择1为中心对齐(通道关闭后才能对其设置)

PWMCTL_CON23=1; //通道 2,3 级联成一个16位的PWM通道 PWMDTY0=0x32; //占空比设置 PWMDTY1=0x32; //占空比设置 PWMDTY23=0; //占空比设置

PWMPER0=0x64; //周期寄存器设置Frequency=SA/10=10KHz PWMPER1=0x64; //周期寄存器设置Frequency=SA/10=10KHz PWMPER23=0x2710; //周期寄存器设置Frequency=B/10000=100Hz PWMCNT0=0X00; //通道0计数寄存器 PWMCNT1=0X00; //通道1计数寄存器 PWME=0x0f; }


基于磁场导航智能车控制器的设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生化期末复习答案

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

马上注册会员

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