mhjQAQ 2017-10-06 05:19 采纳率: 100%
浏览 2853

51红外光电避障小车程序,自己写的,但是不知道哪里有问题,希望大牛们指出错误。

//P00-P05六光电
//P10-P13红外模块
//P36 P37使能端 ENA左 ENB右
//P31-P34IN

//IN3 1 IN4 0 左后
//IN1 1 IN2 0 右前
//zkb1 左 zkb2右
//H1 H2右 H3 H4左
#include
#define uchar unsigned char
#define uint unsigned int
sbit HD1=P0^0;
sbit HD2=P0^1;
sbit HD3=P0^2;
sbit HD4=P0^3;
sbit HD5=P0^4;
sbit HD6=P0^5;
sbit H1=P1^0;
sbit H2=P1^1;
sbit H3=P1^2;
sbit H4=P1^3;
sbit IN1=P3^2;
sbit IN2=P3^3;
sbit IN3=P3^4;
sbit IN4=P3^5;
sbit ENA=P3^6;
sbit ENB=P3^7;
void qianjin();
void tingzhi();
void zuozhuan();
void youzhuan();
void delay_ms(uint x);
void zyhw();
void bizhang1();
void bizhang2();
void jiansu();
void init();
//void delay();
uchar zkb1=0;
uchar zkb2=0;
uchar flag;
uchar t=0;
/***********************主函数*****************************/

void main()
{
init();
while(1)
{
qianjin();
zyhw();
bizhang1();

qianjin();
zyhw();

bizhang2();
qianjin();
// jiansu();
// while(1);

}
}
/**********************基础驱动子函数*****************************/

void delay_ms(uint x)
{
uchar i,j;
for(i=0;i<110;i++)
for(j=0;j<x;j++);
}

//void delay()
//{
// uchar a,b;
// for(a=0;a<110;a++)
// for(b=0;b<500;b++);
//}

void qianjin()
{
zkb1=30;zkb2=30;

IN1=1;
IN2=0;
IN3=0;
IN4=1;
}

void tingzhi()
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
}

void zuozhuan()
{
zkb1=0;
zkb2=70;

IN1=1;
IN2=0;
IN3=0;
IN4=1;
}

void youzhuan()
{
zkb1=70;

zkb2=0;
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}

/********************传感器避障子函数*****************************/

void bizhang1()
{
uint num=0;
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==0)

delay_ms(5);
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==0)

{
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
zuozhuan();

delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
qianjin();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
youzhuan();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);
num++;
}
}

void bizhang2()
{
uint num=1;
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==1)

delay_ms(5);
if((HD1==0||HD2==0||HD3==0||HD4==0||HD5==0||HD6==0)&&num==1)

{
tingzhi();
delay_ms(150);
delay_ms(150);
delay_ms(150);
delay_ms(150);

    youzhuan();     
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150);  

    tingzhi();
    delay_ms(150);
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150);  

    qianjin();
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 

    tingzhi();
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 

    zuozhuan();
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 
    delay_ms(150); 
    num++;

}
}

//void jiansu()
//{
// if((HD1==0&&HD2==0&&HD3==0&&HD4==0&&HD5==0&&HD6==0)&&num==3)
// delay_ms(10);
// if((HD1==0&&HD2==0&&HD3==0&&HD4==0&&HD5==0&&HD6==0)&&num==3)

// tingzhi();
//}

void zyhw()
{
if(H3==0||H4==0)
{
youzhuan();
delay_ms(200);
}
if(H1==0||H2==0)
{
zuozhuan();
delay_ms(200);
}
}

/*************************PWM调速****************************/

void init()
{
TMOD=0x11;
TH1=(65536-100)/256;
TL1=(65536-100)%256;
EA=1;
TH0=0;
TL0=0;
ET0=1;
ET1=1;
TR1=1;
}

void timer1() interrupt 3
{
TH1=(65536-100)/256;
TL1=(65536-100)%256;
t++;
if(t>=100)
t=0;
if(t<zkb1)
ENA=1;
else
ENA=0;
if(t<zkb2)
ENB=1;
else
ENB=0;

}

//delay
//电机响

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 win11修改中文用户名路径
    • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
    • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
    • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
    • ¥15 帮我写一个c++工程
    • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
    • ¥15 关于smbclient 库的使用
    • ¥15 微信小程序协议怎么写
    • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
    • ¥20 怎么用dlib库的算法识别小麦病虫害