电磁组智能车全国一等奖代码.doc

电磁组智能车全国一等奖代码.doc

ID:57676814

大小:25.00 KB

页数:6页

时间:2020-08-31

电磁组智能车全国一等奖代码.doc_第1页
电磁组智能车全国一等奖代码.doc_第2页
电磁组智能车全国一等奖代码.doc_第3页
电磁组智能车全国一等奖代码.doc_第4页
电磁组智能车全国一等奖代码.doc_第5页
资源描述:

《电磁组智能车全国一等奖代码.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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。