1、题 目: 自动避障小车设计 1目 录摘要1前言21方案设计与论证21.1 主控芯片的选择31.2直流电机驱动芯片的选择31.3测距传感器的选择31.4直流调速系统41.5系统设计框图52硬件设计52.1最小应用系统设计72.2直流电机驱动模块的设计82.3检测障碍物的超声波模块设计93 软件设计113.1 超声波避障部分软件设计113.1.1超声波测距部分程序分析123.2直流电机驱动部分软件设计133.2.1直流电机控制部程序分析133.3 软件抗干扰技术144 仿真数据分析及结论164.1仿真数据分析164.1.1 单片机控制直流电机遇障运转仿真174.1.2超声波测距17结论18致谢18
2、参考文献18附录120附录2231自动避障小车设计18自动避障小车设计电子信息科学与技术专业学生:肖利君指导老师:胡惟文摘要:本系统采用89C52单片机为控制核心,利用超声波传感器检测道路上的障碍,然后把数据传送给单片机,当超声波检测到距离小车前方50CM有障碍物时单片机就发出指令让小车左转45度角,走20CM.如果前方50CM没有障碍物就直走。如此通过超声波不断的循环检测周边环境的情况进行自动避障。该系统在驱动方面采用L298驱动2个直流电机带动小车运行。并且,用PWM系统调速,控制小车前进的速度。关键词: 89C52,PWM调速,电动小车,超声波Design of automatic ob
3、stacle-avoiding car Electronics and Information Science and Technology Candidate: Xiao LijunAdvisor:Hu WeiwenAbstract: This system uses 89C52 microcontroller as control core, with ultrasonic sensor detects obstacles on the road, then transfer the data to the SCM, when the ultrasonic detected the obs
4、tacle by distance trolley front 50CM obstructions is issued a directive when microcontroller let car left a 45-degree angle, go ahead 20CM. If there are no obstacles in the front then, go straight 50CM. So by ultrasonic continuously loop detecting the surroundings for smart obstacle avoidance. The s
5、ystem uses the driver L298 driving two DC motors to drive the car running. And using the PWM to control the speed of car ahead .Keywords: 89C52, PWM control, electric car, ultrasonic 前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目
6、而确定的设计类课题。设计的自动避障系统应该能够自动避障功能,能够实现最短距离达到指定位置停车,可程控行驶速度。根据题目的要求,本设计在现有玩具电动车的基础上,超声波传感器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS-51系列中的89C52单片机。以89C52为控制核心,利用超声波传感器检测道路上的障碍,控制电动小车的自动避障,快慢速行驶,以及自动停车。89C52是一款八位单片机,它的易用性和多
7、功能性受到了广大使用者的好评。它是第三代单片机的代表。第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,如8xC15280C51FA/FB80C51GA/GB8xC4518xC452,还包括了PhilipsSiemensADMFujutsuOKIHarria-MetraATMEL等公司以80C51为核心推出的大量各具特色与80C51兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等。这一代单
8、片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列89xC52单片机引入了具有较强功能的设备间网络系统总线CAN(Controller Area Network BUS)。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础1。 本设计就采用了比较先进的89C52为控制核心,采用专用电机驱动芯片L298,用超声波为探测传感器。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。在考古方面也应用到了超声波传感器进行检测。所以本设计现实意义很强。1方案设计与
9、论证根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加装超声波模块检测小车周边障碍物的实时情况。然后,超声波把数据返回给单片机,单片机发送相应的指令实现对电动小车的自动避障、运行状况的实时测量,从而达到利用单片机对小车智能控制,自动避障的目的。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。1.1 主控芯片的选择能够实现本系统的主控芯片现在市场上有很多种类,如,MCS-51系列单片机AT89C52,AVR单片机 ,还有ARM等等。相对其他的主控芯片而言MCS-51系列单片机具有一下几点优势:首先AT89C52单片机完全能够很好的完成本设计的
10、所有功能。AT89C52的外围电路简单,控制方便。关键AT89C52价格相对其他控制芯片而言要便宜很多。综合以上几点我在最终设计的时候选择了MCS-51系列单片机AT89C52来完成本设计。1.2直流电机驱动芯片的选择对于直流电机驱动芯片的选择首先我们要考虑它的输出功率能不能很好的驱动小车的两个直流电机。然后,考虑它的外围电路是否简单。还有就是考虑它的价格是否相对比较便宜。综合这些我最终选择我以前用过的我们大家都比较熟悉的电机驱动芯片L298。1.3测距传感器的选择随着科技的进步,传感器领域也相应得到了空前的发展。其在我们的各个领域应用的十分的广泛。对于本系统在传感器的选择上,在超声波传感器,
11、红外传感器,激光传感器这三种的选择中不知道选择哪种更好。经过老师和几个专业人士的分析,考虑到对于传感器的选择上关键要它的抗干扰性,还有就是它的反应是否灵敏以及它的实用性。最后,经过实验得出红外传感器感应距离太短最多只有50CM,激光价格太昂贵不实用。所以最终选择了超声波传感器。1.4直流调速系统方案1:静止可控整流器。简称V-M系统。方案2:脉宽调速系统。V-M系统是当今直流调速系统的主要形式。它可以是单相、三相或更多相数,半波、全波、半控、全控等类型,可实现平滑调速。V-M系统的缺点是晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是运行条件要求高,维护运行麻烦
12、。最后,当系统处于低速运行时,系统的功率因数很低,并产生较大的谐波电流危害附近的用电设备5。采用晶闸管的直流斩波器基本原理与整流电路不同的是,在这里晶闸管不受相位控制,而是工作在开关状态。当晶闸管被触发导通时,电源电压加到电动机上,当晶闸管关断时,直流电源与电动机断开,电动机经二极管续流,两端电压接近于零。脉冲宽度调制(Pulse Width Modulation),简称PWM。脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速3。与V-M系统相比,PWM调速系统有下列优点:(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流
13、容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了H型单极型可逆PWM变换器进行调速。脉宽调速系统的主电路采用脉宽调制式变换器,简称PWM变换器。脉宽调速也可通过单片机模拟精确实现。但是,如果仅用单片机输出高低电平来达到脉宽调制的效果其驱动能
14、力比较小,不足以驱动小车。所以,本设计采用单片机带动直流电机驱动芯片L298,再通过单片机用PWM信号控制直流电机。L298内置两个H桥,每个桥提供1A的额定工作电流,和最大2A的峰值电流。它能驱动的马达一般是不超过35毫米照片胶卷筒大小。1.5系统设计框图本系统采用89C52单片机进行智能控制。开始由手动启动小车,并复位,当小车上的超声波检测到前方50CM处有障碍物的时候就开始左转45度角。向前走20CM,由超声波传感器进行实时检测周边环境情况。通过单片机控制小车开始转弯并避障、调速;系统的自动避障功能通过超声波传感器正前方检测,由单片机控制实现;在电动车进驶过程中,采用单片机驱动L298实
15、施PWM脉宽调制技术,以提高系统的静动态性能。系统原理图如图1.1所示。 AT89C52 单 片 机 主 控 超声波障碍物检测检测 L298直流电机驱动复位电路 时钟电路图1.1 系统设计款图2硬件设计本系统整个硬件设计分为三大块分别为单片机最小系统的设计;检测障碍物的超声波模块的设计;直流电机驱动电路的设计。其整体通信是以单片机为核心,各部分通过一下方式进行联机:单片机AT89C52的端口P1.0和P1.1接电机驱动芯片L298的信号输入端口IN1和IN2。单片机通过软件PWM调制信号输出不同占空比的脉冲从而达到控制L298输出端口out1与out2的高低电平,进而控制直流电机1的运转情况。
16、由于直流电机1为小车的左驱动,所以这样就可以达到控制小车左驱动的目的。单片机的端口P1.2和P1.3接电机驱动芯片L298的信号输入端口IN3和IN4。其以同样的方式控制L298的输出端口out3和out4。因out3和out4接直流电机2作为小车的右驱动,主控芯片AT89C52这样就控制了小车的右驱动。将VCC和GND接上9V的电源与地,最终单片机就可以达到控制小车前进,左右转弯的目的。电机的整个控制情况如下表2.1和2.2所示。当直流电机1和直流电机2同时以同样的PWM调制信号正转是小车走直线前进;当直流电机1正转,直流电机2反转时小车左转弯,直流电机1反转,直流电机2正转小车右转弯。当直
17、流电机1和直流电机2都停止时小车也就停止了。对于超声波模块的联机是将其VCC和GND引脚分别接+5V的电源和地,将TR和RE引脚接单片机的P0.1和P0.2作为超声波遇到障碍物的发射与接收信息和主控的通道。表2.1 电机1当单片机发出相关指令时的运转情况:单片机端口的指令电平L298输出端口电机1运转情况Out1Out2P1.0111正转P1.1000P1.0000反转P1.1111P1.0000停止P1.1000表2.2 电机1当单片机发出相关指令时的运转情况:单片机端口的指令电平L298输出端口电机2运转情况Out1Out2P1.2111正转P1.3000P1.2000反转P1.3111P
18、1.2000停止P1.30002.1最小应用系统设计AT89C52片内有ROM/EPROM的单片机,其硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。因此,这种芯片构成的最小系统简单、可靠。用89C52单片机构成最小应用系统时,
19、只要将单片机接上时钟电路和复位电路即可,89C52单片机最小系统如图2.1所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:(1) 有可供用户使用的大量I/O口线。(2) 内部存储器容量有限。(3) 应用系统开发具有特殊性2。图2.1 89C52单片机最小系统1、时钟电路89C52虽然有内部振荡电路,但要形成时钟,必须外部附加电路。89C52单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组
20、成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择6MHZ,电容选择65pF6。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容。2、复位电路89C52的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电
21、平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1K。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。时钟频率选用6MHZ时,C取22uF,Rs取200,RK取1K2。2.2直流电机驱动模块的设计 本设计采用了L298作为直流电机的驱动模块的芯片。直流
22、电机驱动模块主要功能是将主控芯片AT89C52发出的信号通过L298电机控制芯片转化为小车实际的动作。 L298芯片有两个电源引脚VDD引脚和VCC引脚。VDD引脚接+9V电源用来给电机供电,VCC引脚接+5V电源用来给芯片供电,并作为逻辑高电平标准5。 L298芯片通过一个有四个1N4148二极管组成的保护电路与电机相连,保护电路主要是用来在电机开启和关闭时泄流之用。 由于我们一直让电机以最大功率使能从而获得最大的扭矩,保证小车很好的运转,而不需要控制电机的输出功率,所以ENA引脚(即转向电机使能引脚)直接P1.4,即让驱动电机一直使能。 我们不仅要控制其实现直走、转弯和停止,还要能够控制其
23、转速以解决由于电量不足而产生的小车变慢的问题。所以,我们将L298N芯片的ENB引脚与P1.5连接,用来实现PWM调速。L298芯片的IN1和IN2引脚分别和单片机AT89C52的P1.0和P1.1引脚连接用来接收主控芯片输出的驱动电机的动作指令,并通过OUT1和OUT2来控制驱动电机1的正转与反转,最终功能的实现表现在小车的左转与右转。 L298芯片的IN3和IN4引脚分别与单片机的P1.2和P1.3引脚连接用来接收主控芯片输出的驱动电机的动作指令,并通过OUT3和OUT4来控制驱动电机2的正转与反转,最终功能的实现表现在小车的前进、后退、停止。L298模块原理图如图2.2所示。 图2.2
24、L298模块原理图2.3检测障碍物的超声波模块设计1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生4。 2、压电式超声波发生器原理压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有
25、振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了4。3、 超声波测距原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,空气中传播,途共振板电板电压晶片中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2这就是所谓的时间差测距法。超声波传感器结构如图2.3所示4。图2.3 超声波传感器结构4超声波在本设计中的
26、原理分析本设计采用反射型超声波传感器作为探测前方障碍物体的检测元件。其中心频率为40kHz,由89C52发出的40KHz脉冲信号驱动超声波传感器发送器发出40KHz的脉冲超声波。如电动车前方遇到有障碍物时,此超声波信号被障碍物反射回来,由接收器接收。经LM324两级放大,再经带有锁相环的音频解码芯片LM567解码,当LM324的 (a) 超声波模块正面图 ( b )超声波模块反面图图2.4超声波实物图输入信号大于25mV时,输出端由高电平变为低电平,送89C52单片机处理6。超声波实物图如图2.4所示。超声波模块内部检测如图2.5超声波检测电路所示。 图 2.5 超声模块内部波检测电路3 软件
27、设计本系统软件采用C语言编写,C编译器为KEIL C51,其整体设计分为以下几块,超声波避障子程序;直流电机驱动子程序;中断子程序;延时子程序;其中直流电机驱动程序又分为直走驱动子程序,左转弯子程序,右转弯子程序。最后把所有的情况在主控程序中综合起来,根据超声波所检测的当时的环境情况对不同的子程序进行调用,从而控制小车进行相关的动作1。系统设计的软件流程 如图3.1流程图所。3.1 超声波避障部分软件设计对于利用超声波检测周边环境情况进行避障,首先我必须明白其检测障碍物的相关算法。由于超声波是利用本身发射超声波脉冲然后遇到障碍物把脉冲反射回来,在通过速度和时间的关系来进行检测的。所以,我们可以
28、得出小车与障碍物的距离的算法为公式(4-1)。D=s*sin/2=v*t/2 (3-1)其中,d为被测物与测量器的距离;s为声波的来回路程;v为声速;t为来回所用的时间。3.1.1超声波测距部分程序分析先调用LCD子程序,让超声波测量距离的数据显示。在while循环中不断的对前方数据扫描检测周边障碍物。其中给TRIG脚先置高电平,这样超声波发出8个40HZ的方波信号,稍作延时,再把TRIG脚置低电平。当检测有信号返回时IO口就输出高电平。这样就可以通过公式计算出障碍物距小车的距离。部分程序如下:初始化开关是否按下 到达目的地停止向前直走 是否到目的地 左转弯 前方有障碍物否 右转弯前方有障碍物
29、否是是是是否否否图3.1 软件流程图 void main(void) while(1) TRIG=1; delay(1); TRIG=0; while(ECHO=0); while(ECHO=1) a+; /a每次加1,所时间约21us delay(30); a=(340*a*21)/1000)/2; if(a=50) else void zhiliudianji3(); delay(200); void zhiliudianji1(); z=a; a=0; delay(200); 3.2直流电机驱动部分软件设计 为了很好的控制直流电机的速度,本系统采用脉冲宽度调制信号(PWM信号)实现对直流
30、电机的精确控制。其实,PWM脉宽调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。而输出频率的变化可通过改变此脉冲的调制周期来实现。这样,使调压和调频两个作用配合一致,且于中间直流环节无关,因而加快了调节速度,改善了动态性能。而PWM信号可以用单片机模拟,可以通过单片机精确的控制脉宽的变化。3.2.1直流电机控制部程序分析#include,#include 这两个为调用killc的库文件reg52.h和intrinsic.h的头文件。sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;这个是单片机端口定义。P0_0=
31、1;P0_1=0;这个是给端口给高低电平让直流电机导通,运转。delaym1(280);P0_0=0;P0_1=0;这个为调用延时子程序,再给P0_0和P0_1赋低电平。如此实现PWM信号调制。部分程序如下: P0_0=1; P0_1=0; delaym1(280); P0_0=0; P0_1=0; 3.3 软件抗干扰技术提高玩具车智能控制的可靠性,仅靠硬件抗干扰是不够的,需要进一步借助于软件抗干扰技术来克服某些干扰6。在单片机控制系统中,如能正确的采用软件抗干扰技术,与硬件干扰措施构成双道抗干扰防线,无疑为了将大大提高控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、开关量的软件抗干
32、扰技术、指令冗余技术、软件陷阱技术等。1、数字滤波技术一般单片机应用系统的模拟输入信号中,均含有种种噪音和干扰,它们来自被测量本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪音和干扰。对于这类信号,采用积分时间等于20ms的整数倍的双积分A/D转换器,可有效的消除其影响。后者为随机信号,它不是周期信号。对于随机干扰,我们可以用数字滤波方法予以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。数字滤波克服了模拟滤波器的不足,它与模拟滤波器相比,有以下几个优点:(1)数字滤波是用程序实现的,不需要增加硬设备,所以可靠
33、性高,稳定性好。(2)数字滤波可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便,功能强的特点。(3)数字滤波可以对频率很低的信号实现滤波,克服了模拟滤波器的缺陷。(4)数字滤波器具有以上优点,所以数字滤波在微机应用系统中得到了广泛应用。2、开关量的软件抗干扰技术干扰信号多呈毛刺状,作用时间短,利用这一点,我们在采集某一开关量信号时,可多次重复采集,直到连续两次或两次以上结果完全一致方为有效。若多次采样后,信号总是变化不定,可停止采集,给出报警信号,由于开关量信号主要是来自各开关型状态传感器,如限位开关、操作按钮、电气触点等,对这些信号的采集不能用多次平均的方法,必须绝对一致才行
34、。如果开关量信号超过8个,可按8个一组进行分组处理,也可定义多字节信息暂存区,按类似方法处理。在满足实时性要求的前提下,如果在各次采集数字信号之间接入一段延时,效果会好一些,就能对抗较宽的干扰7。输出设备是电位控制型还是同步锁存型,对干扰的敏感性相对较大。前者有良好的抗“毛刺”干扰能力,后者不耐干扰,当锁存线上出现干扰时,它就会盲目锁存当前的数据,也不管此时数据是否有效。输出设备和惯性(响应速度)与干扰的耐受能力也有很大关系。惯性大的输出设备(如各类电磁执行机构)对毛刺干扰有一定的耐受能力。惯性小的输出设备(如通行口、显示设备)耐受能力就小一些。在软件上,最为有效的方法就是重复输出同一个数据。
35、只要有可能,其重复周期尽可能短些。外设设备接受到一个被干扰的错误信息后,还来不及作出有效的反应,一个正确的信息又来了,就可及时防止错误动作的产生。另外,各类数据锁存器尽可能和CPU安装在同一电路板上,使传输线上传送的都是锁存好的电位控制信号,对于重要的输出设备,最好建立检测通道,CPU可以检测通道来确定输出结果的正确性6。3、指令冗余技术当CPU受到干扰后,往往将一些操作数当作指令码来执行,引起程序混乱。当程序弹飞到某一字节指令上时,便自动纳入正轨。当弹飞到某一双字节指令上时,有可能落到其操作数上,从而继续出错。当程序弹飞到三字节指令上时,因它有两个操作数,继续出错的机会就更大。因此,我们应多
36、采用单字节指令(NOP)或将单字节指令重复书写,这便是指令冗余。指令冗余无疑会降低系统的效率,但在绝大多数情况下,CPU还不至于忙到不能多执行几条指令的程度,故这种方法还是被广泛采用7。在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的程序迅速纳入正确轨道。在某些对系统工作状态重要的指令前也可插入两条NOP指令,以保证正确执行。指令冗余技术可以减少程序弹飞的次数,使其很快进入程序轨道,但这并不能保证在失控期间不干坏事,更不能保证程序纳入正常轨道后就太平无事了,解决这个问题必须采用软件容错技术。4软件陷阱技术指令冗余使弹飞的程序安定下来是有条件的。首先,弹飞的程序必须落到程序区
37、;其次,必须执行到冗余指令。所谓软件陷阱,就是一套引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序。如果我们把这段程序的入口标号记为ERR的话,软件陷阱即为一条无条件转移指令,为了加强其捕捉效果,一般还在它前面加两条 NOP 指令,因此真正的软件陷阱由3条指令构成: NOP ; NOP ; ERR ;软件陷阱安排在以下三种地方:(1)未使用的中断向量区。(2)未使用的大片ROM空间。(3)表格。5、程序区由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率,在当前EPROM容量不成问题的条件下,还是多多益善。CPU必须在正确完成所有工作后才能发
38、扫描输入信号,且程序中发扫描信号的地方不能太多。否则,正好在哪里有死循环,看门狗就不产生记满输出信号,不能重新启动CPU。89C51按键电路直接由89C51接口电路查询。消抖(延时20ms)由软件延时完成。4 仿真数据分析及结论4.1仿真数据分析 本系统设计仿真采用当前单片机主流仿真软件PROTEUS,它是英国Labcenter electronics公司的EDA工具软件。Proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原
39、型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus能够很容易的为用户建立了完备的电子设计开发环境。 Proteus产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。不愧为一款非常优秀的单片机仿真软件。本系统仿真分为两部分,第一部分为单片机控制直流电机运转情况仿真;第二部分为超声波测距通过单片机开发板仿真演示。4.1.1 单片机控制直流电机遇障运转仿真这部分仿真时利用PROTEUS 软件,通过两个按键模仿小车的遇到障碍物时的左转和右转控制键。仿真图如图4.1
40、所示。图4.1 直流电机遇障运转仿真4.1.2超声波测距这个部分利用单片机开发板,连接超声波模块,通过LCD12864显示超声波距前方障碍物的距离其测距原理是,当超声波检测到前方有障碍物的时候把数据传给单片机,单片机再把当前距障碍物的距离数据发送给LCD12864显示出来。其演示图如图4.2所示。 图4.2 LCD12864 显示的超声波距障碍物的距离数据结论通过proteus仿真测试以及单片机开发板的测试,表明本系统可以实现自动避障。当小车上的超声波检测到距离小车前方50CM有障碍物时单片机就发出指令让小车左转45度角,走20CM。如果前方50CM没有障碍物就直走。这样通过超声波不断的循环检
41、测周边环境的情况进行自动避障。从去年搞完全国电子设计比赛就打算结合科研项目遥控环境数据测绘机器人的智能避障部分做毕业设计。前期我也做了很多这方面的准备,比方说找查阅相关的一些资料,购买项目的一些必备器件,做与这个项目有关的硬件如单片机最小系统板,LCD显示电路模块,等等。虽然后来由于和我合作一起做这个项目的同学,因为工作方面的原因离开学校,项目也因此被搁置起来。但是,通过项目前期的学习,以及这段时间做毕业设计的过程中我学到了很多与实践有关的东西。提升了自己的动手能力,也巩固了我的模电,数电和单片机基础知识。由于条件的限制和诸多方面的原因,本设计虽然没有完全完成科研项目遥控环境数据测绘机器人的智
42、能避障部分。但是,本设计已经能够实现小车自动避障,只是没有达到项目要求的那样以最短距离到达指定地点。参考文献1 何立民.单片机应用系统设计M.北京:航天航空大学出版社,25,46502 李广弟,单片机基础M.北京:北京航空航天大学出版社,2001,56643 何希才,新型实用电子电路400例M.电子工业出版社,2000年,60654 赵负图,传感器集成电路手册M.第一版,化学工业出版社,2004,5905915 陈伯时,电力拖动自动控制系统M.第二版,北京:机械工业出版社,2000年6月,1271306 张毅刚,彭喜元,新编MS-51单片机应用设计M.第一版,哈尔滨工业大学出版社,2003.7
43、 Andrew Koenig ,Barbara Moo .Ruminations on C+: A Decade of Programming Insight and ExperienceM.USA:Pearson Education ,1996自动避障小车设计附录1:图1 超声波模块内部原理图24 图2 单片机控制直流电机原理图 图3 整体仿真原理图附录2:程序清单:#include #defineuchar unsigned char#define uint unsigned intsbit P1_O=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P1
44、3; sbit P0_2=P01;sbit P0_3=P02;void delaym1(uint z)uint i;for(i=0;iz;i+);void main(void) while(1); TRIG=1; delay(1); TRIG=0; while(ECHO=0); while(ECHO=1) a+; /a每次加1,所时间约21us delay(30); a=(340*a*21)/1000)/2; display(); scan(); z=a; a=0; delay(200);void zhiliudianji1()uint i,j;P0=0X00; /走直线 for(i=0;i200;i+) for(i=0;i500;i+) P0_O=1; P0_1=0; delaym1(280); P0_O=0; P0_1=0; P0_2=1; P0_3=0; delaym1(420); P0_2=0; P0_3=0; P0=0X00; delaym1(30000); delaym1(30000);/右转弯void zhiliudianji2()for(j=0;j300;j+) P0_O=1; P0_1=0; delaym1(300); P0_O=0; P0_