小车走迷宫ppP.doc_第1页
小车走迷宫ppP.doc_第2页
小车走迷宫ppP.doc_第3页
小车走迷宫ppP.doc_第4页
小车走迷宫ppP.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*四川工程职业技术学院* 微机原理与接口技术实训实验报告(小车走迷宫)所属系部: 电气信息工程系 班 级: 通信技术 姓 名: 指导老师: - 5 - 摘 要本次所做的课题是小车走迷宫。即通过编程使小车在事先准备的迷宫中行走,通过小车上安装的红外模块对迷宫障碍的判断来改变小车的前进方向,使小车在不碰撞迷宫挡板的情况下,用最短时间走出迷宫。小车使用Philips公司生产的P89V51增强型芯片,用汇编语言进行程序编写,传感器使用红外发射接收模块。对每个红外模块的发射距离要在迷宫当中进行适当的调整,使红外模块的探测距离刚好,从而更好地判断小车的当前状态,红外模块分别安装在小车的左、右、前方,用一个端口发射,然后分别接收。将每个端口接收的数据,存放后再比较,根据自己编写的程序,使小车接收的数据有对应的动作。在这次课题所使用的迷宫地图中,有四个“丁”字路口,因此在单片机编程中,我们通过一个寄存器如 R7对“丁”字路口的个数进行计数。然后将所计的数据值与自己所设置数据进行判断,满足自己所设定的数据,就给小车对应的动作,使小车顺利走过每个“丁”字路口。关键字:迷宫;红外发射接收模块;“丁”字口计数目 录第一章 整体阐述- 4 -1.项目要求- 4 -2.解决方法- 5 -3.流程图- 5 -第二章 硬件描述- 8 -1.硬件电路- 8 -1.1复位监控电路、时钟振荡电路、二极管显示- 8 -1.2声控电路- 8 -1.3通信电路- 9 -1.4按键及显示- 9 -1.5模块与电机接口- 10 -1.6传感器部分- 10 -1.7电机驱动与电源- 11 -2.主要功能描述- 11 -2.1单片机- 11 -2.2传感器- 12 -2.3驱动部分- 13 -2.4驱动子程序- 15 -2.5总体功能- 16 -第三章 程序清单- 17 -第四章 总结- 20 -1、总结1- 20 -2、总结2- 22 -第五章 参考文献- 23 -第一章 整体阐述1.项目要求使用计算机编程软件keil uvision编写小车单片机程序,单片机使用Philips公司生产的P89V51RD2XX增强型芯片,在小车上加装35个红外发射接收模块,通过红外模块发射接收红外线来判断迷宫的障碍位置,然后将判断的结果与实际迷宫状况相结合,根据迷宫的状态在程序中给予正确的小车行进动作,小车驱动使用PWM调速,使小车成功的避开迷宫障碍,走出迷宫。迷宫图形: 2.解决方法 在这次课题中,我们选择的是三个红外发射模块,那么红外模块检测的结果就有23=8种情况,将数据放20H单元的02H,01H,00H中。左边的数据放02H,前边放01H,右边放00H。其中有的情况不需要特别的给予小车动作,可以让它保持上一个动作。这样可以减少程序的繁琐,避免小车在运行中不断变化路线。在迷宫中的关键是对“丁”字路口的判断,由上面的迷宫图可以知道,小车从起点出发,第一个“丁”字路口是向左转,第二个是向右转,第三个是向右转,第四个是向左转。在编写程序时,我们用R7来计“丁”字路口的个数,首先要对R7清零 例: MOVR7,#00H 然后在R7四次路口判断完了之后要重新给R7赋初值,使R7的计数个数在4以内,保证对“丁”字路口的正确判断,然后我们在编写程序的时候就可根据R7与我们编程序的值,给它对应的转向驱动程序。除了“丁”字路口的判断,还有在第一个“丁”字路口下面的路口转向判断,这里就要对红外模块检测距离进行调整,用螺丝刀对模块上的R2电位器调整,可以改变检测的距离。当小车运动到这里的时候,其检测结果(20H)=01H,则给小车左转的程序。在红外模块的检测中,我们循环开发射,以此来判断迷宫障碍的方位。同时小车的驱动也有要求,速度不能太大,否则会撞到迷宫挡板。因此,小车用的是PWM的调速程序,通过改变占空比来改变小车的转速,使小车速度不致过大。3.流程图NYNYNY判断R7是否为1NYYNYN开始PWM初始化 停车显示P执行程序,开发射判断是否有障碍左中右0 0 1左中右1 0 1左中右1 0 0左中右0 1 1左中右1 1 0左中右1 1 1左中右0 1 0左中右0 0 0调左转调左转R7+1调前进调左转调前进调右转调后退判断R7是否为2判断R7是否为3调左转Y调右转调右转声音判断判断R7是否为4R7置1保持上一动作- 22 -传感器子程序:(以左为例)红外模块流程子程序:NYN脉冲个数10赋给R1R0寄存器清零入口开发射延时600US(R1)+1关发射延时600USNYSETB 00HYCLR 00H出口(R1)=6?收到(R0)-1=0第二章 硬件描述1.硬件电路1.1复位监控电路、时钟振荡电路、二极管显示:1.2声控电路端口P3.2,声音控制小车启动1.3通信电路D9用于通信指示,当接收端有信号时,D9会闪烁1.4按键及显示1.5模块与电机接口1.6传感器部分红外接收发射模块3个:左、前、右开发射端口:P3.3接收端口 :左 P2.2右 P3.4前:P2.3红外传感器,它主要是通过发射红外线和接收红外线来判断障碍物的方向及障碍物的距离,模块由发射部分和接收部分组成。当传感器前方有障碍物时,发射模块发射的红外信号就会反射回来,接受模块接收到反射的红外信号后输出端OUT为低电平,没有接收到信号时OUT端子为高电平。1.7电机驱动与电源2.主要功能描述2.1单片机P89V51RD2是一款80C51微控制器,包16/32/64kB Flash和1024字节的数据RAM。它典型特性是它的X2方式选项。利用该特性,设计工程师可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的吞吐量。从该特性获益的另一种方法是将时钟频率减半而保持特性不变,这样可以极大地降低电磁干扰(EMI)。 Flash程序存储器支持并行和串行在系统编程(ISP)。并行编程方式提供了高速的分组编程(页编程)方式,可节省编程成本和上市时间。ISP允许在软件控制下对成品中的器件进行重复编程。应用固件的产生/更新能力实现了ISP的大范围应用。P89V51RD2也可采用在应用中编程(IAP),允许随时对Flash程序存储器重新配置,即使是应用程序正在运行也不例外。2.2传感器这次实验所应用的传感器是由三个传感器分别接在小车的正前方、左方、还有右方。他们的作用是通过自己的发送红外线,再来通过自己是否接收到自己发送的红外线以及判断接收到的脉冲个数,来判断是否自己所检测的方向上有障碍物,将传感器结果判断后显示在数码管上: 检测左方有,数码管显r检测前面有,数码管显L检测右边有,数码管显L检测左方、前方有,数码管显r检测右方、前方有,数码管显L三个方向都检测到时,数码管显b相关程序:JUDGE:MOVA,20HANLA,#07H;屏蔽高5位CJNEA,#00H,BJMOV P0,#03HRETBJ:CJNEA,#01H,T2MOV P0,#071HLCALLZP;调驱动程序RETT2:CJNEA,#02H,T3INCR7S:CJNER7,#01H,D1LCALLLEFTMOVP0,#0E3HLCALLDELRETD1:CJNER7,#02H,D2LCALLRIGHTMOVP0,#0F1HLCALLDELRETD2:CJNER7,#03H,D3LCALLRIGHTMOVP0,#0F1HLCALLDELRETD3:CJNER7,#04H,D4LCALLLEFTMOVP0,#0E3HLCALLDELRETD4:MOVR7,#00HRETT3:CJNEA,#03H,T4MOVP0,#0E3HLCALLLEFTRETT4:CJNEA,#04H,T5MOVP0,#71HLCALLYPRETT5:CJNEA,#05H,T6MOVP0,#71HLCALLGORETT6:CJNEA,#06H,T7LCALLRIGHTMOVP0,#0F1HRETT7:LCALLBACKMOVP0,#0C1HRET、2.3驱动部分驱动部分主要由4个晶体管和电动机组成,构成了一个H桥a、硬件电路分析当左侧电机需要前进时,L-端保持为“1”,电机的转动速度由L+端的占空比决定;当左侧电机需要后退时,L+端保持为“1”,电机的转动速度由L-端的占空比决定;当右侧电机需要前进时,R-端保持为“1”,电机的转动速度由R+端的占空比决定;当右侧电机需要后退时,R+端保持为“1”,电机的转动速度由R-端的占空比决定。b、软件思路智能小车左转的条件:左侧电机反转,同时右侧电机正转。智能小车右转的条件:右侧电机反转,同时左侧电机正转。智能小车加速的条件:减少PWM脉冲的占空比。智能小车减速的条件:增加PWM脉冲的占空比。c、单片机硬件资源分配单片机I/O口分配 左侧电机前进PWM控制信号: P1.7(CEX4) 左侧电机后退PWM控制信号: P1.6(CEX3) 右侧电机前进PWM控制信号: P1.5(CEX2) 右侧电机后退PWM控制信号: P1.4(CEX1)在调试中要尽可能将小车两侧的轮子转速调相同,可以避免小车在行进中走偏。电机电路:2.4驱动子程序GO:LCALLSTOPMOVCCAPM3,#00HMOVCCAPM1,#00HMOVCCAPM4,#42HMOVCCAPM2,#42HMOVCCAP4H,#80MOVCCAP2H,#80MOVCCON,#40HRETBACK:LCALLSTOPMOVCCAPM4,#00HMOVCCAPM2,#00HMOVCCAPM3,#42HMOVCCAPM1,#42HMOVCCAP3H,#80MOVCCAP1H,#80MOVCCON,#40HRETLEFT:LCALLSTOPMOVCCAPM1,#00HMOVCCAPM4,#00HMOVCCAPM2,#42HMOVCCAPM3,#42HMOVCCAP3H,#80MOVCCAP2H,#80MOVCCON,#40HRETRIGHT:LCALLSTOPMOVCCAPM3,#00HMOVCCAPM2,#00HMOVCCAPM4,#42HMOVCCAPM1,#42HMOVCCAP4H,#80MOVCCAP1H,#80MOVCCON,#40HRETSTOP:MOVCCAPM1,#00HMOVCCAPM2,#00HMOVCCAPM3,#00HMOVCCAPM4,#00HSETBP1.4SETBP1.5SETBP1.6SETBP1.7MOVCCON,#00HRET2.5总体功能在各种准备工作完成后,小车的的程序可以满足走迷宫的要求。但是,小车的传感器是个问题,调整不到最佳的状态,若传感器很好,小车可以不碰撞迷宫挡板走出迷宫。在迷宫中的“丁”字路口,我们通过计数来判断是第几个“丁”字路口,然后根据判断给予小车对应的驱动子程序,使小车顺利走过“丁”字路口,这样可以避免小车在迷宫中乱转向。第三章 程序清单CCON DATA0D8HCMOD DATA0D9HCCAPM0DATA0DAHCCAPM1DATA0DBHCCAPM2DATA0DCHCCAPM3DATA0DDHCCAPM4DATA0DEHCL DATA0E9HCCAP0LDATA0EAHCCAP1LDATA0EBHCCAP2LDATA0ECHCCAP3LDATA0EDHCCAP4LDATA0EEHCH DATA0F9HCCAP0HDATA0FAHCCAP1HDATA0FBHCCAP2HDATA0FCHCCAP3HDATA0FDHCCAP4HDATA0FEHORG0000HLJMPMAIN MAIN:CLRP1.2;清零LCALLSTOP;停车MOVP0,#31H;显示“P”JBP3.2,MAIN;声音检测MOVR7,#00HPWM:MOVCMOD,#04H;PWM初始化MOVTMOD,#02HMOVTH0,#139MOVTL0,#139SETBTR0XJ:LCALLLSEND;调红外模块检测LCALLRSENDLCALLQSENDLCALLJUDGESJMPXJLSEND: CLRP3.3MOVR0,#10;发射10个脉冲。左发射MOVR1,#00;寄存器清零L1:SETBP3.3;开p3.3发射LCALLDEL600US;延时JBP2.2,NEXT1;判是否有接收INCR1;寄存器加1NEXT1:CLRP3.3;关发射LCALLDEL600US;DJNZR0,L1;判10个脉冲发完没CJNER1,#06H,BJ1;判接收是否有6个BJ1:JCNO1SETB02H;有,(00h)置1RETNO1:CLR02H;没有为0RETQSEND:CLRP3.3MOVR2,#10 ;前发射MOVR3,#00;寄存器清零L2:SETBP3.3;开p3.3发射LCALLDEL600USJBP3.4, NEXT2;是否有接收INCR3;寄存器加一NEXT2:CLRP3.3;关发射LCALLDEL600US;DJNZR2,L2; 10个脉冲发完没CJNER3,#06H,BJ2;判接收有没6个BJ2:JCNO2SETB01H;有 01H为1 RETNO2:CLR01H;没有为0RETRSEND:CLRP3.3MOVR4,#00MOVR5,#10L3:SETBP3.3LCALLDEL600USJBP2.3,NEXT3INCR4NEXT3:CLRP3.3LCALLDEL600USDJNZR5,L3CJNER4,#04H,BJ3BJ3:JCNO3SETB00HRETNO3:CLR00HRETJUDGE:MOVA,20H;判断检测结果ANLA,#07HCJNEA,#00H,BJMOVP0,#03HRETBJ:CJNEA,#01H,T2MOVP0,#071HLCALLLEFTRETT2:CJNEA,#02H,T3;“丁”字路口判断INCR7S:CJNER7,#01H,D1LCALLLEFTMOVP0,#0E3HRETD1:CJNER7,#02H,D2LCALLRIGHTMOVP0,#0F1HRETD2:CJNER7,#03H,D3LCALLRIGHTMOVP0,#0F1HRETD3:CJNER7,#04H,D4LCALLLEFTMOVP0,#0E3HRETD4:MOVR7,#00HRETT3:CJNEA,#03H,T4MOVP0,#0E3HRETT4:CJNEA,#04H,T5MOVP0,#71HLCALLYPRETT5:CJNEA,#05H,T6MOVP0,#71HLCALLGORETT6:CJNEA,#06H,T7LCALLRIGHTMOVP0,#0F1HRETT7:LCALLBACKMOVP0,#0C1HRETGO:LCALLSTOPMOVCCAPM3,#00HMOVCCAPM1,#00HMOVCCAPM4,#42HMOVCCAPM2,#42HMOVCCAP4H,#80MOVCCAP2H,#80MOVCCON,#40HRETBACK:LCALLSTOPMOVCCAPM4,#00HMOVCCAPM2,#00HMOVCCAPM3,#42HMOVCCAPM1,#42H MOVCCAP3H,#80MOVCCAP1H,#80MOVCCON,#40HRETLEFT:LCALLSTOPMOVCCAPM1,#00HMOVCCAPM4,#00HMOVCCAPM2,#42HMOVCCAPM3,#42HMOVCCAP3H,#80MOVCCAP2H,#80MOVCCON,#40HRETRIGHT:LCALLSTOPMOVCCAPM3,#00HMOVCCAPM2,#00HMOVCCAPM4,#42HMOVCCAPM1,#42HMOVCCAP4H,#80MOVCCAP1H,#80MOVCCON,#40HRETSTOP:MOVCCAPM1,#00HMOVCCAPM2,#00HMOVCCAPM3,#00HMOVCCAPM4,#00HSETBP1.4SETBP1.5SETBP1.6SETBP1.7MOVCCON,#00HRETYP:LCALLSTOPMOVCCAPM3,#00HMOVCCAPM2,#00HMOVCCAPM4,#42HMOVCCAPM1,#42HMOVCCAP4H,#70MOVCCAP1H,#40MOVCCON,#40HRETDEL600US:MOV31H,150;延时600usDEL0:NOPDJNZ31H,DEL0RETEND第四章 总结1、总结1经过这学期单片机的学习,我对单片机有了更加深入的认识,在平时实验中对基本的实验内容还能够比较好的掌握,但是有些扩展还不能很好的弄明白,在做这些实验的时候感觉不是很好。在这次的单片机专用周中,我做的课题是小车走迷宫,在初次拿到这个课题的时侯还有很多不明白的问题,后来在老师的分析下有了很多的认识,知道如何处理传感器的安装、调试;如何在迷宫的“丁”字路口给予小车正确的转向;如何处理小车在转弯过程中的状态等情况。第一天做硬件电路图,根据我们的课题,考虑需要那些硬件器材,然后利用protel 99 se 做硬件电路图。通过这个步骤,我不仅又重新熟悉了下protel 99 se的操作技巧,还了解了我所做课题的一些硬件器材,知道硬件的原理。比如:红外模块的组成有接收和发射,发射距离可以根据实际的要求调整R2电位器来改变,也可调节R5来改变红外线的频率。这次程序是先写小段的然后将各段组合。首先是对迷宫的分析。在迷宫中有4个“丁”字路口,在分析中我们用一个寄存器R7来计数。我们使用三个模块,对模块检测结果用的是20H单元里的02H,01H,00H来存放数据,左边用的02H,前边用的01H,右边是00H,“丁”字路口情况是前边检测到,左右没有检测到,则20H单元数据为02H,此时要对“丁”字路口计数,即R7自加1,然后就对R7的值进行比较判断,当R7为1时,调左转驱动;R7为2时,调右转驱动;R7为3时,调右转驱动;R7为4时,调左转驱动,这样就将迷宫“丁”字路口的判断问题解决了。要注意的是,R7在四次判断完了之后要对其回赋初值,不然,R7的数据就会混乱,使小车没有正确的方向,不能转过“丁”字路口。由于小车在迷宫中行走,小车的速度不能太快,所以这里用到了PWM调速模块,在程序的开始就要对PWM进行初始化设定,这个在之前的实验中做过,然后是对小车每个驱动子程序进行程序编写,这也是之前做过的,很快完成了,其中对驱动的占空比设置要根据小车实际运动时候的速度快慢来给值,使小车不会撞上挡板。然后是小车的启动,我做的是声控来让小车启动,在程序下载到小车后,显示P。则程序下载了,通过声音来启动小车。在实际的操作中,首先就是传感器的检测问题,对传感器的检测距离需要结合实际来调整,距离要适中。在老师的帮助下,我们把传感器进行调整,把坏的换了,这样检测就好多了。另一个问题是在“丁”字路口的计数、显示和驱动问题。开始的时候每次在检测“丁”字路口时,数码管的显示就不对,根据程序内容应该是依次显示L,r,r,L。但在我们的小车上却不是这样,显示有点混乱,后来在老师的帮助解决下对R7的值进行了处理,再次测试的时候就正确了。接着就是到迷宫中进行试车,在多次的调整下,小车最终走出了迷宫,当然少不了对小车的人工帮助了。经过这次的单片机实训,有了新的认识。在遇到问题的时候首先是自己去解决,然后是我们几个组之间进行商量,共同探讨问题的解决方法,还有就是坚持不懈的斗志,在做迷宫的测试中,小车问题最大,前一次还能走很好,但你第二次去试车时就不对了,小车就乱跑了,往往这样,但又不知道原因,只有拿回来重新下载,再去试车,进过不断的改进,小车最终成功了。这其中更少不了老师的耐心指导,得对老师说声辛苦了,在老师的指导下,我们才能更好地完成这个课题。2、总结2本次单片机实训为时两周,是对单片机更深入的了解和复习。对于程序的编写,硬件的熟悉都是种考验,其目的在于在熟练每个硬件模块的基础上,对程序进行相应编写。我们组这次实训的内容是“迷宫”,所以需要的程序主要关系到上课时所学的:障碍物方位检测、延时、数码管动态显示等,其中最主要得是平时并没有太过多使用的传感器,因为实训之前的程序基本不用太过多调试传感器,但此次实训却用了很多时间在调试上,因为在穿越迷宫时很难掌握其方向和速度,即使传感器调得较好。“T”字路口时程序设计中最为关注的,其检测的方向多,转向也需要一定微调。还有是小车的硬件好坏也是很重要,在各组使用传感器时有些有损坏,首先是没有正确连接,其次可能是用的太久,硬件各部分不太稳定,所以使用得也不顺畅,当然程序的正确与否是根本,所以实训也是硬件与软件的双重学习。在程序的编写上觉得还是有一定困难,刚开始还根本不知道该从哪一部分开始,首先是我对以前学的都不是很明白,比如在障碍物检测程序中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论