四川工程职业技术学院
单片机应用技术课程电子教案
Copyright ? Http://mcu.scetc.net
第 讲 11
汇编语言程序设计案例 2— 障碍物检测
Copyright ? Http:// mcu.scetc.net 2 SiChuan Engineering Technical College-1959
本讲主要内容,
11-1,智能小车障碍检测原理
11-2,智能小车障碍检测硬件实现
11-3,智能小车障碍检测软件实现
11-4,课后思考和实验准备
Copyright ? Http:// mcu.scetc.net 3 SiChuan Engineering Technical College-1959
11-1,智能小车障碍检测原理
? 智能小车障碍检测原理示意图
障碍物
红外发射模块
红外接收模块
小车
红外线信号
Copyright ? Http:// mcu.scetc.net 4 SiChuan Engineering Technical College-1959
11-2,智能小车障碍检测硬件实现
? 红外发射模块硬件电路
? 红外接收模块电路
38KHz载
波信号
Copyright ? Http:// mcu.scetc.net 5 SiChuan Engineering Technical College-1959
11-2,智能小车障碍检测硬件实现
? 红外发射模块硬件电路分析
? 电路中 U1A和 C2,R2组成振荡器,振荡频率约 38KHz。
? U1D用于对 D1是否发光进行控制,当 U1D的输入端位高电平时,其
输出端为低电平,D1可以导通,相反则 D1不能导通,因此只要控制
U1D输入端的状态就可以控制 D1是否发射红外线。
? R1的大小就可以调整 D1发射的红外线的强度,可以改变红外传感器
的作用距离。
? 红外接收模块电路分析
? U1是专用红外接收芯片,其 3脚是输出端。当接收芯片收到 38KHz的
红外信号后(接收模块的响应时间为 160uS),其 3脚输出低电平;
没接收到反射的红外信号时输出高电平。
Copyright ? Http:// mcu.scetc.net 6 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 软件思路
? 在实际运用中,由于红外传感器容易受到外界的干扰,在软件设计
时,必须考虑相应的抗干扰措施。在该应用中采用以下的抗干扰方
法:发射模块发射一定数量的脉冲,接收端记录接收到的脉冲个数,
根据所记录的脉冲个数判断是否有障碍物。
? 实现方法:发射模块连续发射 10个脉冲,如果接收模块接收到的脉
冲数目大于 6,则判定前方有障碍物。
Copyright ? Http:// mcu.scetc.net 7 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 程序流程
是否接收到反射信号
起动发射模块
Y
开始
设定发送脉冲数
接收寄存器清 0
延时 160uS
脉冲数目加 1
停止发射
延时 160uS
N 是否发射 10次
脉冲数是否 >=6?
有障碍物 无障碍物
Y
N
Y
N
Copyright ? Http:// mcu.scetc.net 8 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 单片机硬件资源分配
? 单片机 I/O口分配
红外发射传感器发射控制信号, P3.2
红外接收传感器返回信号端, P1.3
? 单片机寄存器分配
发送脉冲数目控制单元, R0
接收脉冲数目存放单元, R1
160uS延时程序寄存器, R2
Copyright ? Http:// mcu.scetc.net 9 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 程序关键点
? 1次红外信号的检测
SETB P3.2 ;发射模块起动,开始发射红外线
LCALL DEL160US ;延时 160US
JB P1.3,LOOP1 ;判断是否有信号,低电平有反射。
INC R1 ;脉冲数目加 1
LOOP1,CLR P3.2 ;发射停止
LCALL DEL160US
? 160uS延时程序
DEL160US:MOV R2,#40
DEL0:NOP
NOP
DJNZ R2,DEL0
RET
Copyright ? Http:// mcu.scetc.net 10 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 程序关键点
? 发送 10个脉冲的控制
MOV R0,#10
LOOP0,…… ;发射一个脉冲,检测一次是否有反射
DJNZ R0,LOOP0
……
? 利用脉冲数目进行的障碍物检测
CJNE R1,#06,LOOP2 ;判断收到的脉冲个数是否大于等于 6
LOOP2,JC LOOP3
MOV P0,#0F9H ;接收的脉冲大于等于 6,有障碍物,显示, 1”
……
LOOP3,MOV P0,#0C0H ;接收的脉冲小于 6,没有障碍物, 显示, 0”
……
Copyright ? Http:// mcu.scetc.net 11 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 程序清单
ORG 0000H
MAIN,CLR P3.2 ;关闭发射模块
MOV R0,#10 ;设定为发送 10个脉冲
MOV R1,#00 ;接收寄存器清零
LOOP0,SETB P3.2 ;发射模块起动
LCALL DEL160US ;延时 160US
JB P1.3,LOOP1 ;判断是否有信号, 当为低电平时有反射 。
INC R1 ;脉冲数目加 1
LOOP1,CLR P3.2 ;发射停止
LCALL DEL160US
DJNZ R0,LOOP0 ;判断是否 10个脉冲发送结束
CJNE R1,#06,LOOP2 ;判断收到的脉冲数目是否大于等于 6
LOOP2,JC LOOP3
Copyright ? Http:// mcu.scetc.net 12 SiChuan Engineering Technical College-1959
11-3,智能小车障碍检测软件实现
? 程序清单(续)
MOV P0,#0F9H ;接收的脉冲大于等于 6,认为有障碍物,显示,1”
SJMP MAIN
LOOP3,MOV P0,#0C0H ;接收的脉冲小 6,认为没有障碍物,显示, 0”
SJMP MAIN
DEL160US,MOV R2,#40 ;设定循环次数 40次
DEL0,NOP
NOP
DJNZ R2,DEL0
RET
END
Copyright ? Http:// mcu.scetc.net 13 SiChuan Engineering Technical College-1959
11-4,课后思考和实验准备
? 课后思考
? 障碍物检测硬件电路实现方法;
? 障碍物检测的软件流程(红外信号的发射与反射检测软件实现方
法);
? 障碍物是否存在的软件判断方法;
? 思考如何判断障碍物的方位。
? 实验准备
? 利用实验电路图,进行 I/O分配;
? 完成实验的各项预习任务。