- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
循迹小车项目训报告
寻迹小车的设计与制作实训报告
课程名称: C51程序设计 EDA技术
专业班级: 应电0935班
指导老师: 方跃春 谭刚林
小组成员: 黄春桥 汤政
孙巍明 阳毅
实训项目要求与目的
实训要求:
1、学会单片机的功能设计与任务分析,能进行不同功能模块的电路的设计和控制程序的编译。
2、掌握单片机软硬件系统和基于单片机的电子产品设计方法及简单人工智能的实现方法。
3、熟悉电子信息类企业项目完整的运作过程及管理规范,能制定单片机控制类电子产品的设计方案;具备团队协作能力、沟通能力、创新能力和组织能力。
实训具体内容:
1、自行设计、制作寻迹电路板;
2、采用所制作的寻迹电路板、控制板(即单片机_FPGA综合实训板)与实验室提供的小车车体(也可用自己的小车车体)搭建寻迹小车;
3、编写C语言程序,使小车寻迹行驶和遇停止标志自动停止功能。
4、完成综合设计报告。
5、完成除寻迹行驶、遇停止标志自动停止功能之外的发挥功能(发挥功能考核时加分)。
二、 方案设计(光敏电阻法)
1、任务分析:寻迹小车是指制作的小车在地板白纸上循黑线前进,提供了两种常用寻迹检测电路设计方法,而我们采用的是光敏电阻法,采用二极管和光敏电阻,该方案的缺点就是易受到外界光源的干扰,有时检测不到黑线。本次设计我们运用了前期做的FPGA板作为小车控制电路板,路面黑线检测使用的是光敏电阻检测法,通过单片机的作用控制小车的驱动模块,控制前进和转向。遇到障碍物自动停下。通过小组合作,完成各部分电路硬件系统的设计、制作和装配调试,如寻迹板的设计与制作,小车与各模块的搭建,软件系统设计如C语言程序代码的撰写,再做一个整的调试。
2、 功能说明:寻迹电路检测黑线,利用光敏照到板上反射,由于黑线和白纸的反射系数不同,导致光敏电阻值产生变化,通过电压比较器将光敏电阻变化量转变成脉冲量。用单片机_FPGA板作为控制板,主要是根据寻迹信号控制前进方向和转向。编写进C语言程序进行控制,直流电机驱动。整个电路分为三部分,分为检测、控制、驱动。如下图:
具体功能实现:(1)基本要求:实现小车的前进后退,左转右转(按照程序预设)。
(2)扩展部分:实现小车自动循迹功能,避障功能。
硬件系统设计
循迹检测部分
光敏电阻法寻迹板电路图
图中D61……发光二极管,R61是其限流电阻。R611是光敏电阻,阻值随光照强度变化而变化。LM339是电压比较器,74LS14:施密特触发器,对LM339输出的脉冲量进行整形。L61是输出电平指示灯。
寻迹小车底板---控制板
包括电机驱动电路、切换电路、最小单片系统、数码管显示、LED驱动电路、开关量输入电路、按键电路、扩展接口、核心板接口、电源电路。
单片机最小系统电路:
按键电路;
电机驱动电路
电源电路
软件系统设计
程序流程图:
P1检测
7
6
5
4
3
2
1
0
状态
1
1
1
1
1
0
0
1
前进
1
1
1
1
1
0
1
1
左转
1
1
1
1
0
0
1
1
左转
1
1
1
1
0
1
0
1
左旋
1
1
1
1
1
1
0
1
右转
1
1
1
1
1
1
0
0
右转
1
1
1
1
1
1
1
0
右旋
1
1
1
1
1
1
1
1
后退
P2口驱动
7
6
5
4
3
2
1
0
状态
0
1
0
1
0
1
0
1
前进
1
0
0
1
0
1
0
1
左转
1
0
0
1
0
1
0
1
左转
0
1
1
0
0
1
0
1
左旋
0
1
0
1
1
0
0
0
右转
0
1
0
1
1
0
0
0
右转
0
1
0
1
0
1
1
0
右旋
1
1
1
0
1
1
1
0
后退
流程图:
启动P1端口检测P2端口驱动
启动
P1端口检测
P2端口驱动
返回
当P1口输入数据非程序中所述
C语言程序代码:
#includereg52.h
#define uint unsigned int
#define uchar unsigned int
void delay(uint x)
{
uint m,n;
for(m=1;mx;m++)
for(n=1;n121;n++);
}
void main(void)
{
delay(3000);
P1=0xff;
P2=0x55;
delay(800);
while(1)
{
P1=0xff;
switch(P1)
{
case 0xf9:
P2=0x55
文档评论(0)