/*****************ZY08-C智能循迹、遥控、避障、寻光机器人*****************
//=====================================================================//
7、ZY08-C循迹&红外避障综合程序程序演示 //
// 本程序主要将循迹与避障综合在一起,以实现效果:沿着黑线行走,中途遇见障
碍物后退右转这样的效果。
//---------------------------------------------------------------------//
* 平台:ZY08-C智能循迹、遥控、避障、寻光机器人 + Keil U4 + STC89C52
* 程序名称:7、ZY08-C循迹&红外避障综合程序程序
* 公司:湖南智宇科教设备有限公司
* 淘宝:http://tmmcu1688.taobao.com
* 网站:www.china-zhiyu.com
* 编写:智宇公司研发一部
* 日期:2015-1-15
* 交流:智能车QQ:1018973181
* 晶振:11.0592MHZ
* 售后技术说明:免费开源,不支持客户自己修改程序分析与改正,可以提供我公司程序说明
* 视频教程:本小车配套学习C语言详细视频教程,资料统一网盘下载
******************************************************************/
#include<at89x52.h>
#define uint unsigned int
#define uchar unsigned char
#define out P2
sbit zuo1=P0^1;
sbit zuo2=P0^0;
sbit you1=P0^3;
sbit you2=P0^2;
sbit zuod=P3^5;
sbit youd=P3^6;
sbit qiand=P3^7; //左 右 前 3个红外传感器
sbit jiao=P0^6;
sbit D1=P2^0;
sbit D2=P0^7;
uchar code ZM[]={
0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,
};
void delay(uint x)
{
uchar i;
while(x--)
for(i=0;i<123;i++);
}
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延时n ms
{
n=n+1;
while(--n)
delay_nus(900); //延时 1ms,同时进行补偿
}
void qian()
{
zuo1=0;
zuo2=1; //左边往前
you1=0;
you2=1; //右边往前
}
void hou()
{
zuo1=1;
zuo2=0; //左边往后
you1=1;
you2=0; //右边往后
}
void zuo()
{
zuo1=0;
zuo2=1; //左边往前
you1=1;
you2=0; //右边往后
}
void you()
{
zuo1=1;
zuo2=0; //左边往后
you1=0;
you2=1; //右边往前
}
void tingzhi()
{
zuo1=0;
zuo2=0; //左边往后
you1=0;
you2=0; //右边往前
}
void main()
{
while(1)
{
if(zuod==0&youd==0) //如果左右两个传感器没有检测到黑线
{
qian(); //直走
out=ZM[1];
if(qiand==0) //如果在直走的过程中遇见障碍物
{
delay(50); //延时判断是否为干扰
if(qiand==0) //不是干扰
{
jiao=0; //蜂鸣器报警
tingzhi();
delay_nms (120);
hou(); //后退半秒
out=ZM[2];
delay(500);
you(); //右转200毫秒
out=ZM[4];
delay(200);
jiao=1; //取消报警
}
}
}
if(zuod==1&youd==0) //如果左边的传感器检测到黑线
{
while(1)
{
zuo();
out=ZM[3]; //左转
D1=0;
if(zuod==0) //一直左转到传感器检测不到为止
{
D1=1;
break; //跳出循环
}
}
}
if(youd==1&zuod==0)
{
while(1)
{
you();
out=ZM[4];
D2=0;
if(youd==0)
{
D2=1;
break; //道理同上
}
}
}
}
}
//效果:沿着黑线行走 中途遇见障碍物后退右转