基于AT89C51单片机的超声波测距仪的设计_第1页
基于AT89C51单片机的超声波测距仪的设计_第2页
基于AT89C51单片机的超声波测距仪的设计_第3页
基于AT89C51单片机的超声波测距仪的设计_第4页
基于AT89C51单片机的超声波测距仪的设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

-.z【摘要】AT89C51是一个低功耗的并且高性能的CMOS8位单片机,片内包括4kBytesISP(In-systemprogrammable)的可重复擦写1000次的Flash只可读的程序存储器,采用的器件是高密度的,不易丧失存储技术制造,MCS-51兼容的标准指令系统以及80C51引脚的构造,通用的8位中央处理器和ISPFlash存储单元在芯片内集成,AT89C51广泛应用在非常多的嵌入式控制应用系统中。这次设计主要是利用AT89C51单片机、HC-SR04超声波传感器、蜂鸣器完成测距报警系统的制作,将AT89C51作为主控制芯片,利用超声波对物体的感应,将前方物体的距离探测出来,然后单片机处理运算,与设定的报警距离值进展比拟判断,当测得距离小于设定值时,AT89C51发出指令控制蜂鸣器报警。【关键词】:AT89C51单片机、HC-SR04超声波传感器、蜂鸣器一、绪论1.1课题研究背景及意义随着社会的开展,人们对于距离的敏感度越来越高,生活上对距离的感知也越来越敏感,因此测距仪也受到了极大的欢送。它主要有三类,一类是激光测距仪,是根据光电元件接收目标反射的激光束来计算出测距者到目标的距离。另一类是红外测距仪,利用红外线传播不扩散的原理进展测距,但方向性差。还有一类是超声波测距仪,但也有局限性,传播需要介质,超声波发射器向*一方向发射超声波,在发射的同时开场计时,碰到障碍物后就立即返回来,超声波接收器收到反射波就立即停顿计时。超声波测距是一种非接触可直接检测技术,它对光线和被测对象的颜色等没有要求,与其它仪器相比更卫生,更耐高温、等恶劣环境,具有少维护、可靠性高、寿命长等优点。利用超声波检测往往比拟快捷、性能稳定、能够实现实时检测等优点,所以它广泛的应用在全自动机器人,汽车倒车雷达等研制方面。二、总体设计方案及论证2.1总体方案设计硬件设计和软件设计是本次设计主要局部。按模块划分可以分为数据的采集、按键的控制、数码管的显示、蜂鸣器的报警这四个子模块。按电路构造划分可以划分为超声波发射与接收、蜂鸣器、单片机控制这几个电路。就这次设计的核心模块来讲,设计的中心单元就是51单片机,单片机应用系统的组成也是分为硬件和软件的。硬件主要包括单片机、输入设备和输出设备、以及外围应用电路等系统,软件则是设计工作是需要的各种程序的总称。研制单片机应用系统的过程分为总体方案设计、硬件电路设计、软件程序设计三个阶段。核心控制单元是采用的AT89C51单片机,当测出来的数值小于设定的距离时,主控芯片就会将测出来的数值与原本设定的数值进展比拟以及处理,并控制蜂鸣器报警。系统总体的设计方框图如图1所示。电源电源超声波传感器模块ATC89C51主控制器模块按键控制超声波传感器模块ATC89C51主控制器模块按键控制4位数码管显示模块4位数码管显示模块蜂鸣器报警模块蜂鸣器报警模块三、硬件实现及单元电路设计3.1主控制模块设计硬件电路时,我选用的是40个引脚的AT89C51单片机,P1.0-P1.7口的是1kΩ的电阻,9脚接的是复位电路,P3.0-P3.3口接超声波,P3.4-P3.5口是16位的定时/计数器器,P3.6-P3.7是读写信号,18〔*TAL2)和19(*TAL1)脚接的是时钟电路,20脚接地,P2.0-P2.3主要是接按键在进展测距时对距离的设定,30脚地址锁存器,40脚接电源。最小系统的接线图如图2所示。硬件设计的电路总设计图主要是最小系统电路,报警电路,复位电路。从以上的分析可知在本设计中要用到如下器件:AT89C51单片机、蜂鸣器、四个按键、四位数码管以及超声波传感器等。与40脚相接的发光二极管是电源工作指示灯。电路中用到4个按键,一个是设置键,一个是加键,一个是减键,另外还有一个是复位键。3.2电源设计对于电源局部的设计,我选用的是在板子上外接一个电池盒来实现电源的供应的,电池盒如图4所示。它可以内装3节1.5V的干电池进展供电,要注意的是在装电池时一定要注意电池的正负极,不能将电池装反,否则电路不能工作。3.3超声波测试模块超声波局部的设计我是采用的现成的超声波测试模块〔HC-SR04),此模块可以提供2cm-400cm的测距功能,并且不需要接触就可以进展测量,测距精度最高可以到达3mm。该模块包含以下几个局部:超声波发射器、超声波接收器、控制电路。根本的工作原理是采用Trig口进展感触测距,提供至少10us的高电平信号;8个40khz的方波从此模块中自动发出,自动检测信号是否有返回;假设有信号返回,则通过Echo口来输出一个高电平,输出的高电平所持续的时间就是超声波从发射出去到反射回来的时间。测试的距离=(高电平的时间*声速(340M/S))/2。超声波的实物如下列图5。其中VCC是来供电源,GND表示地线,信号输入由TRIG触发控制,ECHO回响信号输出等四支线超声波探测模块〔HC-SR04〕的使用方法为:IO口触发,给Trig口提供至少10us的高电平,然后启动测量;该模块自动发送出8个40Khz的方波并且随时检测信号是否返回,假设信号返回,则高电平由Echo输出,高电平持续的时间即超声波从发射出到返回的时间,测试距离S=〔高电平时间t*340〕/2,单位为m。程序中测试功能主要由两个函数完成。实现中采用定时器0进展定时测量,8分频,TTT0预设值0*CE,当timer0溢出中断发生2500次时为125ms,计算公式为〔单位:ms〕:T=〔定时器0溢出次数*〔0*FF-0*CE〕〕/1000其中定时器0初值计算依据分频不同而有差异市面上常见的超声波传感器多为开放型,它的内部构造如图6所示,是由一个复合式的振动器灵活地固定于底座上。该复合式振动器的构造是由谐振器以及一个金属片和一个压电陶瓷片组成的双压电晶片元件振动器。谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。当电压作用在压电晶片上时,它就会随着电压和频率的变化而产生机械变形。另外一方面,当振动压电晶片时,会产生一个电荷。利用这个原理,振动器〔又称双压电晶片元件〕由两片压电陶瓷或一片压电陶瓷和一个金属片构成的,给它施加一个电信号时,就会因为弯曲振动而发射出超声波。相反,给双压电晶片元件施加超声振动时,就会产生一个电信号。根据以上的表达,可以将压电陶瓷作为超声波传感器使用。超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分为横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。它有折射和反射现象,并且在传播过程中有衰减现象,所以只适用于短距离的测量。3.5测距分析回声探测法是最常用的超声测距的方法,超声波发射器向*一个方向发射出超声波,在发射时刻的同时计数器开场计时,碰到障碍物的阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停顿计时并计算出距离。以超声波在空气中的传播速度为340m/s计算,根据定时器算出的时间t,就可以计算出发射点距障碍物面的距离s,即:s=340t/2。因为超声波也是声波的其中一种,它的声速V与温度有关。所以在使用时,假设果在传播过程中介质温度变化不大,就可以近似的认为超声波速度在传播的过程中是根本不变的。如果要求测距的精度很高,就需要通过温度补偿的方法对测量结果进展数值校正。当声速确定后,只需要测得超声波往返的时间,就可以求得距离。这就是超声波测距的根本原理。原理图如图7所示。超声波发射障碍物SHθ超声波接收图7超声波的测距原理〔3-1〕〔3-2〕上式中L表示两探头之间中心距离的一半。又知道超声波传播的距离为:(3-3)上式中V表示超声波在介质中的传播速度;T表示超声波从发射到接收所需要的时间。将〔3—2〕、〔3—3〕代入〔3-1〕中可以得:(3-4)在一定温度下,超声波传播的速度v是一个固定常数;当需要测量的距离H远远大于L时,则(3—4)变为:(3-5)所以,只需要测量出超声波传播的时间t,就可以得出测量的距离H。3.6时钟电路的设计AT89C51内部虽含有振荡电路,但想要形成时钟,必须在外部额外附加一个电路。AT89C51单片机的时钟产生方法有两种,分别是内部时钟方式和外部时钟方式。内部时钟方式被本次设计所采用,它是利用芯片内部的振荡电路,在*TAL1、*TAL2两个引脚上外接一个定时元件,内部振荡电路便会产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可以在1.2MHZ到12MHZ之间进展选择。对电容值没有严格要求,但电容的取值对振荡频率输出的稳定性、大小以及振荡电路起振的速度有稍许影响,C*1、C*2可以在20pF到100pF之间进展取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本次设计中,振荡晶体选择12MHZ,电容则选择20pF。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。如图8所示为时钟电路。图8时钟电路图3.7复位电路的设计复位电路的方法有两种,分别是上电自动复位和手动复位。单片机在时钟电路工作以后,要完成复位操作,必须在RESET端持续的给出两个机器周期的高电平。比方使用晶振的频率为12MHz时,则复位信号持续的时间应该不小于2us。本次设计采用的是上电自动复位电路,是在RST端接一个10uF的电容和10K的电阻来实现复位的。复位电路如图9示。3.8声音报警电路的设计声音报警电路是在单片机的P13口上接一个电阻、三极管和蜂鸣器,构成声音报警电路,声音报警电路的电路图如图10示。3.9显示模块显示模块采用8段4位共阳数码管显示,用四个9012三极管对电流进展放大,来驱动四位数码管正常工作,示意图如下列图11、12所示。四、软件设计4.1主程序工作流程图根据上述的工作原理和硬件构造的分析可得知系统的主程序工作流程图,如下列图13所示。超声波探测程序流程图:五、调试与仿真5.1程序输入与烧录这里要用到的软件是KeilC51,翻开该软件后,首先先新建一个工程,建好后选择保存的路径,然后选择单片机型号。完成以上步骤后,在uVision2工作界面新增一个文件夹,新建程序录入文件,用C语言进展程序编写,扩展名为〔13.c);程序录入后进展调试程序,生成可供烧录器使用的HE*代码,连接烧录器时,要先连接USB口和PC口,再将芯片装入烧录器中,方向不能装反。5.2实物调试根据以上的电路原理图焊接好实物电路,实物图如图15所示。在通电之前做好检测,利用万用表检查是否出现短路和短路的现象,以及线路是否连接无误。检查无误后,将3节1.5V电池放入电池盒,检查电路能否正常工作和电源工作参数。调试时,先按下列图15实物中左下角的开关,电源指示灯亮,表示电源接通,电路正常工作。首先要设定距离,左面按键从上往下依次是减键、加键、设置键。测量时,假设需要复位,按下晶振边上的按键即可,它是复位键。在调试过程中,遇到的问题:第一次调试时,当按下电源开关时,只有蜂鸣器一直在报警,数码管不亮,检查电路时,发现是电源线与电路并未完全接好,存在接触不良的现象。重新焊接后,再次接上电源,数码管能够正常显示。实物仿真时,我设定的报警距离是50cm,工具选用的是一*A4纸〔长29.6cm〕、一个水杯作为障碍物以及超声波测距仪,当我将实物放置在A4纸一端,水杯放置在另一端时,报警器开场报警。进展了屡次测量,数码管显示的距离都在29cm和30cm之间,实际误差在1到2cm之间。实物仿真图如图16所示。实物的缺乏之处:不能够准确确实定被测点〔障碍物〕,尤其是当被测物体积较小时,很容易出现大的误差,假设果在设计初能想到装上一个红外线就可以防止这个缺点,准确的找到被测物体。六、总结经过不断地查找资料与各方面的修改,我的论文设计根本上算是完成了。在这几个月的时间里,自己时刻都在想着论文的事,想着怎么能够让内容变得更完善,怎么更充实,所以一直在改善。本次设计主要是研究了一种基于AT89C51单片机技术的超声波测距报警系统。此系统是将AT89C51单片机作为工作处理器的核心,外接一些复位电路,报警电路,数码管显示电路等完善它的功能,超声波传感器是不需要接触,就可以发射出信号,遇到障碍物后信号就会反射回来,我们根据测得的时间进展计算,这就是测距的原理,简单明了,操作起来简单易懂,并且安装也很方便,它适用于广阔群众。随着社会的不断开展,需要的人们也越来越多,它因为具备着物美价廉的优点,将会受到极大的欢送。通过此次设计,认识到自己专业知识方面有许多缺乏,对于专业方面的了解不是很透彻,但这次设计也使我进一步掌握了单片机方面的知识,毕业设计的过程查阅资料也丰富了自己那贫瘠的知识库。七、致谢去年的九月份到现在也有六个月了,我的毕业设计终将告一段落,这中间的过程挺坎坷的。开场的时候很茫然,题目都不知道怎么定,不知道论文的大纲该怎么出来,直到后来完成整篇论文。在这中间查阅了很多资料,询问过很多人,软件设计局部是我最大的弱点,如果没有教师与其他同学的帮助,是不会则快就解决的。所以在这里我非常感谢我的教师和同学,是他们让我的设计继续了下去并最终完成。同时也感谢以前的专业教师,没有他们教给我专业知识,我是不可能完成这个课题的。我更要感谢学校所提供应我的学习时机,让我能够体验到多彩的大学生活。三年的大学生活是丰富多彩的,从一开场时的懵懂到后来的成熟都少不了教师辅导员的帮助和教导,有的同学在过去两年间会找时间做一些晓得电子创造或者是一些电子产品,这为他们设计做下了不可缺少的铺垫。他们的建议也使我受益匪浅,一些常见但是并不引人注意的电路问题也是因为他们的帮助我才解决的,真的很谢谢他们。最后,在这里感谢所有的在毕业设计中帮助过我的教师和同学们。八、参考文献[1]吴政江.单片机控制红外线防盗报警器[J].**师*学院学报,2001.[2]*同怀.超声波测距仪的设计与制作[M].?仪表技术?,2008.[3]基于单片机的平安报警系统[j].?互联网文档资源?,2012.[4]宋文绪.传感器与检测技术[M].:高等教育,2004.[5]余锡存.单片机原理及接口技术[M].**:**电子科技大学,2000.[6]卢庆林.基于单片机的自动寻迹避障小车设计[M].?机械与电子?,2014.[7]左建昌.机器人化工程机械的超声波避障与惯性导航系统研究[J].?长安大学硕士论文?,2008.[7]唐桃波,陈**.基于AT89C51的智能无线安防报警器[J].电子设计应用,2003.[8]李全利.单片机原理及接口技术[M].:航空航天大学,2004.[9]薛均义,*彦斌.MCS-51系列单片微型计算机及其应用[M].**:**交通大学,2005.[10]*爱钧,彭秀华.单片机高级语言C51应用程序设计[M].:航空航天大学,2006.[11]康华光.电子技术根底〔模拟局部〕[M].:高等教育,2004.附录3:程序*include<reg51.h>*include<intrins.h>*include"eepom52.h"*defineucharunsignedchar*defineuintunsignedint012345 6 7 8 9 ucharcodesmg_du[]={0*c0,0*f9,0*a4,0*b0,0*99,0*92,0*82,0*f8,0*80,0*90, 0*88,0*83,0*c6,0*a1,0*86,0*8e,0*ff}; ucharcodesmg_we[]={0*e0,0*d0,0*b0,0*70};uchardis_smg[8]={0*c0,0*f9,0*a4,0*b0,0*99,0*92,0*82,0*f8};sbitsmg_we1=P3^4; sbitsmg_we2=P3^5;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;sbitc_send=P3^2; sbitc_recive=P3^3; ucharflag_hc_value;sbitbeep=P2^3;bitflag_key_b_en,flag_key_set_en;ucharsmg_i=3;bitflag_300ms;bitkey_500ms;longdistance; uintset_d; bitflag_csb_juli;uintflag_time0;ucharkey_can; ucharzd_break_en,zd_break_value;ucharmenu_shudu=10;bitflag_lj_en; bitflag_lj_3_en; ucharkey_time,flag_value;ucharmenu_1;uchara_a;/***********************1ms延时函数*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************处理距离函数****************************/voidsmg_display(){ dis_smg[0]=smg_du[distance%10]; dis_smg[1]=smg_du[distance/10%10]; dis_smg[2]=smg_du[distance/100%10]&0*7f; }/******************把数据保存到单片机内部eepom中******************/voidwrite_eepom(){ SectorErase(0*2000); byte_write(0*2000,set_d%256); byte_write(0*2001,set_d/256); byte_write(0*2058,a_a); }/******************把数据从单片机内部eepom中读出来*****************/voidread_eepom(){ set_d=byte_read(0*2001); set_d<<=8; set_d|=byte_read(0*2000); a_a=byte_read(0*2058);}/**************开机自检eepom初始化*****************/voidinit_eepom(){ read_eepom(); //先读 if(a_a!=1) //新的单片机初始单片机内问EEPOM { set_d=100; a_a=1; write_eepom(); } }/****************独立按键处理函数********************/voidkey(){ staticucharkey_new=0,key_old=0,key_value=0; if(key_new==0) { //按键松开的时候做松手检测 if((P2&0*07)==0*07) key_value++; else key_value=0; if(key_value>=5) { key_value=0; key_new=1; flag_lj_en=0; flag_lj_3_en=0; flag_value=0; key_time=0; write_eepom(); } } else { if((P2&0*07)!=0*07) key_value++; else key_value=0; if(key_value>=5) { key_value=0; key_new=0; flag_lj_en=1; zd_break_en=1; zd_break_value=0; flag_key_b_en=1; } } key_can=20; if(key_500ms==1) { key_500ms=0; key_new=0; key_old=1; zd_break_value=0; } if((key_new==0)&&(key_old==1)) { switch(P2&0*07) { case0*06:key_can=3;break; case0*05:key_can=2;break; case0*03:key_can=1;break; } dis_smg[3]=smg_du[key_can%10]; } key_old=key_new; }voidsmg_we_switch(uchari){ switch(i) { case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break; case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break; case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_we4=1;break; case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break; } }/***********************数码显示函数*****************************/voiddisplay(){ staticuchari; i++; if(i>=smg_i) i=0; P1=0*ff; P3=0*f0|(P3&0*0f); P3=smg_we[i]|(P3&0*0f); smg_we_switch(i); P1=dis_smg[i]; }voiddelay(){ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}/*********************超声波测距程序*****************************/voidsend_wave(){ c_send=1; delay(); c_send=0; TH0=0; TL0=0; TR0=0; flag_hc_value=0; while(!c_recive); TR0=1; while(c_recive) { flag_time0=TH0*256+TL0; if((flag_hc_value>1)||(flag_time0>65000)) { TR0=0; flag_csb_juli=2; distance=888; flag_hc_value=0; break; } else { flag_csb_juli=1; } } if(flag_csb_juli==1) { TR0=0; distance=TH0; distance=distance*256+TL0; distance+=(flag_hc_value*65536); distance*=0.017; if(distance>350) { distance=888; } }}/*********************定时器0、定时器1初始化******************/voidtime_init() { EA=1; TMOD=0*11; ET0=1; TR0=1; ET1=1; TR1=1; }/****************按键处理数码管显示函数***************/voidkey_with(){ if(key_can==1) { menu_1++; if(menu_1>=2) { menu_1=0; } if(menu_1==0){ menu_shudu=20; dis_smg[0]=smg_du[distance%10]; dis_smg[1]=smg_du[distance/10%10];dis_smg[2]=smg_du[distance/100%10]&0*7f; smg_i=3;} if(menu_1==1) { menu_shudu=1; dis_smg[0]=smg_du[set_d%10]; dis_smg[1]=smg_du[set_d/10%10]; dis_smg[2]=smg_du[set_d/100%10]&0*7f; dis_smg[3]=0*88; smg_i=4; } } if(menu_1==1) { if(flag_lj_3_en==0) menu_shudu=10; else menu_shudu=1; if(key_can==2) { set_d++; if(set_d>350) set_d=350; dis_smg[0]=smg_du[set_d%10]; dis_smg[1]=smg_du[set_d/10%10]; dis_smg[2]=smg_du[set_d/100%10]&0*7f; dis_smg[3]=0*88; //a } if(key_can==3) { set_d--; if(set_d<=1) set_d=1; dis_smg[0]=smg_du[set_d%10]; dis_smg[1]=smg_du[set_d/10%10]; dis_smg[2]=smg_du[set_d/100%10]&0*7f; dis_smg[3]=0*88; //a }// write_eepom(); } }/****************报警函数***************/voidclock_h_l(){ staticucharvalue; if(distance<=set_d) { value++; if(value>=5)

温馨提示

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

评论

0/150

提交评论