本人大三,自己和同学智能循迹小车,三个模块已经连线完成,这个程序烧进去,小车只有右轮加速和减速的状态,左轮不动是怎么回事,求大神帮助!!!
#include<reg52.h>//包含必要头文件
sbit you1=P0^0;//定义单片机控制右边电机的引脚
sbit you2=P0^1;//定义单片机控制右边电机的引脚
sbit zuo1=P0^2;//定义单片机控制左边电机的引脚
sbit zuo2=P0^3;//定义单片机控制左边电机的引脚
sbit y=P1^0;//定义单片机连接循迹板右边光电管的引脚
sbit z=P1^1;//定义单片机连接循迹板左边光电管的引脚
sbit q=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(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void zuo()//左右轮协同左转子函数
{
you1=0;
you2=1;
zuo1=1;
zuo2=0;
delay(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void you()//左右轮协同右转子函数
{
you1=1;
you2=0;
zuo1=0;
zuo2=1;
delay(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void down()//左右轮都停止转动
{
you1=1;
you2=1;
zuo1=1;
zuo2=1;
} void main()//主函数
{
while(1)//死循环
{
qian();//调用前进子函数,使小车光电管不满足以下几个条件时都处于前进状态
while((z==0)&&(y==1)&&(q==1))//判断当左边光电管遇到黑线,
{ //右边和前边的光电管遇到白线时左转
zuo();//调用左转函数
}
while((z==1)&&(y==0)&&(q==1))//判断当右边光电管遇到黑线,
{ //左边和前边的光电管遇到白线时右转
you();//调用右转函数
}
while((z==0)&&(y==0)&&(q==1))//判断当左边光电管遇到黑线,右边 光电管也遇到黑线,前边的光电管遇到白线时停止 {
down();//调用停止函数
}
while((z==0)&&(y==0)&&(q==0))//判断当左边、右边、前边光电管同 时遇到黑线,即遇到十字路口,小车前进 {
qian();//调用前进函数
}
}
}
#include<reg52.h>//包含必要头文件
sbit you1=P0^0;//定义单片机控制右边电机的引脚
sbit you2=P0^1;//定义单片机控制右边电机的引脚
sbit zuo1=P0^2;//定义单片机控制左边电机的引脚
sbit zuo2=P0^3;//定义单片机控制左边电机的引脚
sbit y=P1^0;//定义单片机连接循迹板右边光电管的引脚
sbit z=P1^1;//定义单片机连接循迹板左边光电管的引脚
sbit q=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(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void zuo()//左右轮协同左转子函数
{
you1=0;
you2=1;
zuo1=1;
zuo2=0;
delay(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void you()//左右轮协同右转子函数
{
you1=1;
you2=0;
zuo1=0;
zuo2=1;
delay(10-1);//pwm调速 此为pwm有效值
you1=1;
you2=1;
zuo1=1;
zuo2=1;
delay(1);//pwm调速 此为pwm无效值 则此时pwm=9/10=90%
}
void down()//左右轮都停止转动
{
you1=1;
you2=1;
zuo1=1;
zuo2=1;
} void main()//主函数
{
while(1)//死循环
{
qian();//调用前进子函数,使小车光电管不满足以下几个条件时都处于前进状态
while((z==0)&&(y==1)&&(q==1))//判断当左边光电管遇到黑线,
{ //右边和前边的光电管遇到白线时左转
zuo();//调用左转函数
}
while((z==1)&&(y==0)&&(q==1))//判断当右边光电管遇到黑线,
{ //左边和前边的光电管遇到白线时右转
you();//调用右转函数
}
while((z==0)&&(y==0)&&(q==1))//判断当左边光电管遇到黑线,右边 光电管也遇到黑线,前边的光电管遇到白线时停止 {
down();//调用停止函数
}
while((z==0)&&(y==0)&&(q==0))//判断当左边、右边、前边光电管同 时遇到黑线,即遇到十字路口,小车前进 {
qian();//调用前进函数
}
}
}