基于AT89S51单片机的智能超声波避障小车姓名:钟洋班级:08电子二班学号:200810330219指导老师:张儒2目录摘要...........................................3一、总体方案概述.......................................3二、总体电路原理图....................................3三、各模块功能介绍.................................4(一)、超声波测距模块................................4(二)、数码管显示模块................................4(三)、步进电机控制模块..............................6(四)、语音提示模块..................................7(五)、速度自控模块..................................8(六)、信号提示模块..................................8(七)、单片机控制模块...............................8四、系统软件设计..................................9五、元件清单.....................................10六、应用前景.....................................10六、参考文献.....................................113摘要:现今发达的交通在给人们带来便捷的同时也带来了许多的交通事故。发生交通事故的因素有很多。当然,如果我们的汽车能够更加智能,就是说事先能预测并显示前面障碍物离车的距离,当障碍物距离很近时汽车会自动采取一些措施避开障碍物,这样就能够在很大程度上避免这些事故的发生。在本论文中,我们将会看到能够实现这一功能的智能小车。关键字:超声波、测量、避障、单片机、语音一、总体方案概述本小车使用一台AT89S51单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,并且用数码管实时的显示出来,在小车与障碍物的距离小于安全距离(用软件设定)时,小车会发出“在距您车前方x(数码显示的实时距离)米的地方有一障碍物,请您注意避让”的语音提示,并且拐弯,以避开障碍物,同时会点亮相应侧边的发光二极管作为提示信号。在避开障碍物后,小车会沿直线前进。本系统设计的简易智能小车分为几个模块:单片机控制系统、超声波路面检测系统、前进、转弯控制电机以及方向指示灯系统。它们之间的相互关系如下图1所示。二、总体电路原理图IN11IN22IN33IN44IN55IN66IN77IN88GND9CM10OUT811OUT712OUT613OUT514OUT415OUT316OUT217OUT118U1ULN280312345P1BJDJ1VCC1TRIG2ECHO3OUT4GND5U2ultrasonicP101P112P123P134P145P156P167P178RST/VPD9P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR16P37/RD17XTAL218XTAL019VSS20P2021P2122P2223P2324P2425P2526P2627P2728PESN29ALE/PROG30EA/VPP31P0732P0633P0534P0435P0336P0237P0138P0039VCC40A1AT89S5120pfC320pfC210ufC1R9S1X1GNDGNDVCCGNDVCCGND12345P2BJDJ2OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8VCCGNDTRIGTRIGECHOECHOSSSCLKMOSIMISOe1d2dp3c4g546b73829f10a11112l8LEDQ1Q2Q3Q4VCCLED1LED2LED3LED4LED1LED2LED3LED4aabbccddeeffggdpdpFIRSTFIRSTSECONDSECONDTHIRDTHIRDFORTHFORTH470R1470R2470R3470R4470R5470R6470R7470R810kR1010kR1110kR1210kR13RSTS2S3L2L3L4L5VCCLCD1LCD2LCD3LCD1LCD2LCD3L1POWERGNDVccd1LED2RESET3MISO4MOSI5SCLK6SS7Vssa8Analn9MIC+10MIC-11Vssp212SP-13Vccp14SP+15Vssp116AUD/AUX17AGC18VOL19Rosc20Vcca21FT22PLAY23REC24ERASE25FWD26INT/RDY27Vssd28I1ISD1760REC1PLAY1ERASE1S5VOL1S6S4GND4.7KR20R19R0.1ufC140.1ufC154.7KR214.7KR22VCC80KR234.7ufC74.7ufC1612P3MICL70.1ufC4GNDVCC0.1ufC64.7ufC5GND0.1ufC94.7ufC80.1ufC124.7ufC100.1ufC134.7ufC1112P4SperkerGNDSSSCLKMOSIMISOGNDGNDGNDVCCVCCVCCGNDGNDGND470R14470R15470R16470R17LCD2L6470R18LCD1P10P11P12P13P14P15P16P17P10P11P12P13P14P15P16P17图1:智能小车简要原理框架图4三、各模块功能介绍(一)、超声波测距模块首先利用单片机输出一个40kHz的触发信号,把触发信号通过TRIG管脚输入到超声波测距模块,再由超声波测距模块的发射器向某一方向发射超声波,在发射时刻的同时单片机通过软件开始计时,超声波在空气中传播,途中碰到障碍物返回,超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机,此时单片机就立即停止计时。时序图如图1所示。由于超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离,即:S=VT/2,通过单片机来算出距离。(二)、数码管显示模块1、数码管显示原理数码管有一位、双位、四位等几种。而不管将几位数码管连在一起,数码管和显示原理都是一样的,都是靠点亮内部的发光二极管来发光。数码管的内部电路结构如下页图所示:从(a)可看出,一位数码管的引脚数是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚。而它们的公共端又分为共阳极和共阴极。上页图的(b)和(c)分别为共阳极和共阴极数码管的原理图。本小车的数码管采用的是4位共阳极数码管。所谓“共阳”就是指其内部的8个发光二极管的阳极全部接在一起,而它们的阴极是独立的,通常在设计电路时一般把阳极接VCC,当我图1:超声波模块时序图5们给数码管的任一个阴极加低电平时,对应的那个发光二极管就点亮了。当使用多位一体数码管时,它们内部的公共端是独立的,而负责显示什么数字的段线全部都是连在一起的,独立的公共端可以控制多位数码管中哪一位点亮。通常我们把公共端叫做“位选线”,连在一起的段线叫做“段选线”。2、显示部分C源程序的编写:由于在本电子钟中4位数码管的段选线是直接接在单片机的P0口的,所以我们首先应该计算出显示各个数字所对应的P0口输出的二进制编码。例如如果要显示一个“0”,对照上面的(a)图,我们需要点亮数码管中的a、b、c、d、e、f,而g和dp不点亮,故a、b、c、d、e、f、g、dp对应的二进制编码就为:00000011。再对照数码管段选线与单片机连接的顺序就可得要赋给单片机P0口的值应为10100000,转换为十六进制就是a0。同理可以得到其它数字对应的十六进制编码:ucharcodetable[10]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28};ucharcodetable_dot[10]={0x80,0x9e,0x42,0x0a,0x1c,0x09,0x01,0x9a,0x00,0x08};//带小数点的数字段码表abcdefgdpabcdefgdpGND+5(c)共阳极(b)共阴极AfgedAcdpbaabcdefgdp(a)引脚图图2:数码管内部原理图63、数码管实时显示距离用单片机控制四位共阳7段数码管来动态显示出测量距离。在总体电路图中是通过单片机的P1I/O口来控制数码管的段选,通过P3.0到P3.3四个I/O口来控制四位数码管的位显示,具体的显示是通过单片机的软件来控制数码管的数据显示,把单片机计算出来的数据距离实时的显示出来。(三)、步进电机控制模块此模块是用来作为小车前进的动力和控制小车的避障。步进电机是通过脉冲来驱动的,其步距角和转速只与输入的脉冲频率有关,频率越快,其转速越快,因此,只需要控制驱动步进电机的脉冲频率来控制步进电机的工作,而步进电机的驱动脉冲可以通过单片机来输出。但由于步进电机工作时需要较大的工作电流,因此需要用步e1d2dp3c4g546b73829f10a11112l8LEDQ1Q2Q3Q4VCCLED1LED2LED3LED4LED1LED2LED3LED4abcdefgdpFIRSTSECONDTHIRDFORTH图3:指示灯与数码管显示电路IN11IN22IN33IN44IN55IN66IN77IN88GND9CM10OUT811OUT712OUT613OUT514OUT415OUT316OUT217OUT118U1ULN280312345P1BJDJ1VCC1TRIG2ECHO3OUT4GND5U2ultrasonicGND12345P2BJDJ2OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8VCCGNDTRIGECHOP10P11P12P13P14P15P16P17图4:步进电机驱动模块原理图7进电机驱动芯片来驱动,如图4所示,我们用ULN2803芯片来驱动步进电机,并且用单片机的P0I/O口来给ULN2803芯片输入不同频率的脉冲,再通过ULN2803来驱动步进电机。本小车使用的是两个四相五线的步进电机来驱动。我们知道,四相五线步进电机共有五根线,其中红色的接电源的正极,剩下的四根分别接在了ULN2803芯片的四个输出端,其对应的输入端则接在了单片机的P1.0~P1.3端口,要使电机工作,则只需让四个I/O口依次输出高电平。电机励磁表如下所示:励磁顺序AABB11000201003001040001小车的前面两个轮子分别用两个步进电机来驱动,当两个步进电机的转速一样的时候,车子将沿直线前进,而两个步进电机的转速不一样的时候,车子就会拐弯,例如,左边的步进电机转速比右边的快的话,车子将向右边拐弯,只要控制好两个步进电机的转速比和不同转速的时间,就可以精确的控制小车的避障行为。(四)、语音提示模块此模块是用来提供语音提示的,当小车距离障碍物距离(这个距离可以自行设定)很近时,小车的控制系统会发出“在距您车前方x米的地方有一障碍物,请您注意避让”的语音提示。此功能是用ISD1760语音芯片来实现,预先给语音芯片录入“在距您车前方”,“米的地方有一障碍物,请您注意避让”,“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”等语音信息,在通过单片机程序来控制语音芯片的定点