小车巡线实训报告.docx
- 文档编号:10860385
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:30
- 大小:109.85KB
小车巡线实训报告.docx
《小车巡线实训报告.docx》由会员分享,可在线阅读,更多相关《小车巡线实训报告.docx(30页珍藏版)》请在冰点文库上搜索。
小车巡线实训报告
四川工程职业技术学院
微机原理与接口技术专用周报告
(小车巡线)
摘要
本文阐述了小车寻线的设计思路及在设计中遇到问题的处理方法,在这个项目中我们要求小车按照我们设计的跑道在上面跟着我们铺置的黑线前进。
为了能让小车在我们指定的跑道上前进我们在小车上安装了三个传感器,这样我们就可以根据判断传感器的感应值编出程序使车根据传感器的方位感应从而做出相应的运动。
在本项目中主要就8051单片机的编程及硬件电路的综合应用,根据8051单片机的编程再经过小车硬件电路的调试从而使小车能在我们设定的跑到上行走。
经过我们的两周的努力我们做出了最终的结果但在运行的时候还是有点问题,在十字路和在直线距离较短的直角转弯时小车有时会转过,有时又会冲出跑道,但经过我们的不断改进最后基本上解决了这一问题。
关键词:
项目设计的方案阐述;硬件描述;程序设计说明;总体功能说明。
第1章、项目设计整体方案阐述
1、要求
本专用周的开设以锻炼和提高我们的单片机应用能力为目的,在实际的课题设计中以锻炼我们的以下方面的能力:
单片机硬件电路的基本设计方法;
单片机简单接口电路的设计(显示器接口,传感器接口等)
简单应用程序的编写和调试;
简单控制方法的设计和相应程序的设计方法;
培养我们的专业创新能力;
要求我们能使小车在指定的跑道上顺利跑完全程;
在设计的过程中出现的问题能相应的解决;
2、课题介绍
这次的小车寻线实验是通过一个8位的单片机P89V51RD2FA来指挥小车按照我们设定的跑道上运行,主要原理是由声控使小车开始驱动,然后通过三个传感器来判断黑线的方位从而做出相应的运动,最后小车能成功的绕跑道走一圈就算成功。
下面就来简单的介绍下单片机P89V51RD2FA:
P89V51RD2FA是Philips公司生产的一款80C51微控制器,包含64KBFlash和1024字节的数据RAM。
P89V51RD2FA的典型特性是它的X2方式选项。
利用该特性,设计者可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的吞吐量。
从该特性获益的另一种方法是将时钟频率减半来保持特性不变,这样可以极大地降低EMI。
Flash程序存储器支持并行和串行在系统编程(ISP),ISP允许在软件控制下对成品中的器件进行重复编程。
应用固件的产生/更新能力实现了ISP的大范围应用。
5V的工作电压,操作频率为0~40MHz。
4、小车寻线的跑道图
3、项目设计的解决方案
(1)、专用周开始的时候我们开始讨论如何让设计程序并画出了简单的流程图。
(2)、在小车寻线的设计中我们用了三个传感器,分别接收左、中、右检测结果并分析。
方式
中
右
左
A值
运动方式
显示
0
0
0
0
0
前进
F
1
0
0
1
1
右直转
2
2
0
1
0
2
左直转
1
3
0
1
1
3
前进
F
4
1
0
0
4
前进
F
5
1
0
1
5
右转
3
6
1
1
0
6
左转
L
7
1
1
1
7
前进
F
。
(3)、进行传感器的检测与传感器接收数据的处理并列出表格进行分析。
(4)、运用标志位进行我们将传感器接收到的数据存在20H单元格中的00H(左边检测结果),01H(右边检测结果),02H(中间检测结果)
(5)、屏蔽掉20H的高5位并将其值赋给累加器。
(6)、根据判断累加器的值来控制小车的运动状态。
4、程序流程图
第2章、硬件功能描述
巡线系统的主要硬件功能:
单片机,3个传感器,声控,显示,驱动等。
1、单片机系统原理图
单片机系统是整个巡线项目的核心部件,在对红外线接收起到调节作用,通过单片机口P3.6,P3.7,P2.3,对三个传感器接收的数据尽心分析比较,通过比较后做出相应的驱动和显示。
P89V51RD2是Philips公司生产的一款80C51微控制器,包含64KBFlash和1024字节的数据RAM。
P89V51RD2的典型特性是它的X2方式选项。
利用该特性,设计者可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的吞吐量。
从该特性获益的另一种方法是将时钟频率减半来保持特性不变,这样可以极大地降低EMI。
Flash程序存储器支持并行和串行在系统编程(ISP),ISP允许在软件控制下对成品中的器件进行重复编程。
应用固件的产生/更新能力实现了ISP的大范围应用。
5V的工作电压,操作频率为0~40MHz。
2、驱动电路原理图
通过单片机对传感器送入的信号做出判断后做出相应的反应。
驱动有前进驱动,左直转驱动,右直转驱动,左转驱动,右转驱动。
驱动采用PWM调速系统,针对不同角度,不同的方向。
采用不同的PWM调速驱动部分主要由4个晶体管和电动机组成,构成了一个H桥
硬件电路分析
当左侧电机需要前进时,L-端保持为“1”,电机的转动速度由L+端的占空比决定;
当左侧电机需要后退时,L+端保持为“1”,电机的转动速度由L-端的占空比决定;
当右侧电机需要前进时,R-端保持为“1”,电机的转动速度由R+端的占空比决定;
当右侧电机需要后退时,R+端保持为“1”,电机的转动速度由R-端的占空比决定。
3、传感器检测部分原理图
三个接收传感器的检测信号传送到单片机进行处理。
传感器是由三个传感器分别接在小车的正前方、左前方、右前方。
他们的作用是通过自己的发送红外线,再来通过自己是否接收到自己发送的红外线,来判断是否自己所检测的方向上有障碍物,我们这次所使用的传感器的反映主要是反映在数码管上:
0为未检测到,1为检测到
方式
中
右
左
A值
运动方式
显示
0
0
0
0
0
前进
F
1
0
0
1
1
右直转
2
2
0
1
0
2
左直转
1
3
0
1
1
3
前进
F
4
1
0
0
4
前进
F
5
1
0
1
5
右转
3
6
1
1
0
6
左转
L
7
1
1
1
7
前进
F
第3章、程序设计分模块说明
1、主程序
ORG0000H
SJMPMAIN
ORG001BH;定时入口
SJMPSEPT0
ORG0030H
MAIN:
JBP3.2,MAIN
SETBP3.7
SETBP3.6
SETBP2.3
CLRP1.0
MOV20H,#00H
MOVTMOD,#12H
MOVCMOD,#04H
MOVTH1,#3CH
MOVTL1,#0B0H
MOVTH0,#156
MOVTL0,#156
SETBEA
SETBET1
SETBTR1
SETBTR0
LCALLGO
MOVP0,#71H
X:
LCALLLEFT
LCALLRIGHT
LCALLZHONG
LCALLDECIDE
LJMPX
★采用外部声控中断
(1)、程序入口
(2)、接收端口置1
(3)、中断初始化
(4)、PWM调速初始化
(5)调用左边检测
(6)、调用右边检测
(7)、调用中间检测
(8)、调用判断
2、传感器接收模块
LEFT:
JNBP3.7,WU;左边检测子程序
SETB00H
RET
WU:
CLR00H
RET
RIGHT:
JNBP2.3,WU1;右边检测子程序
SETB01H
RET
WU1:
CLR01H
RET
ZHONG:
JNBP3.6,WU2;中间检测子程序
SETB02H
RET
WU2:
CLR02H
RET
3、判断程序
DECIDE:
MOVA,20H;判断
ANLA,#07H
CJNEA,#00,BJ1
LCALLGO
MOVP0,#71H
RET
BJ1:
CJNEA,#01,BJ2
LCALLRIGHT_L
MOVP0,#25H
RET
BJ2:
CJNEA,#02,BJ3
MOVP0,#9FH
LCALLLEFT_L
RET
BJ3:
CJNEA,#03,BJ4
LCALLGO
MOVP0,#71H
RETBJ4:
CJNEA,#04,BJ5
LCALLGO
MOVP0,#71H
RETI
BJ5:
CJNEA,#05,BJ6
LCALLR
MOVP0,#0DH
RET
BJ6:
CJNEA,#06,BJ7
LCALLLL
MOVP0,#0E3H
RET
BJ7:
LCALLGO
MOVP0,#71H
RET
(1)、判断A值:
0,3,4,7为前进
(2)、判断A值:
2为右直转
(3)、判断A值:
1为左直转
(4)、判断A值:
5为右转
(5)、判断A值:
6为左转
4、驱动程序
LEFT_L:
LCALLSTOP
LCALLDEL;驱动左直转
MOVCCAPM1,#00H
MOVCCAPM4,#00H
MOVCCAPM2,#42H
MOVCCAPM3,#42H
MOVCCON,#40H
MOVCCAP2H,#125
MOVCCAP3H,#115
RET
RIGHT_L:
LCALLSTOP
LCALLDEL;右直转
MOVCCAPM2,#00H
MOVCCAPM3,#00H
MOVCCAPM1,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP4H,#125
MOVCCAP1H,#115
RET
RIGHT_P:
LCALLSTOP;右偏
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#30
MOVCCAP4H,#30
RET
LEFT_P:
LCALLSTOP;左偏
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#30
MOVCCAP4H,#30
RET
R:
LCALLSTOP;右转
MOVCCAPM2,#00H
MOVCCAPM3,#00H
MOVCCAPM1,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP1H,#120
MOVCCAP4H,#130
RET
L:
LCALLSTOP;左转
MOVCCAPM1,#00H
MOVCCAPM4,#00H
MOVCCAPM2,#42H
MOVCCAPM3,#42H
MOVCCON,#40H
MOVCCAP2H,#125
MOVCCAP3H,#115
RET
STOP:
SETBP1.4
SETBP1.5
SETBP1.6
SETBP1.7
RET
GO:
LCALLSTOP;前进
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#28
MOVCCAP4H,#28
RET
(1)、LEFT_L:
左直转
(2)、RIGHT_L:
右直转
(3)、LEFT_P:
左偏
(4)、RIGHT_P:
右偏
(5)、R:
右转
(6)、L:
左转
(7)、GO:
前进
(8)、STOP:
停止
5、巡检模块
SEPT0:
MOVTH1,#3CH;巡检
MOVTL1,#0B0H
CJNEA,#1,DJ1
LCALLRIGHT_P
MOVP0,#0DH
RETI
DJ1:
CJNEA,#4,NEXT
LCALLLEFT_P
MOVP0,#99H
NEXT:
RETI
第4章、整体功能说明
在这次项目设计中我们这组采用与其他组不同的设计方式来实现小车的寻线功能,主要表现在以下几点:
(1)、我们通过P3.2来实现声控功能,这样可以避免在小车还没有上跑道的时候是静止不动的,同时也可以节约小车的电让我们能更好的去控制小车。
(2)、我们先通过判断传感器传回的数据再来判断小车的运动情况。
如当中、右两个传感器都检测到黑线时我们就让驱动右直转,当右检测到黑线的时候我们就让小车右转,左边传感器检测到黑线我们就让其左转。
左、中检测到黑线我们就让其左直转。
(3)、在程序设计中我们还加入了定时巡检这样可以使小车在行驶的时候更平稳,从而不至于走出跑道。
(4)、在运动的过程中我们还加入了显示这样可以很好的判断出小车的状态,加了显示在小车没有电带不动驱动调试的时候就能显现出它的优势了,在小车带不动驱动我们调试的时候可以根据相应的显示判断出小车的运动状态,从而进行调试。
第5章、附录
1、程序清单
CCONDATA0D8H
CMODDATA0D9H
CCAPM0DATA0DAH
CCAPM1DATA0DBH
CCAPM2DATA0DCH
CCAPM3DATA0DDH
CCAPM4DATA0DEH
CLDATA0E9H
CCAP0LDATA0EAH
CCAP1LDATA0EBH
CCAP2LDATA0ECH
CCAP3LDATA0EDH
CCAP4LDATA0EEH
CHDATA0F9H
CCAP0HDATA0FAH
CCAP1HDATA0FBH
CCAP2HDATA0FCH
CCAP3HDATA0FDH
CCAP4HDATA0FEH
ORG0000H
SJMPMAIN
ORG001BH;定时入口
SJMPSEPT0
ORG0030H
MAIN:
JBP3.2,MAIN
SETBP3.7
SETBP3.6
SETBP2.3
CLRP1.0
MOV20H,#00H
MOVTMOD,#12H
MOVCMOD,#04H
MOVTH1,#3CH
MOVTL1,#0B0H
MOVTH0,#156
MOVTL0,#156
SETBEA
SETBET1
SETBTR1
SETBTR0
LCALLGO
MOVP0,#71H
X:
LCALLLEFT
LCALLRIGHT
LCALLZHONG
LCALLDECIDE
LJMPX
SEPT0:
MOVTH1,#3CH;巡检
MOVTL1,#0B0H
CJNEA,#1,DJ1
LCALLRIGHT_P
MOVP0,#0DH
RETI
DJ1:
CJNEA,#4,NEXT
LCALLLEFT_P
MOVP0,#99H
NEXT:
RETI
LEFT:
JNBP3.7,WU;左侧检测
SETB00H
RET
WU:
CLR00H
RET
RIGHT:
JNBP2.3,WU1;右侧检测
SETB01H
RET
WU1:
CLR01H
RET
ZHONG:
JNBP3.6,WU2;中间检测
SETB02H
RET
WU2:
CLR02H
RET
DECIDE:
MOVA,20H;判断
ANLA,#07H
CJNEA,#00,BJ1
LCALLGO
MOVP0,#71H
RET
BJ1:
CJNEA,#01,BJ2
LCALLRIGHT_L
MOVP0,#25H
RET
BJ2:
CJNEA,#02,BJ3
MOVP0,#9FH
LCALLLEFT_L
RET
BJ3:
CJNEA,#03,BJ4
LCALLGO
MOVP0,#71H
RET
BJ4:
CJNEA,#04,BJ5
LCALLGO
MOVP0,#71H
RETI
BJ5:
CJNEA,#05,BJ6
LCALLR
MOVP0,#0DH
RET
BJ6:
CJNEA,#06,BJ7
LCALLL
MOVP0,#0E3H
RET
BJ7:
LCALLGO
MOVP0,#71H
RET
LEFT_L:
LCALLSTOP;驱动左直转
MOVCCAPM1,#00H
MOVCCAPM4,#00H
MOVCCAPM2,#42H
MOVCCAPM3,#42H
MOVCCON,#40H
MOVCCAP2H,#125
MOVCCAP3H,#115
RET
RIGHT_L:
LCALLSTOP;右直转
MOVCCAPM2,#00H
MOVCCAPM3,#00H
MOVCCAPM1,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP4H,#125
MOVCCAP1H,#115
RET
RIGHT_P:
LCALLSTOP;右偏
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#30
MOVCCAP4H,#30
RET
LEFT_P:
LCALLSTOP;左偏
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#30
MOVCCAP4H,#30
RET
R:
LCALLSTOP;右转
MOVCCAPM2,#00H
MOVCCAPM3,#00H
MOVCCAPM1,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP1H,#120
MOVCCAP4H,#130
RET
L:
LCALLSTOP;左转
MOVCCAPM1,#00H
MOVCCAPM4,#00H
MOVCCAPM2,#42H
MOVCCAPM3,#42H
MOVCCON,#40H
MOVCCAP2H,#125
MOVCCAP3H,#115
RET
STOP:
SETBP1.4
SETBP1.5
SETBP1.6
SETBP1.7
RET
GO:
LCALLSTOP;前进
MOVCCAPM1,#00H
MOVCCAPM3,#00H
MOVCCAPM2,#42H
MOVCCAPM4,#42H
MOVCCON,#40H
MOVCCAP2H,#28
MOVCCAP4H,#28
RET
END
2、原理图
(1)寻线模块
(2)驱动模块
(3)、单片机主板
第6章、参考文献
1、《单片机原理与应用》
2、《微机原理与接口技术实验指导书》
3、《电路设计与仿真》
总结
从十五周我开始了为期两周的单片机实训,我在这两周的实训中我学到了很多同时也知道了自己很多不足的地方。
在这两周的时间过得很快,但我觉得过得很充实。
每天我们都在为我们自己的项目思考着,想着怎样可以让我们的小车寻线实验顺利的做出来,在开始的一天我们主要是将这次要用到的硬件电路图用PROTEL99.SE画出来,并让老师检查。
在第二天我们开始了真正的程序设计,我开始与我的组员讨论小车寻线的流程图,并将传感器的判断方式与结果在本子上写下,并通过传感器的判断来写出相应的流程图。
在之后的几天我就开始与我的组员分工设计我们的程序,在得到小车的时候开始对程序进行调试,调试不过的再检查程序的问题或者硬件是否有问题。
经过我们的调试我们的小车可以按照我们预想的那样去运动,但放在跑到上就出现了一点小小的误差,但经过我们坚持不懈的调试与实验我们的小车可以围绕着我们预定的跑道跑一圈。
虽然最后我们的结果做出来了但在设计的过程中还是遇到了很多的问题,主要遇到的有以下几点问题:
1、在刚开始程序设计的时候我们的思路还不是很清楚,我们在一些问题上还不能顺利的解决,例如我们在传感器的接受方式上,先我们没有得到传感器的时候不知道传感器是怎么接收的,在我们查过资料后才了解传感器的接受方式。
2、在程序调试的时候我不能很好的使用断点调试方法,不是很明确的知道该在那里下断点。
我想这是在程序设计中出现的最大问题了。
3、小车在跑到上运行的时候发现小车不能在十字路口很顺利的通过,经过我们的调试后有时可以通过但有时又不能通过,这样就带有随机性。
4、在设计中我们的小车的电量很不够,而且一直在充电都不能正常的运动,在我们调试的时候很不方便,特别是在我们要到跑道上去调试的时候最为不便,我们的车在跑道跑一会儿就没电了,有时还没运行程序就掉了。
在这次的实训中我发现了实验室有很多器材需要换一下,小车的电池用了很久现在的电量不足同时也充不起电,这样让我们做迷宫做寻线的组很不好调试,
我在这次的设计中也得到了老师的指点如果不是老师的细心指导我也不会这么顺利的做出来,特别是在调试的时候,我们开始在调试但不管我们怎么调试小车检测到的结果与小车的运动状态都不能对应,我们找了硬件的问题,也看了程序的问题,但不管我们怎么改都不能运行出来,最后我叫了施芸老师来给我说在她的调试下我知道了我们的错误,我们是在判断累加器的值的时候与调的驱动不对应,在施老师的调试过程中我学会了如何很好的下断点调试并找出错误的原因。
经过老师的指导我成功的做出了我的项目。
在这次的实训中我知道了团队合作的重要性,其实有很多事只靠自己是做不出来的,如果是一个团队那么就可以在有限的时间里做出更好的结果,而且我们可以取长补短使自己不断地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车 巡线实训 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)