河北化工医药职业技术学院毕业论文
图3.5 直流电机原理图
主控电路如图3.6所示。
图3.6主控电路
11
基于单片机的智能小车设计
第4章 软件功能程序及分析
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。硕癘鄴颃诌攆檸攜驤蔹。 在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。阌擻輳嬪諫迁择楨秘騖。 为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:氬嚕躑竄贸恳彈瀘颔澩。 (1)单个模块比起一个完整的程序易编写及调试;
(2)模块可以共存,一个模块可以被多个任务在不同条件下调用; (3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。 4.1主程序框图
启动 避障 循迹 N N 是否检测到障碍 是否检测到停止线 Y Y
停止
图4.1 主程序框图
12
河北化工医药职业技术学院毕业论文
4.2循迹模块
循迹框图如图4.2所示。
开始 前进 扫描I/O口,是否检测到黑线 N Y 左转 左边 右 右转
图4.2 循迹框图
循迹程序:
void fun1() //循迹子程序 {
if(P25==1&&P26==0&&P27==1) //直走 P11是车前 P10 是车后 dr=1;
if(P25==0&&P26==1&&P27==1) //左拐 dr=2;
if(P25==1&&P26==1&&P27==0) //右拐 dr=3;
if(P10==0||P11==0) //进入壁障标志口 dr=4;
switch(dr) {
case 1:P14=0,P15=1,P16=0,P17=1;break; //直走 case 2:P14=1,P15=0,P16=0,P17=1;break; // 左拐 case 3:P14=0,P15=1,P16=1,P17=0;break; //右拐 P14,P15,控制左电机釷鹆資贏車贖孙滅獅赘。 13
基于单片机的智能小车设计
case 4:yy=1; } }
4.3避障模块
避障框图如图4.3所示。
左、右或无障碍 小车进入避障模式 传感器全部检测到黑线 前右有障碍物 前左有障碍物
小车左走 小车直行 小车右走 Y 小车直行
图4.3 避障框图
避障程序:VOID FUN2()//壁障子程序 {
if(P10==0&&P11==1&&P12==0) // 两边测 直走 {
P14=0,P15=1,P16=0,P17=1; }
if(P10==0&&P11==0&&P12==1) // 左中测 右走 {
P14=1,P15=0,P16=0,P17=1;//左拐 delay(1000); }
if(P10==1&&P11==0&&P12==0) //右中测 左走
14
河北化工医药职业技术学院毕业论文
{
P14=0,P15=1,P16=1,P17=0; //右拐 delay(1000); }
if(P10==0&&P11==0&&P12==0) //全测到 直走 {
P14=0,P15=1,P16=0,P17=1; //直走 }
if(P10==0&&P11==1&&P12==1) {
P14=0,P15=1,P16=0,P17=1;//直走 }
if(P10==1&&P11==1&&P12==0) {
P14=0,P15=1,P16=0,P17=1; //直走 }
if(P25==0&&P26==0&&P27==0) //车停 {
P14=1,P15=1,P16=1,P17=1; TR0=0; } }
15