利用延时函数控制电机转动时间。
4软件设计
41总体软件流程图
小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片IO口,一旦检测到某个IO口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。软件的主程序流程图如图41所示:
f开始
系统初始化
判断小车位置
循迹子函数
N
是否完成本次任务?
Y
图41主程序流程图
42小车循迹流程图
我们使用的红外线传感器安有五个探头,可以很好的提高小车的灵敏度。五个探头从左至右依次为S1S2S3S4S5。黑线略宽于S2S3S4的长度和,但小于五个探头的长度。当中间三个检测到黑线时,小车走直线。当小车偏离轨道时,即S2S3为黑线,S4S5为白线(或S3S4为黑线,S1S2为白线),小车进行向左(向右)调整。当小车遇到转弯(小角度)或偏离程度过大时,即S1为黑线S2为白线(或S5为黑线,S4为白线),小车向左(向右)转弯。当小车遇到转弯(大角度)时,即S1,S2为黑线,S3,S4,S5为白线(S4,S5为黑线,S1,S1,S3为白线)时,小车圆周左转(圆周右转)。根据跑道情况,设置了当五个探头全黑时,小车圆周右转。为防止小车因速度过大冲出跑道无法找回跑道,设计了当五个探头检测到全白时,小车停止一段时间(防止电机由正转变为反转时,无法反应),然后后退到黑线上继续行进,这样可以提高小车的稳定性和可靠性,有效的防止了小车在轨道转弯过大时冲出弯道或原地打转。
f启动循迹模式
探测黑线
N
是否检测到黑线Y判断处理程序
圆周左转Circleleft
左转Tur
left
向左调整Correctleft
向右调整Correctright
右转Tur
right
圆周右转Circleright
后退
继续前进
图42循迹流程图
43单片机测序
i
cludereg52hdefi
eui
tu
sig
edi
tdefi
eucharu
sig
edcharsbitIN1P10控制左电机前进sbitIN2P11控制左电机后退sbitIN3P14控制右电机前进sbitIN4P15控制右电机后退sbitLED1P26定义LED灯sbitLED2P27sbitS1P32此处是传感器管脚位声明sbitS2P33sbitS3P34
fsbitS4P35sbitS5P36sbitBEEP0xecexter
u
sig
edcharg_motoCou
terexter
bdatau
sig
edcharg_trackResultui
tgate0ucharpos0xdf0xef0xf70xfb0xfd0xfeucharseg_data0xc00xf90xa40xb00x990x920x820xf80x800x90ucharg_hourg_mi
g_secucharg_msec0延时函数,在12MHz的晶振频率下大约50us的延时voiddelay_50usui
ttucharjfort0tforj19j0jvoidgo小车前r