欢迎来到天天文库
浏览记录
ID:57676814
大小:25.00 KB
页数:6页
时间:2020-08-31
《电磁组智能车全国一等奖代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、voidmain(void){while(1){AD_GetValue();//获得传感器AD值Cal_PostitionA();//获得?if(SenA!=50){Delayms(500);break;}Delayms(50);SenA=50;}#include/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/#defineSERVO_MIDDLE_VALUE1184舵机中值#defineSERVO_RANGE180舵机转动范围voidS
2、et_PWM(uintPWM1,uintPWM2){PWMDTY1=PWM1;PWMDTY0=PWM2;}voidSet_Servo(ucharvalue)//舵机{uinti;if(value>100
3、
4、value<0)value=last_value;保持上一次状态last_value=value;if(value<=50)i=SERVO_MIDDLE_VALUE-(50-value)*18/5;if(value>50)i=SERVO_MIDDLE_VALUE+(value-50)*18/5;PWMDTY23=i;}voidPwm_Init(void)//PWM初始
5、化{PWME=0X00;//禁止PWM输出PWMCTL_CON23=1;//2和3联合成16位PWM,并且2的寄存器为级联后寄存器的高8位PWMCAE_CAE3=0;//左对齐方式,即占空比常数所决定的时间为从周期原点开始计时,此时计数器只使用加法计数PWMCNT23=0;//计数器清零PWMPOL_PPOL3=1;//设置输出极性,即先默认为高电平PWMPRCLK=0X01;//clockB不分频,clockB=64MHz;CLKA2分频:32MhzPWMSCLB=0x20;//clockSB64分频clock=clockB/64=1MHz0.001msPWMCLK_
6、PCLK3=1;//选择clockSB做时钟源PWMPER23=10000;//将PWM的周期设置为10msPWMPOL_PPOL0=1;//PWM0首先输出高电平PWMPOL_PPOL1=1;//PWM1首先输出高电平PWMCLK_PCLK0=1;//PWM0用SA做时钟源PWMCLK_PCLK1=1;//PWM1用SA做时钟源PWMCAE_CAE0=0;//左对齐输出PWMCAE_CAE1=0;//左对齐输出Set_PWM(0,0);}ucharMoto_PID()//电机的PID控制if(err>8){Set_PWM(100,0);return0;}if(err<
7、-10){Set_PWM(100,100);return0;}Set_PWM(M_PWM,0);}ucharServo_PID()//舵机的PID控制if(Rel_SenA>43){Set_Servo(100);return0;}if(Rel_SenA<-43){Set_Servo(0);return0;}}#include/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/ucharAD_Value[16];uintSen_Value;ui
8、ntSenA;voidADC_Init(void)//ADC初始化{ATD0CTL1=0x00;//不设置外部终端,只设置8位精度ATD0CTL2=0x40;//禁止外部触发,中断禁止,转换后自动清除寄存器ATD0CTL3=0x80;ATD0CTL4=0x03;PRS=7,divider=8;ATD0CTL5=0x30;//连续转换,多通道转换,通道AN0开始ATD0DIEN=0x00;//相应的数字信号输入禁止}voidAD_GetValue()//获取AD值{while(ATD0STAT2_CCF0==0);//判断通道0是否转换完成AD_Value[0]=ATD0
9、DR0;AD_Value[1]=ATD0DR1;AD_Value[2]=ATD0DR2;}ucharCal_PostitionA(){uchari;uintsum;for(i=0;i<6;i++){if(AD_Value[i]<=15)AD_Value[i]=0;}sum=AD_Value[0]+AD_Value[1]+AD_Value[2];if(sum!=0){sum=sum/(AD_Value[0]+AD_Value[2]+AD_Value[5]);SenA=sum;return0;}elsereturn1;}#include
此文档下载收益归作者所有