摘 要
本系统以设计题目的要求为目的,采用51单片机为控制核心,利用红外线传感器进行寻线,控制电动小汽车的自动循迹,并再通过光电开关探测障碍,从而控制电机转向,实现进行壁障功能。整个系统的电路结构简单,可靠性能高,实验测试结果满足要求。本文着重叙述了该系统的硬件设计方法、软件设计方法及测试结果分析。小车运行方案,在现有玩具电动车的基础上,加装红外线光电开关模块和红外寻线模块,实现对电动车位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
关键词:51单片机、红外线传感器、光电开关、小车
一、硬件方案
硬件构成:单片机+最小系统+L293D电机驱动模块+稳压电路+按键电路+红外避障电路+红外遥控电路+红外循迹电路
二、设计功能
本设计基于单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
1.开机默认红外遥控模式,通过遥控器上的前后左右可以调节行驶方向。
2.按下2键切换为红外避障模式,单侧遇到障碍物转动躲避,双侧均有障碍物向后旋转掉头躲避;
3.按下3键为红外循迹模式,循迹过程中如果红外避障探头检测到有障碍物,小车会停止前进。
4.遥控器左上角的红色按键可以让小车停止运行,并切换为红外遥控模式。
三、成品实物图
四、原理图
五、PCB图
六、程序源码
部分代码:
if(f==1)
{
if(Tc>Inum1&&Tc<Inum3)
{
Im[m/8]=Im[m/8]>>1|0x80; m++;
}
if(Tc>Inum2&&Tc<Inum1)
{
Im[m/8]=Im[m/8]>>1; m++; //取码
}
if(m==32)
{
m=0;
f=0;
if(Im[2]==~Im[3])
{
IrOK=1;
}
else IrOK=0; //取码完成后判断读码是否正确
}
//准备读下一码
}
}
/************************************************************************/
//全速前进
void run(void)
{
Left_moto_go ; //左电机往前走
Right_moto_go ; //右电机往前走
}
//全速后退
void backrun(void)
{
Left_moto_back ; //左电机后退
Right_moto_back ; //右电机后退
}
//右转
void rightrun(void)
{
Left_moto_go ; //左电机前进
Right_moto_Stop ; //右电机停止
}
//左转
void leftrun(void)
{
Left_moto_Stop ; //左电机停止
Right_moto_go ; //右电机前进
}
//STOP
void stoprun(void)
{
Left_moto_Stop ; //左电机停止
Right_moto_Stop ; //右电机停止
}
//向右原地打转(掉头)
void rightspin(void)
{
Left_moto_go ; //左电机往前走
Right_moto_back ; //右电机往前走
}
/*********************************************************************/
/*--主函数--*/
void main(void)
{
m=0;
f=0;
IT0=1;
EX0=1;
TMOD=0x11;
TH0=0;
TL0=0;
TR0=1;
EA=1;
yk=1;
bz=0;
xj=0;
delay(100);
while(1) /*无限循环*/
{
if(IrOK==1) //如果处理好后进行红外处理
{
switch(Im[2])
{
case 0x0C: yk=1;bz=0;x
资料包括:
需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。
纷传点击用微信打开即可,过程有点繁琐请见谅。