标题:
基于51单片机的两路避障小车程序
[打印本页]
作者:
WakeForest
时间:
2020-4-27 18:16
标题:
基于51单片机的两路避障小车程序
//每次的转向角度可以通过延时的时间来控制
#include<reg51.h>
sbit cgl=P1^2;//左传感器
sbit cgr=P1^1;//右传感器
sbit l1=P0^1;//左边轮子
sbit l2=P0^2;
sbit r3=P0^3;//右边轮子
sbit r4=P0^4;
unsigned int m;
void delay(unsigned int t)//延时tms
{
unsigned i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
void left() //左边有障碍物,往右拐
{
l1=0;l2=0;r3=0;r4=0;delay(300);//保护电机,急停然而改变转向
l1=0;l2=1; //后退
r3=0;r4=1;
delay(400);//拐弯的延时控制拐弯的幅度
l1=0;l2=0;r3=0;r4=0;delay(300);
l1=1;l2=0;//向右拐
r3=0;r4=1;
delay(600);
l1=0;l2=0;r3=0;r4=0;delay(300);
}
void right() //右边有障碍物,往左拐
{
l1=0;l2=0;r3=0;r4=0;delay(300);
l1=0;l2=1; //后退
r3=0;r4=1;
delay(400);
l1=0;l2=0;r3=0;r4=0;delay(300);
l1=0;l2=1;//向左拐
r3=1;r4=0;
delay(600);
l1=0;l2=0;r3=0;r4=0;delay(300);
}
void cg()interrupt 0 //与门输出控制中断
{
if (cgl==0)m=1;
if (cgr==0)m=2;
}
void main()
{
//P1=0xff;//初始化P1
EA=1;
EX0=1;
IT0=1;
while(1)
{
l1=1;l2=0; //前进
r3=1;r4=0;
switch(m)
{
case(1):left(); m=0;break;//右拐
case(2):right();m=0;break;//左拐
default:l1=1;l2=0; //前进
r3=1;r4=0; break;
}
}
}
复制代码
作者:
admin
时间:
2020-4-28 14:08
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1