小车循迹程序设计与实现

需积分: 9 1 下载量 181 浏览量 更新于2024-09-11 1 收藏 45KB DOC 举报
"小车循迹程序是一种用于电子设计大赛和智能车竞赛的软件程序,其主要任务是控制小车沿着黑色轨迹行驶。程序通过读取安装在小车上的传感器信号来判断车辆的位置,并据此调整电机转速,使小车保持在轨迹上。" 在程序代码中,可以看到以下几个关键知识点: 1. **传感器使用**:小车装有两个传感器(SEN1 和 SEN2),分别检测小车左右两侧与黑色轨迹的距离。当两个传感器都感应到黑色线时,表示小车正中轨迹;如果只有其中一个传感器感应到,表示小车偏向未感应到的那一侧。 2. **电机控制**:通过改变变量 `zkb1` 和 `zkb2` 的值来调整左右电机的占空比,从而控制电机的转速和方向。例如,当小车需要向右转向时,`zkb1` 设为0,`zkb2` 设为60,表示左电机停止,右电机加速转动。 3. **标志位`flag`**:`flag` 用于检测PWM波形是否结束,它在程序中没有实际被设置,可能是预留的控制或状态检查位。 4. **I/O端口操作**:代码中使用了P0、P1、P2和P3口的一些位,如`LED1`到`LED5`用于指示小车状态,`IN1`到`IN4`用于控制电机,`ENA`和`ENB`用于电机使能,以及`IR`用于红外接收头。这些端口的定义和操作是基于51单片机的REG52头文件。 5. **延时函数`delay()`**:这个简单的延时函数通过循环计数来实现,用于在不同情况下让小车保持一定时间的当前动作,例如等待电机完成转向。 6. **逻辑判断**:根据传感器的输入,程序执行不同的逻辑分支,调整电机转速和方向。例如,如果两个传感器都检测到黑色线,小车直行;如果仅右侧传感器检测到,小车右转;反之,小车左转;如果两传感器均未检测到,小车停止并报警。 7. **定时器中断计数器`t`**:虽然在代码中未被使用,但这个变量可能与定时器中断有关,用于在定时器中断服务程序中更新电机控制或其它功能。 这个程序的核心是通过实时读取传感器数据,结合适当的电机控制策略,确保小车能够在赛道上准确、稳定地行驶。对于参与电子设计和智能车竞赛的学生来说,理解并能够编写这样的程序是非常重要的技能。