智能玩具小车的控制系统设计_第1页
智能玩具小车的控制系统设计_第2页
智能玩具小车的控制系统设计_第3页
智能玩具小车的控制系统设计_第4页
智能玩具小车的控制系统设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

本 科 毕业论文(设计)(自然科学)题 目:智能玩具小车的控制系统设计院(系、部):学 生 姓 名:指 导 教 师:Hebei Normal University of Science & Technology专业:电子信息工程学号:04141101172015 年 05 月 24 日河北科技师范学院教务处制河北科技师范学院本 科 毕 业 论 文 ( 设 计 )智能玩具小车的控制系统设计院 ( 系 、 部 ) 名 称 : 机 电 工 程 学 院专 业 名 称 :学 生 姓 名 :学 生 学 号 :指 导 教 师 :2015 年 05 月 24 日河北科技师范学院教务处制学 术声 明本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于河北科技师范学院。本人签名:日期:指导教师签名: 日期:摘要I摘要机器人的研究是一项具有良好前景的科研项目,而智能小车的研究可以说是机器人研究的一个小入门。智能小车虽然功能不如机器人的强大,但是其所具备的功能一方面是机器人的基本功能或基础原理,另一方面又有很大的发展空间。通过对智能小车的深入研究,也能为机器人的发展助一臂之力。本次设计的智能小车主要是基于 52 单片机实现自动循迹、避障和无线操控功能,这三个功能是一个智能小车应具备的基本功能。对每个功能的实现分别依靠TCRT5000 传感器、超声波传感器和 nRF24L01+无线模块实现。这些模块收到的信号,由单片机进行处理后,控制驱动模块来实现对小车的控制。本次设计制作出的小车能够很好地完成这些功能,达到了设计的要求。且可通过无线操控在小车的行进过程中进行不同工作模式的切换,这使小车的行动更加灵活。更能在遇到突发状况时,能够继续正常工作或避免损坏,增强了小车的可靠性。关键词:智能小车;单片机;TCRT5000 传感器;超声波传感器;nRF24L01+AbstractThe research of robot is a promising research project. And the research of smart car can be side to be rudiments of robot.Through in-depth study of the smart car, also can help weresearch the robot.The design of intelligent car is mainly based on 52s microcontroller to realize automatic tracking and obstacle avoidance and wireless control function, these three functions is a smart car should have the basic functions. To achieve the functions of each are depended on the TCRT5000 sensor, ultrasonic sensor and nRF24L01+ wireless module. These modules receive signal, then send to microcontroller.Microcontroller process the signal, to control drive module to realize the control of the car. Made out of the car is able to complete these functions, meet the design requirements. And through wireless control in the car in the process of moving to different work mode switch, which makes the car more flexible. More in the face of unexpected situations,the car can continue to work or to avoid damage. It enhances the reliability of the car.Keywords: smart car; microcontroller; TCRT5000 sensor; ultrasonic sensor; nRF24L01+目录II目 录摘要 .IAbstract .I目录 .I1 绪论.11.1 研究背景及意义.11.2 研究目的和设计构思.12 系统工作原理.13 硬件系统设计.13.1 供电模块设计与介绍.13.1.1 LM2576 和 LM2596 介绍与应用方案.13.1.2 7805 芯片介绍与应用方案.13.2 驱动模块介绍.13.3 自动循迹传感器介绍.13.4 避障传感器介绍和选择.13.5 无线模块介绍和选择.14 软件系统设计.14.1 自动循迹程序设计.14.2 自动避障程序设计.14.3 无线操控程序设计.15 小车调试与制作.1结论.1参考文献.1致谢.1附录.1河北科技师范学院 2015 届本科毕业设计11 绪论1.1 研究背景及意义随着科技的发展,尤其是计算机技术和网络技术的高速发展,使得智能化开始与各种产品进行融合,衍生出功能更加强大的新一代产品。其中无人驾驶成为了一项重要研究方向。目前,Apple 已开始着手研究智能汽车 iCar 或 Apple Car。其他公司也有相关方面的研究计划。在军事领域,无人机也一直是一项具有重要战略意义的研究项目。无论是智能汽车,还是无人机都是移动机器人中的一种 1。而智能小车则是移动机器人研究的基础,所以智能小车的研究可以推动智能汽车和无人机的发展。而且智能小车一直被各大高校重视,其中飞思卡尔智能小车竞赛是智能小车研究中的一项重要赛事,且对智能小车技术的进步做出了巨大贡献。之所以说智能小车是移动机器人中的基础,是因为智能小车所能实现的功能是一个移动机器人都能完成也都应该具备的功能 2。可以说机器人的强大功能都是在小车功能的基础上,进行更深入研究后实现的。而为机器人开发一个新的功能,也可以在小车上进行一定的测试,并且成本要比直接在机器人上开发的低。因此,目前继续深入研究智能小车,对于移动机器人乃至所有机器人研究工作有着重要意义。除此之外,智能小车也是一名电子专业大学生有能力掌握的电子技术。其难度适中,设计思路灵活,很适合用来测试大学生的电子技术。通过制作智能小车有助于巩固电子技术的基础知识,加强实践能力。1.2 研究目的和设计构思此次设计的小车将要完成自动循迹、自动避障、无线操控功能,并能够在小车行进过程中进行功能的切换,即能通过遥控器实现小车的工作模式。这些功能使小车能完成更复杂的工作,具有更大的容错率。比如在自动循迹时,如果因车速过快,导致小车离开轨迹且不能自动重回轨迹时。可以使其切换到无线操控模式,通过人为操控使其重回轨道后,再切换为自动循迹模式继续循迹工作。再如当小车在自动避障过程中,如果突然在无效距离内出现障碍,也可同样利用无线操控其避开障碍后,再继续进行自动避障。这种人为操控方式加智能操控方式,在智能汽车和无人机上也采用如此方式,因此制作出的小车可以在一定的程度上模拟他们在工作时如何处理问题 3。如汽车遇到信号灯时,需要一个交通网络或车主来控制车辆的行驶。设计的核心便是利用不同功能的感测器和无线收发模块,来提供信号或命令给单河北科技师范学院 2015 届本科毕业设计2片机,由单片机处理后控制小车的移动或感测器的工作。通过利用不同的感测器可以使小车具备不同的功能,也可以使小车的功能更强、精度更高。不同的无线模块也可以使小车接收信号范围更远、通道更多。本次设计中使用的 TCRT5000 传感器、超声波传感器和 nRF24L01+无线模块,性能上满足设计要求。且小车还留有一定的扩展空间,能添加新的或更换更好的感测器,提升小车的性能。2 系统工作原理本设计使用 52 单片机作为核心处理器,通过外接循迹传感器、障碍感测器、无线收发模块,来给单片机提供信号。单片机接收到信号后,按照其内部程序进行信号识别并处理各种信号。之后控制电机所接电压的有无、大小和正负,实现对电机转速和转动方向的控制,从而控制小车的移动。通过编程使单片机知道应如何处理各传感器传输的信号,以及何时处理。对无线操控功能,使用两片单片机和两个无线收发模块。一片单片机和一个模块组装成遥控器,进行操控指令的发送。另一片单片机与无线模块安装在小车上,进行操控指令的接收,和对小车的控制。循迹传感器与障碍感测器,顾名思义是进行轨迹检测与障碍检测。分别服务于自动循迹功能和自动避障功能。单片机识别其传送的信号,来控制小车实现这两个功能。3 硬件系统设计3.1 供电模块设计与介绍首先,电源的选择有蓄电池和一般干电池。设计中用到的各种感测器、无线模块与单片机,均要求有 45V 的输入电压 4。所以两种电源提供的电压,虽然大于电压要求,但可以通过变压后,得到符合电压范围的伏值。因此都可以使用。由于制作的无线操控时,需要再制作一个遥控器,因此需要两个电源。而在购买小车底板时,附带一个 4 节 5 号电池盒,且已拥有一个 12V 蓄电池。考虑到小车上不仅要给单片机供电,还需给各感测器、无线模块以及直流电机供电,因此在小车上用蓄电池供电,遥控器用 4 节干电池供电。3.1.1 LM2576 和 LM2596 介绍与应用方案选好供电电源后,还需要考虑的就是变压的问题。蓄电池的额定输出电压最大为12V,所以使用 LM2576 或 LM2596 芯片进行变压。LM2576 可提供降压稳压功能,可河北科技师范学院 2015 届本科毕业设计3驱动 3A 的负载,有优异的线性和负载调整能力。其输出电流可以为连续型或非连续型,这取决于选取的电感的直流通流量。LM2596 是 LM2576 的升级版,加大了待机电流,增加了自我保护电路 5。设计中分别使用了一片 LM2576 和 LM2596。如此选择的原因有两个,第一、两种芯片的使用原理和方法相同,皆是通过连接为反馈电路,达到降压稳压效果。而且所使用的外接元件也相同且容易购买。因此使用任意一种芯片,没有太大的区别。第二、在使用之前,已有一片 LM2576。而购买另一片时,价格低导致不能单独购买,所以只好购买做好的使用 LM2596 的降压稳压模块。使用的反馈电路原理相同,均是采用一个极性输入电容 ,一个肖特基二极管,一个电感,一个极性输出电容 。构成如下电路:图 1 反馈电路图图中的 CIN、L 1 和 COUT 可以使用不同的参数,但要根据情况进行选择。本次设计中,LM2576 需要自己进行外接反馈电路。设计中,输入电压电压源为 4 节 5 号干电池,最大 6V 直流电压。输出电压要求为 5V。所以 CIN 使用 100F,C OUT 使用 470F,L 1使用 100H,R 1 使用 1k。其余元件参数与上图一致。并增加了一只六角开关和RF16700 保险丝 6。河北科技师范学院 2015 届本科毕业设计4(a)正面(b)背面图 2 LM2576 电路经测试,该电路可实现 1 到 5.8V 范围内的电压输出。调节后稳定在 5V 输出。另一模块如下图:河北科技师范学院 2015 届本科毕业设计5图 3 LM2596 降压模块该模块供电电源为蓄电池,使用时输出电压调节到 6.2V。此电压不能直接给单片机和感测器供电,但可以给 L298N 驱动模块供电。给单片机供电还需经下述的 7805芯片稳压。这就同时解决了单片机与 L298N 驱动模块的供电问题,7805 芯片稳压后的电压还能给 L298N 的逻辑电平供电 7。3.1.2 7805 芯片介绍与应用方案7805 内部电路具有过压保护、过流保护、过热保护功能。能够实现 1A 以上的输出电流,具有良好的温度系数,输出电压误差精度分为3%和5%。使用时连接电路如下:图 4 7805 电路图河北科技师范学院 2015 届本科毕业设计6实际连接时,还应该在两片 7805 的 和 的端分别连接一个瓷片电容,如102,104 等。这是此次设计的一个失误。不过由于输入电压低只有 6.2V,所以经实际测试后发现也可以使用,不会对小车产生影响。VCC 端接 LM2596 降压模块的输出电压,该电压值不能低于 6V,不能高于 36V。输出端将自动稳压到 5V 左右,实际检测其输出电压为 4.97V,满足单片机与各模块的供电要求。两片 7805 中,一片单独给单片机供电,一片给各模块供电。这样做是因为单片机对电压的稳定性要求高,而所接模块较多 8。如果只用一片 7805,会使 7805 的负载过重,热量升高。进而导致稳压性能变坏,甚至造成 7805 芯片的损坏。下图为实际焊接电路,该图拍摄时还未添加电源开关。添加的开关位于两片 7805中间,没有拍摄是因为已经固定在小车上,不便于拍摄。电路板左上方左起第一根排针为左方 7805 的输出端,单独为单片机供电。第四根排针为电压输入端,第五和第六根排针为 GND 端。下方左起前四根排针为 GND 端,后八根排针为右方 7805 的输出端,为各个感测器供电。剩余排针未接通,没有使用意义。图 5 7805 稳压电路板以上便完成了电源供电设计。实际测试证明得到的电压稳定,能满足单片机及其余元器件的电压要求。3.2 驱动模块介绍小车车体的设计要求使用左右两个电机驱动,外加一个后万向轮,形成三点结构,以稳定小车的行驶。电机有直流电机与步进电机两种选择。步进电机是通过对各相绕组按合适的时序通电,控制电机步进转动。可以利用单片机的定时功能,或外接定时设备,对供电时序经行控制,从而达到控制步进电机的转速。如此方法,能精确地控制小车的速度,以及转弯时的角度。但是步进电机比直流电机的价格昂贵,且编程难度大。此次设计中,对小车的行驶速度与转弯角度没有高精度要求,所以采用直流电机进行驱动。河北科技师范学院 2015 届本科毕业设计7使用直流电机驱动时,需要利用减速齿轮按一定的减速比减速后,才可以作为小车的驱动电机。否则,会因小车的速度过快,导致单片机来不及处理接收到的信号,失去对小车的控制。另外小车的运动方向,需要利用电机的不同转速和转向来实现。因此须利用 L298N 驱动模块来实现对电机的控制。L298N 驱动模块是依靠 L298N 芯片来实现对电机的控制。L298N 芯片内部核心是一个双 H 桥,如下图所示:图 6 H 桥电路原理图当 Q1 和 Q4 导通时,电机顺时针转动;当 Q2 和 Q3 导通时,电机逆时针转动。在L298N 中,有两个如此的 H 桥,分别控制两个电机。其中每一个 H 桥的 Q1 和 Q4 的基极相连接,Q 2 和 Q3 的基极相连。发射极正极与驱动电压相连,负极与 GND 相连。L298N 中除须连接一个驱动电压外,还须连接一个逻辑电压。单片机就是负责控制各基极的电平,来实现对电机转动的控制。L298N 还有两个使能端,分别控制 H 桥的开启。利用 L298N 控制电机转速,就是利用 PWM 时序脉冲控制使能端开启的时间,达到控制电机导通的时间,进而实现了控制电机的转速。L298N 在使用时会产生大量的热量,因此还需要使用散热片进行散热。将电机连接在驱动模块上后,便可以按照前述进行对电机的控制。实际测试表明该模块能及时地进行 H 桥导通方向的切换,对两个使能端的 PWM 脉冲控制能明显地控制电机转速。下图为所购买的 L298N 驱动模块:河北科技师范学院 2015 届本科毕业设计8图 7 L298N 驱动模块控制方式如下表所示:表 1 驱动控制表ENA INA1 INA2 电机状态0 X X 停止1 0 0 制动1 1 0 前进1 0 1 后退1 1 1 制动3.3 自动循迹传感器介绍自动循迹功能的实现时依靠 TCRT5000 光电传感器来实现。设计要求是小车能自行识别一个环形黑色轨迹并沿着轨迹移动,且能在循迹过程中进行无线操控,切换小车的运行模式。关于无线操控部分,将在无线操控功能设计时进行说明,现在先说明自动循迹功能的设计方案。本人购买的用于循迹功能的感测器为一路循迹传感器,如下图所示:河北科技师范学院 2015 届本科毕业设计9图 8 循迹传感器其三根引脚分别是 OUT、VCC、GND。当传感器检测到黑色轨迹时, OUT 端输出低电平,其余颜色轨迹,OUT 端输出高电平。如果传感器因高度无法进行检测时,OUT 端输出低电平。该模块核心是利用 TCRT5000 实现对轨迹的检测。TCRT5000 工作原理是通过红外发射二极管发射红外线,当红外线遇到黑色轨迹时,由于黑色会吸收所有光线。导致红外线没有返射足够的强度给光敏三极管,光敏三极管便处于关闭状态,于是输出为低电平 5。而当轨迹远离传感器时,也会导致红外线无法反射回来,使传感器输出低电平。下图为该模块的电路原理图:图 9 循迹模块电路图该模块缺点是不能调节检测距离,其固定检测距离为 1cm 左右。设计一共使用 4个该循迹模块,分为前后两排,一排两个对称安装。前排靠内,后排靠外。这是使前排确定轨迹的最大宽度测量为 5cm并提前检测到小车是否驶出轨迹。后排是预防因小车速度过快,导致前排来不及检测小车驶出轨迹。是一种增加循迹可靠性的河北科技师范学院 2015 届本科毕业设计10方案。3.4 避障传感器介绍和选择对于自动避障功能设计,有红外避障方案和超声波避障方案两种选择。对于红外避障方案,购买到的 YS-29 红外避障模块,具有易编程、易调节检测距离的特性。但是考虑到,红外线在实际中容易受到环境光线强度的影响,且大多数障碍物表面不光滑,会产生漫反射现象。这些都将影响检测的稳定性和可靠性。最重要的是,该模块不是利用编程来控制避障距离,而是通过调节电位器来控制检测距离。而其检测距离就是避障距离。这也就意味着不能通过该模块,来实时检测距离,影响了小车功能的扩展性。所以最终采用超声波避障方案。超声波避障方案与红外避障方案相比较,其优点是能进行实时检测障碍物到小车的距离,可将避障功能扩展成测距功能和避障功能于一体,以满足更多工作需求。但是考虑到负载过多,不能再外接 1602 或数码管显示所测距离,所以小车检测到的距离数据没有显示。测距功能只能为避障服务,不能满足其余工作需求。超声波的反射也比红外线稳定,能增强自动避障的稳定性。而其缺点则是不能应对在 2cm 内突然出现的障碍,容易受到温度的影响,导致检测的距离不如红外线的精确。障碍物受测面要尽量平整,否则会影响测距效果。下图分别是所购买的红外模块和超声波模块。图 11 红外避障模块河北科技师范学院 2015 届本科毕业设计11(a)正面(b)背面图 12 超声波避障模块超声波避障模块上有一个发射口和一个接收口,其检测原理是通过按一定的时间间隔发送一个超声波,当超声波遇到障碍物时,便会反射回来,由接收口接收返回的超声波。这时接收端的输出就会由高电平变为低电平。而从发送超声波开始,到检测到接收端变为低电平的这段时间,就是超声波从小车开始,移动到障碍物的并返回到小车的往返时间。也就是一次测距的时间。进过如下公式计算,就可得到小车到障碍物的距离 9。(1)2tvS高 电 平 时 间 声 速距 离公式中的声速,通常使用声音在空气中的传播速度 340 来计算。实际上在超声波往返于小车和障碍物间时,小车处于移动状态的。所以为了避免因小车的移动造成的误差,要控制小车保持低速行驶,使声波的速度远大于车速,就可以忽略小车移动的影响。而且低速行驶也能在前方障碍物,没有被检测到时,减低碰撞时的冲击力,避免小车的损坏。3.5 无线模块介绍和选择无线功能是本次设计的核心功能,其余的功能都需要利用无线来进行切换。无线河北科技师范学院 2015 届本科毕业设计12操控功能在设计时,也有两种方案。一种是使用网上已调制好的遥控设备,另一种是使用 NRF24L01+模块。已做好的遥控设备,使用简单。但不可以对其按键进行编程,也就是说起按键功能固定,导致无线功能扩展受限。而且此种方式接收端只能接收,发送端只能发送,两者不能相互通信。所以决定采用 NRF24L01+模块设计无线功能。NRF24L01+模块具有功耗低、抗干扰性高的特点。且发送时会自动添加 CRC 校验码与字头,接收时会自动去掉。发送时,先将数据送人收发队列,再高速发送。如此可以节能、降低系统费用、增加抗干扰性 10。在使用 NRF24L0+时,还购买了一块转接模块。该转接模块提供一个降压稳压功能,将 5V 降压到 3.3V 左右,再给 NRF24L01+供电。对于无线模块程序的设计,主要是调用模块配送的收发程序来实现设计要求,而不是设计全部程序。有关该模块的配置程序与收发程序,购买模块时会由商家提供,网上也有不少现成程序,可以直接调用。在各程序代码中也有详细的注释说明,因此不在论文中提及,相关内容可见附录中的小车整体代码。而在本文中重点说明设计的思路,和调用程序段的目的。下面是NRF24L01+与转接模块的实物图。图 14 NRF24L01+模块图 15 无线转接模块4 软件系统设计河北科技师范学院 2015 届本科毕业设计134.1 自动循迹程序设计程序设计流程图如下:开始有无模式切换左右传感器是否同时输出0N左传感器是否输出 0右传感器是否输出 0小车直行退出循迹模式保持当前状态小车左转小车右转YYNNNYY图 10 循迹程序流程图循迹模式启动后,小车便会一直沿着轨迹行进,直到无线操控切换小车工作模式。对于特殊的十字交叉轨迹,小车将保持直行。如果轨迹上出现障碍,则可以切换小车为无线操控模式,避开障碍并回到轨迹后,再切换为循迹模式继续工作。小车自动循迹功能的实现如上面的流程图所示。当左边的传感器输出低电平时,表明小车的左方过界,即小车如继续行驶将驶离轨迹。而要避免此情况发生,此时需要进行左转。左转时,控制左轮减速行驶,右轮速度不变,便可完成左转。控制左轮减速是通过对左轮的 H 桥,进行 PWM 脉冲控制实现。同理当右传感器输出低电平时,实现小车的右转。对于十字交叉轨迹,会使小车的左右传感器同时输出低电平,此时保持小车行驶路线就可以通过该轨迹。下面是自动循迹的循迹部分代码。河北科技师范学院 2015 届本科毕业设计14INA1=1;INA2=0;INB1=1;INB2=0;for(i=0;i0)P2=0x00;Right90();delay_ms(100);小车进入避障模式后,用第一个 if 语句是检测是否可以在当前位置开启自动避障功能,不能则退出自动避障模式。之后的 for 循环是 PWM 控制,并在其中进行检测前方高低落差检测与障碍检测。其中 distance 变量储存测量的距离,单位是厘米,当其不大于 12 时。表明小车到障碍的距离小于 12cm,此时进行右转 90 度处理。之后的延迟100ms,是由于超声波的发送不能是连续的,需要一定的时间间隔。本模块的推荐是每60ms 发送一个 10s 以上的超声波,所以延迟 100ms 等待新方向的测距。而右转 90 度后小车会进入制动状态,如此在等待新一轮测距时,也不会因小车移动,使其与障碍的距离不足 2cm超声波最小有效距离而导致无法自动避障。超声波的发送与距离的测量,使用了单片机的定时器 0 和定时器 1 进行时序控制。河北科技师范学院 2015 届本科毕业设计17其中定时器 0 工作模式为方式 1,用于测量超声波的往返时间。定时器 1 工作模式也为方式 1,用于定时 60ms 发送超声波。下面是超声波测距程序说明:void meter_distance() Trig=1;delay_ms(12);Trig=0;while(!Echo);TR0=1;while(Echo);TR0=0;distance=TH0*256+TL0;TH0=0;TL0=0;distance=distance/53;其中的 Trig 是超声波发送端,通过给其高电平进行发送。代码中发送一个 12s 的超声波。发送完成后开始计时,通过检测 Echo 端超声波接收端,当超声波发送完成后会自动置为高电平来判断超声波是否返回。返回后 Echo 将会变为低电平,此时停止计时,得到的就是超声波的往返时间。将该时间除以 53 就能得到小车与障碍的距离。这里运用了公式(1) ,计算过程如下:(2)2*()()340/Smtsvs距 离 距 离往 返 时 间 声 速其中时间单位为 s,长度单位为 m,速度单位为 m/s。经过公式 2 的换算后得到时间 t(s)=0.0053*s(m),即 s(cm)=t(s)/53。所以 distance(s)除以 53 后便得到距离(cm)。定时器 0 计时后清零,并当计时溢出后,进入定时中断将 Echo 端置为低电平。这是防止距离过远,导致 Echo 端一直处于高电平状态,影响后续的测量效果。4.3 无线操控程序设计程序设计流程图:河北科技师范学院 2015 届本科毕业设计18开始有无模式切换N有无新的小车命令保持当前状态退出无线操控模式执行新命令NYY图 16 无线接收流程图开始有无按键按下发送命令YN图 17 发送程序流程图设计中发送端采取自动重发机制,当接收端没有按时传回应答信号时,发送端便会重发之前的命令。发送端还外接一个 4 4 键盘,键盘扫描程序来自单片机 100 例。脳当有按键按下,扫描出是第几个按键,然后发送对应的命令 14。每次发送前,将会清空收发队列,以免有以前未发送命令还存在队列中,干扰当前命令的发送。接收函数在每一个功能函数中都要调用,以此来切换工作模式。特别地在左转函河北科技师范学院 2015 届本科毕业设计19数与右转函数中也要调用。上文已说明这两个函数是如何实现左右转的,而该实现使用了一个死循环。当小车工作于无线操控模式时,需要在左右转时也能接受新的命令并执行。这就必须在这两个函数中调用接收函数,以使其在收到新的命令时,能够退出函数并执行当前命令。下面将说明部分代码。int I=-1;inerDelay_us(100);init_io(); / 初始化 NRF24L01+的 IOTX_Mode(); /配置发送模式SPI_RW_Reg(WRITE_REG+STATUS,0xff);/清空状态为SPI_RW_Reg(FLUSH_TX,0xff);/ 清空收发队列while(1)i=Keys_Scan();/按键扫描,返回按键的编号if(i!=-1&i#include #include typedef unsigned UINT;typedef unsigned char UCHAR;#define TX_ADR_WIDTH 5 / 5 字节宽度的发送/接收地址#define TX_PLOAD_WIDTH 1 / 数据通道有效数据宽度UCHAR code TX_ADDRESSTX_ADR_WIDTH = 0x34,0x43,0x10,0x10,0x01; / 定义一个静态发送地址UCHAR RX_BUFTX_PLOAD_WIDTH;UCHAR TX_BUF16 = 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f;UCHAR bdata sta;sbit RX_DR = sta6;sbit TX_DS = sta5;sbit MAX_RT = sta4;sbit CE = P25;sbit CSN= P24;sbit SCK= P23;sbit MOSI= P22;sbit MISO= P21;sbit IRQ = P20;void delay(UINT z);UCHAR code KeyCodeTable=0x11,0x12,0x14,0x18,0x21,0x22,0x24,0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88;/*函数:delay_ms()描述:延迟 x 毫秒/*/void delay_ms(UCHAR x)UCHAR i, j;i = 0;河北科技师范学院 2015 届本科毕业设计26for(i=0; i0;n-)_nop_();/*/*键盘扫描函数*/int Keys_Scan()UCHAR sCode,kCode,i,k;/低 4 位置 0,放入 4 行P1=0xf0;/若高 4 位出现 0,则有键按下if(P1&0xf0)!=0xf0)delay_ms(5);if(P1&0xf0)!=0xf0)sCode=0xfe; /行扫描码初值for(k=0;k#include#includetypedef unsigned int UINT;typedef unsigned char UCHAR;#define RX_ADR_WIDTH 5 / 5 字节宽度的接收地址#define RX_PLOAD_WIDTH 1 / 数据通道有效数据宽度#define MODE1 0x00 / 无线操控模式#define MODE2 0x01 / 自动寻迹模式#define MODE3 0X02 / 避障模式河北科技师范学院 2015 届本科毕业设计33#define STOP 0x03#define FRONT 0x04#define BACK 0x05#define LEFT 0x06#define RIGHT 0x07#define LEFT_90 0x08#define RIGHT_90 0x09UCHAR code RX_ADDRESSRX_ADR_WIDTH = 0x34,0x43,0x10,0x10,0x01; / 定义一个静态发送地址UCHAR TX_BUFRX_PLOAD_WIDTH;UCHAR Mode_Flag;UCHAR flag=0;UINT distance;bit succeed_flag; /测量成功标志sbit CE = P05;sbit CSN= P04;sbit SCK= P03;sbit MOSI= P02;sbit MISO= P01;sbit IRQ = P00;sbit INA1= P20;sbit INA2= P21;sbit INB1= P22;sbit INB2= P23;sbit ENA = P24;sbit ENB = P25;sbit INTERTRAL=P10;sbit EXTERTRAL=P11;sbit INTERTRAR=P12;sbit EXTERTRAR=P13;sbit Trig = P14; /产生脉冲引脚sbit Echo = P32; /回波引脚UCHAR bdata sta;sbit RX_DR = sta6;河北科技师范学院 2015 届本科毕业设计34sbit TX_DS = sta5;sbit MAX_RT = sta4;/*秒延时函数*/void delay(UINT z)UINT x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*/*/*微秒延时函数/*/void inerDelay_us(unsigned char n)for(;n0;n-)_nop_();/*/*函数: init_io()描述:初始化 IO 接口/*/void init_io(void)CE = 0; / 待机CSN = 1; / SPI 禁止SCK = 0; / SPI 时钟置低IRQ = 1; / 中断复位河北科技师范学院 2015 届本科毕业设计35/*/*函数:delay_ms()描述:时间延迟/*/void delay_ms(UCHAR x)UCHAR i, j;i = 0;for(i=0; i0)P2=0x00;Right90();delay_ms(100); /*/*定时器 0 中断,回波清零*/void timer0() interrupt 1河北科技师范学院 2015 届本科毕业设计45Echo=0;/*/*定时器 1 中断,发送超声波*/void timer1() interrupt 3meter_distance();/*/*函数:main()描述:主函数/*/void main(void)UCHAR RX_BUF;

温馨提示

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

评论

0/150

提交评论