基于单片机控制的循迹小车设计毕业设计 下载本文

第三节 主控电路

本模块主要是对采集信号进行分析,用单片机控制电机速度,起停。以及再检测到障碍报警等作用。其电路图如图3.5。绽萬璉轆娛閬蛏鬮绾瀧。

图3.5主控电路

13

第四章 软件设计

在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。为了完成上述任务,在进行软件设计时,通常把过程分为若干个部分,每一部分叫做一个模块。骁顾燁鶚巯瀆蕪領鲡赙。 根据总体设计的思想及本系统实现的功能,在设计中完成以下功能。 1、循迹模块主程序:由是否遇到黑线,测到光源,测到挡板产生信号的操作,信号返回到单片机,再通过单片机来实现相应的功能。瑣钋濺暧惲锟缟馭篩凉。 2、电机驱动模块主程序:主要用来控制两个直流减速电机,实现前进、后退、前左转、前右转、后左转、后右转、停止等功能。鎦诗涇艳损楼紲鯗餳類。 第一节 小车运行主程序流程图

启动 避障 循迹 N 是否检测到障碍 是否检测到黑线 Y N Y 停止 图4.1主程序框图

14

第二节 电机驱动程序

void goahead() { s1=1; s2=0; s3=1; s4=0; }

void goback() { s1=0; s2=1; s3=0; s4=1; }

void turnleft() { s3=1; s4=0; }

void turnright() { s1=1; s2=0; } void stop {

1 5

en1=0; en2=0; }

第三节 循迹模块

当小车循迹时,偏离循迹曲线时,偏离曲线调整子程序如图4.2所示:

图4.2循迹子程序

循迹程序

void xunji() {

if ((left_red)=1)&(right_red=1)) { en1=1; en2=1; goahead();

16

delay(150); en1=0; en2=0; delay(50); }

else if((left_red=0)&(right_red=1)) { en1=0; en2=1; p0_0=!p0_0; turnleft(); delay(150); en1=1; en2=0; delay(50); }

else if((left_red=1)&(right_red=0)) { en1=1; en2=0; P0_1=!p0_1; turnright(); delay(150); en1=0; en2=1; delay(50); } else

17