标题:
51单片机小车避障程序与电路原理图
[打印本页]
作者:
njz123
时间:
2023-4-26 11:42
标题:
51单片机小车避障程序与电路原理图
电路原理图如下:
51hei.png
(225 KB, 下载次数: 38)
下载附件
2023-4-26 15:23 上传
单片机源程序如下:
/********** 循迹程序 ************************/
// 接口连接:
// P0.0和P0.1-----右电机
// P0.2和P0.3-----左电机
// P1.0-----------右光电管
// P1.1-----------前光电管
// P1.2-----------左光电管
/*****************************************************/
#include<reg52.h>//包含必要头文件
sbit you1=P0^0;//定义单片机控制右边电机的引脚
sbit you2=P0^1;//定义单片机控制右边电机的引脚
sbit zuo1=P0^2;//定义单片机控制左边电机的引脚
sbit zuo2=P0^3;//定义单片机控制左边电机的引脚
sbit q=P1^1;//定义单片机连接循迹板前边光电管的引脚
sbit y=P1^0;//定义单片机连接循迹板右边光电管的引脚
sbit z=P1^2;//定义单片机连接循迹板左边光电管的引脚
void delay(int z)//pwm中使用的延时函数
{
int i,j;
for(i=2;i>0;i--)
for(j=z;j>0;j--);
}
void qian()//左右轮协同前进子函数
{
you1=0;
you2=1;
zuo1=0;
zuo2=1;
delay(8);//pwm调速 此为pwm有效值,前进时速度为全速的90%
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(10-8);
}
void you()//左右轮协同 右转子函数
{
you1=0;
you2=1;
zuo1=1;
zuo2=0;
delay(7);//pwm调速 此为pwm有效值,前进时速度为全速的80%
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(10-7);
}
void zuo()//左右轮协同 左转子函数
{
you1=1;
you2=0;
zuo1=0;
zuo2=1;
delay(7);//pwm调速 此为pwm有效值,前进时速度为全速的80%
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(10-7);
}
void ting()//左右轮都停止转动
{
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(50000);
}
//下面是后退函数,这里没有用到,注释掉了
/*
void hou()//左右轮协同前进子函数
{
you1=1;
you2=0;
zuo1=1;
zuo2=0;
}
*/
void main()//主函数
{
z=1;
q=1;
y=1;
while(1)//单片机不间断监测 (是个死循环)
{
qian();//调用前进子函数,使小车光电管不满足以下几个条件时都处于前进状态
while((z==0)&&(y==1))//判断当左边光电管遇到黑线时
{
zuo();//调用左转子函数
}
while((z==1)&&(y==0))//判断当右边光电管遇到黑线时
{
you();//调用右转子函数
}
while((z==0)&&(q==0)&&(y==0))//判断当左、前、右光电管均遇到黑线时
{
qian(); //即遇到十字路口时 继续前进
}
while((z==0)&&(q==1)&&(y==0))//判断当左、右光电管均遇到黑线,前光电管时
{
ting(); //即遇到T字路口时 停止
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1