2014课程设计报告巡线小车(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息工程学院
课程设计报告
设计题目:智能寻线小车
名称:电子信息专业综合课程设计
班级:电子1203班
姓名:操圆圆(2012013748)
陈龙(2012013750)
设计时间: 至
指导教师:
评语:
评阅成绩: 评阅教师:
一、课程设计的性质和目的
通过课程设计,进行硬软件设计的方法和技能训练,巩固在课堂上学到的有关硬件电路设计和相应程序设计的基本知识和基本方法,通过具体课题的训练,达到能独立阅读、查阅资料、软硬件设计和调试完善特定功能的目的。
二、课程设计的要求
1、遵循硬件设计模块化。
2、要求通过自制PCB板、或万能板、或面包板设计实物。
3、程序设计结构化。
4、要求程序结构合理,程序简明易懂,有必要的注释。
三、主要仪器设备及软件
PC机、Keil软件、、ALTIUM DESINGERS09(PROTEL99)、Proteus绘图软件及仿真等。
四、课程设计题目及要求
课程设计题目:智能巡线小车
实现功能:以STC12C5A60S2为主控制器,小车需能实现左右转弯,并能自动巡线和避障等功能,并能够实现原路返回。(扩展项:实现自动寻火灾,并实现扑灭功能)
地点:信息工程学院实验室
时间安排:星期三上午综合楼202、星期四上午综合楼207、星期五上午综合楼202 元器件领用:由指导老师签字在行政楼301领取,本项目仅领取一辆自带L298芯片的模型小车,其余器件均是自备。
五、课题分析及设计思路
硬软件设计思路:
1、路面检测电路:如图一所示,选取红外传感器TCRT5000,遇到白光OUT引脚为低电
平,遇到黑光OUT引脚为高电平,可以通过单片机识别。
2、主控制芯片电路:如图二所示,主控制芯片选择STC12C5A60S2,该芯片负责检测红
外传感器状态并控制电机完成对直流电机PWM调速任务。
3、电源电路:使用4节1.5V电池对单片机及电机供电。
4、电机驱动电路:如图三所示,采用L298N芯片作为电机驱动电路的主要原件。1片
L298N能驱动2个电机转动,其中6、11号引脚为2个使能端;5、7号引脚和10、12号引脚分别控制2个电机的转向。将上诉的6个引脚通过非门与单片机相连.便
可实现2个电机各自的起停和转向的变换。
图一
图二
图三
5、 ○1硬件设计框图
○2硬件设计电路图(按模块设计)
软件设计思路:
○1软件功能规划
巡线小车的软件是基于Kiel C编程环境,使用C语言进行编程,实现通过红外传感器识别路面黑线,并能通过L2980驱动电机运转,实现小车前进,转弯,停止的功能。
○2寻线小车主程序流程图如下:
六、程序主要代码与分析(关键代码要有注释):
#include
sbit P13=P2^4;//使能端
sbit P14=P2^5;
sbit P10=P1^0; //循迹口
sbit P11=P1^1;
sbit P12=P1^2;
sbit P04=P2^0; //电机 1
sbit P05=P2^1;
sbit P06=P2^2; //电机 2
sbit P07=P2^3;
unsigned int i=0,j=0;
void main()
{ P13=1;
P14=1;
while(1)
{ P04=1;P05=0;P06=1; P07=0;
TMOD=0X01;
EA=1;
ET0=1;
if(P10==0&&P11==1&&P12==0) // 小车直走定时 0.002ms
{ TH0=0XFF; //定时 0.01ms
TL0=0xFe;
TR0=1;
}
if(P10==0&&P11==0&&P12==1) //小车右转
{ TH0=0XFF;
TL0=0Xfb;
TR0=1;
}
if(P10==1&&P11==0&&P12==0) //小车左转
{ TH0=0XFF;
TL0=0XFb;
TR0=1;
}
if(P10==1&&P11==1&&P12==1) //全部检测到黑线时车停
{ TH0=0XFF;
TL0=0Xfb;
TR0=1;
}}}
xiong() interrupt 1
{ if(P10==0&&P11==1&&P12==0)//小车直线快走定时 0.002ms { TH0=0XFF;
TL0=0xFe;
P04=0; //电机 1 左轮
P05=1;
P06=1; //电机 2 右转
P07=0;
}
if(P10==0&&P11==0&&P12==1) //小车右转
{ TH0=0XFF;
TL0=0Xfb;
P04=1; //电机 1
P05=1;
P06=1;//电机 2
P07=0;
i=1;
}
if(P10==0&&P11==0&&P12==0&&i==1)// 特别
{ TH0=0XFF;
TL0=0Xfb;
P04=1;
P05=1;
P06=1;
P07=0;
j=0;
}
if(P10==1&&P11==0&&P12==0)//小车左转
{ TH0=0XFF;
TL0=0XFb;
P04=0;//电机 1
P05=1;
P06=1;//电机 2
P07=1;j=1;
}