幻德科技 http://www.wonderchen.cn/
1
实验十四 红外避障
【实验目的】
1.熟悉 KEIL 的开发环境。
2.了解下载程序的方式。
3.懂得红外避障的简单原理。
【实验设备】
1.安装有 KEIL 开发环境及 STC_ISP 下载程序的 PC。
2.成套智能小车
【实验说明】
本实验通过编写程序。读取智能小车底下的左右两个红外避障
传感器及寻迹板上中间的传感器相应的值,让小车避开障碍物。
【实验步骤】
1.可以建立 KEIL 的
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
,编写控制代码,或者采用我们的参考
源代码,生成 HEX 文件。
2.下载 HEX 文件到单片机。
3.观察实验效果。
4.修改相关参数,观察实验效果。
【硬件连接】
请参考《成套智能小车组装说明书》。
【程序范例】
详细程序,请查看源代码。
幻德科技 http://www.wonderchen.cn/
2
//实验十四 红外避障
//Wonder Technology
//单片机采用 22.1184M 晶振
#include
//包含 STC12C5A 系列单片机的头文件
#include"1602.h"
sbit IROA_M=P1^5; //寻迹板中间的简单避障传感器接到 P1^5
sbit IROA_R=P1^6; //右红外避障传感器
sbit IROA_L=P1^7; //左红外避障传感器
sbit LED1=P3^0; //定义两只 LED 到 P3^0,P3^1
sbit LED2=P3^1;
sbit EN1=P2^0;
sbit IN1=P2^1;
sbit IN2=P2^2;
sbit EN2=P2^4;
sbit IN3=P2^5;
sbit IN4=P2^6;
/**************software delay****************/
void delay(unsigned long t)
{
unsigned int j,k;
for(t;t>0;t--)
for(j=10;j>0;j--)
for(k=100;k>0;k--);
}
/**************otor control program**********/
void farward() //左电机向前 右电机向前
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void backward() //左电机向后 右电机向后
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
EN1=1;
幻德科技 http://www.wonderchen.cn/
3
EN2=1;
}
void turn_left() //左电机停止 右电机向前
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void turn_right() //左电机向前 右电机停止
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_left() //左电机向后 右电机向前
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_right() //左电机向前 右电机向后
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void stop() //左电机停止 右电机停止
{
EN1=0;
EN2=0;
}
main(void)
{
LED1=1; //高电平 LED 不亮
LED2=1; //
P4SW=0xff; //定义 ALE PSEN 。。三个引脚为 P4.4 P4.5 P4.6 用于控制 1602 显示
幻德科技 http://www.wonderchen.cn/
4
屏
CLK_DIV=0x01; //系统分频工作,速度太快,1602 控制不了。
LCM2402_Init(); // 初如化 1602 显示屏
EA=1;
print(0x00,"WonderTechnology"); //在第一行第一位处从左向右打印"WonderTechnology"
字符串
print(0x40,"IROA");
farward();
while(1)
{
if(IROA_R == 0) //
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
左红外传感器状态
{
print(0x4f,"0");
turn_left();
}
else if(IROA_M == 0) //检测左红外传感器状态
{
print(0x4e,"0");
turn_left();
}
else if(IROA_L == 0) //检测左红外传感器状态
{
print(0x4d,"0");
turn_right();
}
else
{
print(0x4d,"111");
farward();
}
delay(50);
}
}
【实验结果】
下载范例的程序,可以在一块场地上,放置一些障碍物,如纸
杯,尽可能采用容易反光的物体,不建议采用黑色物体,因为黑色物
体会吸收红外光线不容易反射。
可以看到智能小车会避开障碍物。
幻德科技 http://www.wonderchen.cn/
5
【实验扩展】
1. 可以改变采样到传感器的值修改相应的动作,如中间传感器
检查到障碍物,可以先让小车向后退后一下,再执行转转弯。
2.更多效果自己修改参数并验证。