资源描述:
《超声波小车舵机转动避障.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/****************************************************************************硬件连接****************************************************************************/#include#include#defineSevro_moto_pwmP2_7//接舵机信号端输入PWM信号调节速度#defineECHOP2
2、_4//超声波接口定义#defineTRIGP2_5//超声波接口定义#defineLeft_moto_go{P1_0=1,P1_1=0,P1_2=1,P1_3=0;}//左边两个电机向前走#defineLeft_moto_back{P1_0=0,P1_1=1,P1_2=0,P1_3=1;}//左边两个电机向后转#defineLeft_moto_Stop{P1_0=0,P1_1=0,P1_2=0,P1_3=0;}//左边两个电机停转#defineRight_moto_go{P1_4=1,P1_5=0,
3、P1_6=1,P1_7=0;}//右边两个电机向前走#defineRight_moto_back{P1_4=0,P1_5=1,P1_6=0,P1_7=1;}//右边两个电机向前走#defineRight_moto_Stop{P1_4=0,P1_5=0,P1_6=0,P1_7=0;}//右边两个电机停转unsignedcharconstdiscode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};unsigned
4、charconstpositon[3]={0xfe,0xfd,0xfb};unsignedchardisbuff[4]={0,0,0,0,};unsignedcharposit=0;unsignedcharpwm_val_left=0;//变量定义unsignedcharpush_val_left=14;//舵机归中,产生约,1.5MS信号unsignedlongS=0;unsignedlongS1=0;unsignedlongS2=0;unsignedlongS3=0;unsignedlongS4=
5、0;unsignedinttime=0;//时间变量unsignedinttimer=0;//延时基准变量unsignedchartimer1=0;//扫描时间变量/************************************************************************/voiddelay(unsignedintk)//延时函数{unsignedintx,y;for(x=0;x6、**********************************************************/voidDisplay(void)//扫描数码管{if(posit==0){P0=(discode[disbuff[posit]])&0x7f;}//产生点else{P0=discode[disbuff[posit]];}if(posit==0){P2_1=0;P2_2=1;P2_3=1;}if(posit==1){P2_1=1;P2_2=0;P2_3=1;}if(posit==2){
7、P2_1=1;P2_2=1;P2_3=0;}if(++posit>=3)posit=0;}/************************************************************************/voidStartModule()//启动测距信号{TRIG=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
8、();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TRIG=0;}/***************************************************/voidConut(void)//计算距离{while(!ECHO);//当RX为零时等待TR0=1;//开启计数while(ECHO);//当RX为1计数并等待TR0=0;//关闭计数time=TH0