我的程序,这是超声波测距的程序,检测到物体,你直接让小车左拐,或者右拐就行了:
#include<reg52h>//超声波测距
#include<intrinsh>
#define uint unsigned int
#define uchar unsigned char
uint a,s,time;
sbit tr=P2^1; //发送
sbit re=P2^2; //接收
void delay_us() //延时50us
{
uint i;
for(i=0;i<50;i++)
_nop_();
}
void delay_ms(uint x) //毫秒级延时
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void getdistance1()
{
//uint i=2353;//40厘米来回需要的时间(us) (042/340)1000000
TR1=0;
TH1=0;
TL1=0;
re=0;//接收信号端置0
tr=1;//开始触发
delay_us();//延时50微秒
tr=0; //停止触发
while(re==0); //没有信号返回并且在40厘米障碍物信号返回需要的时间前则等待 (无信号即时返回,防止死循环,阻碍其它程序的执行)
TR1=1;
while(re==1);
TR1=0;
time=TH1256+TL1; //读取脉宽长度
TH1=0;
TL1=0;
s=(time17)/100; //算出来是厘米
if(s<30)
P1=0xfe;
else
P1=0xff;
}
void main()
{
TMOD=0x10;//定时器1模式1
TR1=0;
tr=0;
re=0;
while(1)
{
getdistance1();
}
}
避障小车原理:
一、运动机理:
控制前面两个轮子的转动方向就可以控制整个机器人行进的方向:
1、左右两个前轮都向前转,则机器人向“正前方”直线前进;
2、左右两个前轮都向后转,则机器人向“正后方”直线倒退;
3、左前轮向后转,右前轮向前转,则机器人将以后轮为轴心逆时针转动,即实现向“右后方”转弯倒退;
4、左前轮向前转,右前轮向后转,则机器人将以后轮为轴心顺时针转动,即实现向“左后方”转弯倒退。
二、控制原理
在机器人的头部用钢丝做两根触须,一左一右各连接到一个碰撞开关,分别控制两个前轮的旋转方向。
特别注意,左右触须与对应控制的电机是交叉过来的,即:左边的触须连接右边的碰撞开关,控制右边的电机;右边的触须连接左边的碰撞开关,控制左边的电机。
(1)无障碍物
当前方都没有障碍物,左右两个轮子都向前正转,则机器人向“前方”直线前进。
(2)左前方有障碍物
当左前方有障碍物,在左边触须碰到障碍物时,控制右边的轮子反转,则机器人向“左后方”倒退并转弯,即方向转向了障碍物的右边,从而避开了左边的障碍物。
向后倒退转弯会持续一会,在完成转弯之后,左边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。
(3)右前方有障碍物
当右前方有障碍物,在右边触须碰到障碍物时,控制左边的轮子反转,则机器人向“右后方”倒退并转弯,即方向转向了障碍物的左边,从而避开了右边的障碍物。
向后倒退转弯会持续一会,在完成转弯之后,右边触须不再碰到障碍物,则两个轮子都正转,机器人继续向新的没有障碍物的“前方”直线前进。
(4)正前方有障碍物
当正前方有障碍物,左右两边的触须都会碰到障碍物,控制左右两边的轮子都反转,则机器人向“正后方”倒退,从而避开障碍物。
在直线倒退持续了一会后,左右两边的触须都不再碰到障碍物,则两个轮子都正转又变成直线前进;然后又会遇到正前方的障碍物又会直线倒退,再直线前进……如此反复变成一个死循环。
三、电路原理
机器人头部有两根钢丝作的触须,触须分别连接在两个碰撞开关上(注意两根钢丝对应的碰撞开关是交叉的,即:“左—右”钢丝,对应“右—左”碰撞开关)。
(1)没有障碍物时,触须没有被挤压,不触发碰撞开关,碰撞开关默认的通路,给电机供给一个“正方向”的电流,电机于是“顺时针方向”旋转。
(2)有障碍物时,触须被挤压,触发碰撞开关,碰撞开关断开默认通路,连接另外的一组通路,给电机供一个“反方向”的电流,电机于是“逆时针方向”旋转。
51单片机一个,20或30pf的电容4个,小车一个,L298N电机驱动2个,7V或12V锂电池一个,晶振2个,杜邦线40根,烙铁,焊锡丝,超声波模块,LED灯若干,舵机一个。
方案很简单,上述元件做好51最小系统,淘宝买超声波模块,有51示例代码,直接拿来用,这样你可以取得小车和障碍物的距离了,然后,组装小车,把7v锂电池直接接L298N上,L298有转出5V的插针接口,用它转出的5v电压给单片机和超声波模块供电,然后淘宝买舵机要参考代码,当发现前方有障碍后,减速,单片机控制舵机转动一个角度,避过障碍,至于驱动小车的话,用单片机产生11KHZ的PWM输出到L298N上,把小车电机也接到L298上,这个可以看L298的说明书,淘宝商家会给你的。大体就是这样
以上就是关于谁有超声波避障功能的51芯片程序,我的单片机型号是89C52RC全部的内容,包括:谁有超声波避障功能的51芯片程序,我的单片机型号是89C52RC、避障小车原理、做基于51单片机的超声波避障小车方案,还有详细元器件清单!要详细的 谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)