版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘要: 3Abstract 4第一章绪论 51.1引言 51.2超声波测距原理以及理论分析 5第二章系统概述 62.1方案选择 62.1.1方案一 62.1.2方案二 72.2系统设计原理 72.3系统组成 82.3.1主控制器 82.3.2显示电路 82.3.3HC-SR04超声波模块 8第3章系统硬件设计 93.1主控芯片STC89C51 93.1.1单片机特点: 93.1.2内部结构 93.1.3引脚图以及部分引脚功能 93.2液晶显示模块 103.2.1模块简介: 103.2.2引脚功能说明: 113.2.3系统显示模块电路 113.3超声波测距模块 113.3.1模块简介 113.3.2模块工作原理: 123.3.3模块电气参数 123.3.4系统超声波模块电路 123.4报警电路模块 123.4.1蜂蜜器简介 123.4.2系统报警电路模块 12第四章系统软件设计 134.1主程序设计 134.1.1主程序简介 134.1.2程序代码 134.2LCD显示模块程序设计 154.2.1模块简介 154.2.2程序代码 154.3超声波测距模块程序设计 184.3.1模块简介 184.3.2模块代码 184.4报警模块程序设计 204.4.1模块简介 204.4.2模块代码 204.5辅助代码 20结论 24超声波倒车雷达系统设计摘要:基于超声波测距的汽车倒车雷达系统是在了解超声波测距原理以及51单片机基本原理的基础上提出并实现的,该系统工作时,在单片机控制下超声波传感器发出脉冲信号,超声波在传播过程中碰到障碍物后反射,反射波由超声波接受装置接受后送至51单片机解决,从而实现汽车倒车过程中障碍物的实时监测并通过显示屏以及警报器提醒驾驶员。本系统是由以STC89C51单片机作为主控模块,超声波发射接受模块构成传感器模块,LCD显示模块,蜂鸣器报警模块等硬件系统以及软件程序设计组成。关键词:单片机;超声波测距;LCD显示;报警;程序设计ThedesignofultrasonicreversingradarsystemAbstract:Automobilereversingradarsystembasedonultrasonicdistancemeasurementisintheunderstandingoftheprincipleofultrasonicdistancemeasurementandthebasicprincipleof51singlechipmicrocomputerbasedontheproposedandimplemented,Thesystemisworking,Underthecontrolofthemicrocontrollerultrasonicsensorsendsoutpulsesignals,UltrasonicobstacleintheprocessofpropagationafterreflectionThereflectedwavefromtheultrasonicreceivingdevicereceivestheevacuationto51singlechipprocessing,Soastorealizereal-timemonitoringobstaclescarreversingtheprocessobjectandthroughthedisplayandalarmtoremindthedriver.ThissystemiscomposedofMCUSTC89C51asthemaincontrolmodule,Ultrasonictransmittingandreceivingmodulessensormodule,LCDdisplaymodule,Thebuzzeralarmmoduleofhardwaresystemandsoftwareprogramdesigncomposition.Keywords:Singlechipmicrocomputer;Ultrasonicranging;LCDdisplay;Alarm;Programdesign
第一章绪论1.1引言近年来,随着科技带动汽车行业的快速发展以及人们生活水平的不断提高,我国汽车数量正在逐年增长。同时对于一名驾驶员来说,倒车是必须掌握的技能,与前进相比倒车更加需要小心谨慎,在街道,车库,停车场等场合倒车时,往往由于驾驶员无暇同时顾及汽车前后和四周以及尾部视线盲区等因素引起的交通事故不在少数,这些事故中轻则对自己的车和别人的财物导致损伤,重则也许危及人的性命。现如此后视镜已越来越不能满足人们安全倒车的需求了。据初步调查记录,15%的汽车事故是由汽车倒车后视不良导致的。因此,人们对汽车倒车操纵的便捷性提出了更高的规定,增长汽车的后视能力研制汽车尾部探测障碍物的倒车雷达成为近年来的热点之一,然而安全避障的前提是快速准确的测量障碍物与汽车之间的距离。超声波具有在传播中不受电磁场,色彩以及关照等影响的特性,同时超声波传感器解决信息简朴,硬件易于实现以及价格低廉等优点,被人们广泛的用作测距传感器。本文基于STC89C51单片机以及HC-SRF04超声波测距模块进行研究,从而设计实现了超声波测距倒车雷达。1.2超声波测距原理以及理论分析 声波是物体机械振动状态(或能量)的传播形式,一般来说,频率在20Hz—20230Hz之间的机械波能被人耳感知为声波,频率低于20Hz的机械波为次声波,频率高于20230Hz的机械波称为超声波。而高于100MHz的机械波则称之为特超声波。由于超声波具有方向性好,穿透能力强,易于获得较集中的声能的特性一次经常被用于测距。 超声波测距是依据声波从发射到接受过程中的在空气介质中的传播时间测出声波的传播距离的。本文使用的超声波模块是借助于超声脉冲回波渡越时间法来实现的。设超声波脉冲由传感器发出到接受所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目的物体的距离D可用下式求出D=ct/2
第二章系统概述2.1方案选择2.1.1方案一 超声波测距模块采用SRF08测距模块对障碍物的位置进行检测,为了保证检测对车身的准拟定位,系统设计采用3个模块分别在尾部和左右同时检测,当检测到障碍物距离车身小于1米时系统红灯闪烁同时蜂鸣器报警在测量过程中通过LCD显示屏实时显示车身尾部以及左右距离障碍物的距离。由于SRF08超声波模块接口采用I2C总线接口设计,可以与PIC等总舵解决器配合使用,因此该模块使用方便。SRF08是一款高性能的双探头超声波,其探测距离为3厘米-6米,独特的触发指令可以让SRF08工作在连续探测模式下,也就是可以自动在完毕一个距离探测后自动进行第二次探测,相称于连接了一个微解决器。同时SRF08超声波测距模块内部具有36个寄存器,测距模式需要对相应寄存器进行操作,在测距模式下每向命令寄存器写入一次命令就会启动一次测距,启动测距时,回波记录缓冲区数据也将同时清除。测量得到的距离将按照测量的顺序按照2B为单位一次进村入寄存器,由于一次测距需要一定的等待时间,这个时间可以通过主控芯片修改SRF08测量范围寄存器中的数据来改变。在等待时间半晌,可以对挂载总线上的其他模块进行启动测距操作,,从而实现3个测距模块的在短时间内工作,达成高效,实时,准确的测距定位。由于需要直观明了的显示3个位置的测距信息,考虑到显示美观以及显示效果,需要显示位宽较高的显示器,因此该设计方案选择LCD12864显示实时信息。系统软件部分重要涉及主函数部分,LCD显示部分,涉及对LCD显示屏的初始化,写命令,写数据等,对SRF08超声波测距部分涉及对I2C总线的启动,停止,读写数据以及距离测量以及判断等部分。此外包含延时,报警等部分。系统框图如图2.1所示图2.1SRF08超声波模块测距系统框图2.1.2方案二 超声波模块采用SRF04超声波模块对障碍物进行检测,STC89C51单片机作为主控制器,LCD1602做显示输出,蜂蜜器报警。 HC-SRF04超声波测距模块采用IO触发测距,IO口给至少10us的高电平信号,启动模块,当模块启动后,超声波接受器接受到回波时会在输出引脚输出高电平,当主控芯片检测到输出信号就可以开定期器计,当此口变为低电平时就可以读定期器的值,此时就为本次测距的时间,方可算出距离.如此不断的周期测,就可以达成实时测距的功能。由于SRF04模块自身不含寄存器,因此在测量时需要花费单片机硬件资源,因此此方案采用尾部单传感器测量,假如采用LCD12864显示器做显示输出,则会浪费大量资源,因此选用LCD1602做显示输出部分。通过主控芯片以以及超声波模块测量出汽车尾部句障碍物的距离,与系统的报警阈值进行比较。超过阈值,报警达成有效的避免与障碍物碰撞的目的。 该方案系统软件部分包含,STC89C51单片机的时钟,中断的编写,LCD1902显示部分包含对液晶显示器的初始化,命令的写入,以及数据的写入,对SRF04超声波测距模块的控制。 从以上两种方案可以看出方案一测量精度高,同时超声波模块较多能很好的实现基本功能,但是硬件成本较高,,电路较为复杂,同时软件设计较为复杂。方案二电路设计简朴,同时检测灵敏,软件设计较为简朴易于实现。因此本文设计基于方案二进行。2.2系统设计原理 该系统由STC89C51单片机向SRF04超声波测距模块发送启动信号,同时接受SRFO4模块的返回信号,由单片机内部时钟记录返回信号连续时间并计算出距离,将所测距离送至LCD1602显示,同时与系统距离阈值进行比较,假如小于阈值则通过蜂鸣器报警。2.3系统组成本课题以89S51单片机为核心设计的一种超声波测距倒车雷达系统,系统整体框图重要由主控制器、超声波测距模块、单片机复位、时钟振荡、液晶显示、报警提醒组成。系统框图如图2.2所示。图2.2系统基本框图2.3.1主控制器单片机STC89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要。2.3.2显示电路显示电路采用LCD1602液晶显示屏,从P0口输出数据。2.3.3HC-SR04超声波模块经发射器发射出长约6mm,频率为40KHZ的超声波信号。此信号被物体反射回来由接受头接受,接受头实质上是一种压电效应的换能器。它接受到信号后产生mV级的薄弱电压信号并通过接受电路将信号放大得到回送信号。
第3章系统硬件设计3.1主控芯片STC89C51 3.1.1单片机特点:有优异的性价比。集成度高,体积小,又很高的可靠性控制功能强单片机的系统扩展和系统配置都比较典型、规范、且容易构成各种规模的应用系统。3.1.2内部结构MCS-51单片机是在一块芯片上集成了CPU、RAM、ROM定期器、计数器和多功能I/O口。其中涉及:一个8位CPU;4KBROM或EPROM128字节RAM数据存储器4个8位并行I/O口,其中P0,P2为地址/数据线,可寻址64KBROM和64KBRAM;一个可编程全双工串行口;具有5个中断源,两个优先级,嵌套中断结构;两个16位定期/计数器;一个片内振荡器及时钟电路。3.1.3引脚图以及部分引脚功能图3.1STC89C51引脚图部分引脚功能:Vcc,Vss为电源引脚;XTAL2(18脚):接外部晶体和微调电容的一端;在89C51片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。XTAL1(19脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。RST/VPD(9脚):RST是复位信号输入端,高电平有效。ALE/PROG(30脚):地址锁存允许信号端。PSEN(29脚):程序存储允许输出信号端。EA/Vpp(31脚):外部程序存储器地址允许输入端/固化编程电压输入端。输入/输出端口P0/P1/P2/P33.2液晶显示模块 3.2.1模块简介:字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。实物图如图3.1所示。图3.1LCD液晶显示器实物图602LCD重要技术参数:显示容量:16×2个字符;芯片工作电压:4.5—5.5V;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V;字符尺寸:2.95×4.35(W×H)mm;3.2.2引脚功能说明:第1脚:VSS为地电源第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.2.3系统显示模块电路3.3超声波测距模块 3.3.1模块简介超声波测距采用HC-SR04超声波传感器实现,该模块能提供2cm—400cm的非接触式距离感测功能,测距精度可达成3mm,模块涉及超声波发射器,接受器,以及控制电路。模块实物图如图3.2所示图3.2HC-SR04超声波模块3.3.2模块工作原理:1)采用IO触发测距,通过单片机给至少10us的高电平信号;2)模块自动发送8个40khz的方波,自动检测是否有信号返回;3)有信号返回,通过IO输出一高电平,高电平连续的时间就是即为声波在介质中的传播时间。4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;3.3.3模块电气参数引脚功能:提供5V正电源,GND为电源地线,TRIG触发控制信号输入端,ECHO回响信号输出端。3.3.4系统超声波模块电路3.4报警电路模块3.4.1蜂蜜器简介蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电分为有源与无源之分,本文采用无源蜂鸣器。3.4.2系统报警电路模块
第四章系统软件设计4.1主程序设计 4.1.1主程序简介本系统大体流程涉及先开始,对LCDl602液晶显示器进行初始化,然后对单片机时钟惊醒初始化,初始化结束后,启动超声波测距,打开时钟,接受回波信号。关闭时钟,计算距离,通过LCD显示,并与系统距离阈值进行比较。低于系统阈值报警。同时将数据送至LCD显示。程序流程图如图4.1所示。图4.1系统流程图4.1.2程序代码voidmain(void){ unsignedcharTempCyc; unsignedlongjuli; inti; Delay400Ms();//启动等待,等LCM讲入工作状态 LCMInit();//LCM初始化 Delay5Ms();//延时半晌(可不要) DisplayListChar(0,0,mcustudio); DisplayListChar(0,1,email); ReadDataLCM(); for(TempCyc=0;TempCyc<10;TempCyc++) while(1) { TMOD=0x01; //设T0为方式1,GATE=1; TH0=0; TL0=0; ET0=1;//允许T0中断 EA=1; //启动总中断 while(1) { StartModule(); //DisplayOneChar(0,1,ASCII[0]); while(!RX); //当RX为零时等待 TR0=1; //启动计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数juli=Conut(); //计算 if(juli<30) { display(juli); LED=0 ; beep(); LED=1; } display(juli); delayms(70); //80MS } }}4.2LCD显示模块程序设计 4.2.1模块简介液晶显示部分重要显示“biyesheji”和所检测的距离。显示开始先对LCD初始化,把LCD定位到首行首列,然后显示字符“biyesheji”到第一行,LCD第二行,显示字符“juli:X.XXMM”。当测量距离超过超声波模块的最大测量范围时,显示“juli:-.--MM”。程序流程图如图4.2所示。 图4.2显示模块程序流程图4.2.2程序代码写数据函数:该函数重要用于向1602发送数据,参数WDLCM为需要传送的数据voidWriteDataLCM(unsignedcharWDLCM){ ReadStatusLCM();//检测忙 LCM_Data=WDLCM; LCM_RS=1; LCM_RW=0; LCM_E=0;//若晶振速度太高可以在这后加小的延时 LCM_E=0;//延时 LCM_E=1;}写指令函数:该函数重要功能为向1602写入用户指令,指令码通过参数WCLCM传送,参数BuysC为1602显示器忙信号,用于检测1602是否处在忙状态。voidWriteCommandLCM(unsignedcharWCLCM,BuysC)//BuysC为0时忽略忙检测{ if(BuysC)ReadStatusLCM();//根据需要检测忙 LCM_Data=WCLCM; LCM_RS=0; LCM_RW=0; LCM_E=0; LCM_E=0; LCM_E=1; }读数据函数unsignedcharReadDataLCM(void){ LCM_RS=1; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; return(LCM_Data);}//读状态unsignedcharReadStatusLCM(void){ LCM_Data=0xFF; LCM_RS=0; LCM_RW=1; LCM_E=0; LCM_E=0; LCM_E=1; while(LCM_Data&Busy);//检测忙信号 return(LCM_Data);}初始化函数:该函数重要用于对1602显示器的初始化,例如显示模式的设立,设立屏显,光标设立等等。voidLCMInit(void)//LCM初始化{ LCM_Data=0; WriteCommandLCM(0x38,0);//三次显示模式设立,不检测忙信号 Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,0); Delay5Ms(); WriteCommandLCM(0x38,1);//显示模式设立,开始规定每次检测忙信号 WriteCommandLCM(0x08,1);//关闭显示 WriteCommandLCM(0x01,1);//显示清屏 WriteCommandLCM(0x06,1);//显示光标移动设立 WriteCommandLCM(0x0c,1);//显示开及光标设立}字符显示函数:该函数重要用于在1602指定位置显示一个字符,字符的位置通过坐标X,Y拟定,其中X为列坐标,Y为行坐标。参数Ddata为需要具体显示的字符。voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){ Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 if(Y)X|=0x40;//当要显示第二行时地址码+0x40; X|=0x80;//算出指令码 WriteCommandLCM(X,1);//发命令字 WriteDataLCM(DData);//发数据}字符串显示函数:该函数重要用于在1602中显示字符串,坐标通过参数X.Y拟定,其中X为列坐标,Y为行坐标。字符串通过指针Ddata拟定。voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){ unsignedcharListLength;ListLength=0; Y&=0x1; X&=0xF;//限制X不能大于15,Y不能大于1 while(DData[ListLength]>0x19)//若到达字串尾则退出 { if(X<=0xF)//X坐标应小于0xF { DisplayOneChar(X,Y,DData[ListLength]);//显示单个字符 ListLength++; X++; } }}4.3超声波测距模块程序设计4.3.1模块简介该模块重要用于驱动超声波模块,实现启动模块,读取超声波模块回送信号的作用,并根据超声波测距原理计算出障碍物的距离。为1602显示提供实时数据。4.3.2模块代码模块启动函数:该函数重要是为超声波硬件模块提供启动时需要的10us的高电平。voidStartModule() //启动模块{ TX=1; //启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0;}测距函数:该函数重要用于计算实际测得的距离,通过单片机的时钟测得的时间与声波在空气中的传播速度计算求得。实际的距离通过参数S返回。unsignedlongConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; returnS=(time*1.7)/100;//算出来是CM }距离显示函数:该函数重要用于对采集回来的数据与模块可提供的准确测距范围进行比对,假如超过量程则显示-.--,假如在精度范围内则显示具体的数据。显示需要的数据通过参数S传入。voiddisplay(unsignedlongS){ if((S>=700)||flag==1)//超过测量范围显示“-” { flag=0; DisplayOneChar(6,1,ASCII[11]); DisplayOneChar(7,1,ASCII[10]); //显示点 DisplayOneChar(8,1,ASCII[11]); DisplayOneChar(9,1,ASCII[11]); DisplayOneChar(10,1,ASCII[12]); //显示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10%10; DisplayOneChar(6,1,ASCII[disbuff[0]]); DisplayOneChar(7,1,ASCII[10]); //显示点 DisplayOneChar(8,1,ASCII[disbuff[1]]); DisplayOneChar(9,1,ASCII[disbuff[2]]); DisplayOneChar(10,1,ASCII[12]); //显示M } }4.4报警模块程序设计4.4.1模块简介报警模块重要用于驱动蜂鸣器与LCD小灯,达成报警的效果。4.4.2模块代码voidbeep(){ inti; SPK=0; for(i=0;i<50;i++) { DelayUs2x(100); SPK=!SPK; } SPK=1;}4.5辅助代码该部分代码重要用于对整个代码框架起辅助作用,重要涉及系统中所包含的函数接口声明,以及系统硬件各个硬件接口申明定义,以及系统常用延时函数,一些标志函数。起到了精简代码的所用,减少了整个代码的冗余度,同时使程序在运营的过程中简洁。系统硬件接口以及函数声明#include<AT89x51.H> //器件配置文献#include<intrins.h>#defineRXP2_3#defineTXP2_2#defineSPKP1_0//喇叭定义#defineLEDP1_1#defineLCM_RWP2_5//定义LCD引脚#defineLCM_RSP2_4#defineLCM_EP2_6#defineLCM_DataP0#defineBusy0x80//用于检测LCM状态字中的Busy标记voidLCMInit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelay5Ms(void);voidDelay400Ms(void);voidDecode(unsignedcharScanCode);voidWriteDataLCM(unsignedcharWDLCM);voidWriteCommandLCM(unsignedcharWCLCM,BuysC);unsignedcharReadDataLCM(void);unsignedcharReadStatusLCM(void);unsignedcharcodemcustudio[]={"biyesheji"};unsignedcharcodeemail[]={"juli:"};unsignedcharcodeCls[]={""};unsignedcharcodeASCII[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};staticunsignedcharDisNum=0;//显示用指针 unsignedinttime=0; unsignedlongS=0; bitflag=0; unsignedchardisbuff[4] ={0,0,0,0,};系统各级别延时函数://5ms延时voidDelay5Ms
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能硬件创新企业评审
- 国际工艺品设备租赁协议
- 通信设备运输招投标文件
- 会员消费IC卡积分规则
- 无人机驾驶员聘用合同范本
- 执行院务公开管理办法
- 铁路工程供货施工合同范本
- 金属材料采购授权委托书
- 通讯设备项目奖励政策
- 煤炭供应商运输合作协议
- GB/T 19418-2003钢的弧焊接头缺陷质量分级指南
- 高中语文文言文断句课件
- 义务教育历史课程标准(2022年版)【重新整理版】
- 2023届新高考二卷语文点对点攻关训练专题:文学类文本阅读
- 2023-计算机考研408真题及答案
- 福建省宁德市各县区乡镇行政村村庄村名明细及行政区划代码
- 垃圾焚烧锅炉系统安装方案
- 应急物资台账新参考模板范本
- 足球裁判规则PPT
- 中药的用法课件
- 【课件】第15课 中国古代陶瓷艺术 课件高中美术鲁美版美术鉴赏
评论
0/150
提交评论