超声波避障小车程序设计

上传人:F****n 文档编号:99768573 上传时间:2019-09-20 格式:DOC 页数:5 大小:26.50KB
返回 下载 相关 举报
超声波避障小车程序设计_第1页
第1页 / 共5页
超声波避障小车程序设计_第2页
第2页 / 共5页
超声波避障小车程序设计_第3页
第3页 / 共5页
超声波避障小车程序设计_第4页
第4页 / 共5页
超声波避障小车程序设计_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《超声波避障小车程序设计》由会员分享,可在线阅读,更多相关《超声波避障小车程序设计(5页珍藏版)》请在金锄头文库上搜索。

1、/*/5路超声波避障实验:51单片机+HC-SR04超声波/*/#include/器件配置文件#include#defineRX1P3_6/小车左侧超声波HC-SR04接收端#defineTX1P1_7/发送端#defineRX2P3_3/左前方超声波#defineTX2P0_2#defineRX3P2_4/正前方超声波#defineTX3P2_5#defineRX4P3_5/右前方超声波#defineTX4P3_4#defineRX5P3_7/右侧超声波#defineTX5P1_6#defineLeft_moto_pwmP1_5/PWM信号端#defineRight_moto_pwmP1_4

2、/PWM信号端/定义小车驱动模块输入IO口sbitIN1=P10;sbitIN2=P11;sbitIN3=P12;sbitIN4=P13;sbitEN1=P14;sbitEN2=P15;bitRight_moto_stop=1;bitLeft_moto_stop=1;#defineLeft_moto_goIN1=0,IN2=1,EN1=1;/左电机向前走#defineLeft_moto_backIN1=1,IN2=0,EN1=1;/左边电机向后走#defineLeft_moto_StopEN1=0;/左边电机停转#defineRight_moto_goIN3=1,IN4=0,EN2=1;/右边

3、电机向前走#defineRight_moto_backIN3=0,IN4=1,EN2=1;/右边电机向后走#defineRight_moto_StopEN2=0;/右边电机停转unsignedcharpwm_val_left=0;/变量定义unsignedcharpush_val_left=0;/左电机占空比N/20unsignedcharpwm_val_right=0;unsignedcharpush_val_right=0;/右电机占空比N/20unsignedinttime=0;unsignedinttimer=0;unsignedlongS1=0;unsignedlongS2=0;un

4、signedlongS3=0;unsignedlongS4=0;unsignedlongS5=0;voiddelay_1ms(unsignedcharx)/1ms延时函数,100ms以内可用unsignedchari;while(x-)for(i=124;i0;i-);/*/voidCount1()/计算左侧超声波距离的函数while(!RX1);/当RX1为零时等待TR0=1;/开启计数while(RX1);/当RX1为1计数并等待TR0=0;/关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S1=(time*1.7)/100;/算出来是CMvoidCount2()/计算函

5、数while(!RX2);/当RX2为零时等待TR0=1;/开启计数while(RX2);/当RX2为1计数并等待TR0=0;/关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S2=(time*1.7)/100;/算出来是CMvoidCount3()/计算函数while(!RX3);/当RX3为零时等待TR0=1;/开启计数while(RX3);/当RX3为1计数并等待TR0=0;/关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S3=(time*1.7)/100;/算出来是CMvoidCount4()/计算函数while(!RX4);/当RX4为零时等待T

6、R0=1;/开启计数while(RX4);/当RX4为1计数并等待TR0=0;/关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S4=(time*1.7)/100;/算出来是CMvoidCount5()/计算函数while(!RX5);/当RX5为零时等待TR0=1;/开启计数while(RX5);/当RX5为1计数并等待TR0=0;/关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S5=(time*1.7)/100;/算出来是CMvoidleftrun(void)push_val_left=20;push_val_right=20;Left_moto_ba

7、ck/左电机往后走Right_moto_go/右电机往前走/*/右转voidrightrun(void)push_val_left=20;push_val_right=20;Left_moto_go/左电机往前走Right_moto_back/右电机往后走/*/停止voidstoprun(void)Left_moto_Stop/左电机停Right_moto_Stop/右电机停/*/*PWM调制电机转速*/*/*左电机调速*/*调节push_val_left的值改变电机转速,占空比*/voidpwm_out_left_moto(void)if(Left_moto_stop) if(pwm_val_left=20)pwm_val_left=0;elseLeft_moto_pwm=0;/*/*右电机调速*/voidpwm_out_right_moto(void)if(Right_moto_stop)if(pwm_val_right=20)pwm_val_right=0;elseRight_moto_pwm=0;/*/voidtimer0()interrupt1/T0中断/*/*TIMER1中断服务子函数产生PWM信号*/voidtimer1()interrupt3TH1=(65536-100

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号