基于-51单片机超声波测距仪设计.doc
-_基于基于 5151 单片机超声波测距仪设计单片机超声波测距仪设计系系 别别 : 电子信息工程系电子信息工程系班班 级级 : 电信四班电信四班小组成员小组成员 :施鹏施鹏 15122204051512220405磨国强磨国强 15122204071512220407胡广富胡广富 15122204301512220430指导老师指导老师 : 周光祥周光祥 桂林电子科技大学职业技术学院桂林电子科技大学职业技术学院-_摘摘 要要超声波是指频率在 20kHz 以上的声波,它属于机械波的范畴。超声波也遵 循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射 现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得 超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被 广泛应用于人们日常工作和生活之中。 系统的设计主要包括两部分,即硬件电路和软件程序。硬件电路主要包括 单片机电路、发射电路、接收电路、显示电路和电源电路,另外还有复位电路 和 LED 控制电路等。我采用以 AT89C51 单片机为核心的低成本、高精度、微型 化数字显示超声波测距仪的硬件电路。整个电路采用模块化设计,由信号发射 和接收、供电、温度测量、显示等模块组成。发射探头的信号经放大和检波后 发射出去,单片机的计时器开始计时,超声波被发射后按原路返回,在经过放大 带通滤波整形等环节,然后被单片机接收,计数器停止工作并得到时间。温度测 量后送到单片机,通过程序对速度进行校正, 结合两者实现超声波测距的功能。 软件程序主要由主程序、预置子程序、发射子程序、接收子程序、显示子程序 等模块组成。它控制单片机进行数 据发送与接收,在一定温度下对超声波速度 的校正,还有实现数据正确显示在 LED 上。另外程序控制单片机消除各探头对 发射和接收超声波的影响。相关部分附有硬件电路图、程序流程图。 实际的环境对超声波有很大的影响,如外部电磁干扰电源干扰信道干扰等 等,空气的温度对超声波的速度影响也很大。此外供电电源也会使测量差生很 大的误差。再设计的过程中考虑了这些因素,并给出了一些解决方案。 关键词:关键词: AT89C51AT89C51 超声波超声波 测距测距-_目目 录录1 1绪论绪论.1 1.1设计背景 .12 2 电路总体设计方案电路总体设计方案 .2 2.1电路总体框图 .23 3 单片机概述单片机概述.33.1 AT89C51 单片机主要性能 .33.2 AT89C51 内部组成.34 4超声波概述超声波概述.4 4.1 超声波传感器介绍.44.2 超声波时序图 .44.3 超声波测距原理 .55 5硬件设计硬件设计.6 5.1硬件设计原理图 .65.2 复位电路 .65.3 晶振电路 .75.4 LED 数码管显示电路.76 6软件设计软件设计.8 6.1程序设计流程图 .86.2 程序源代码 .97 7总结总结.12 7.1设计总结 .12 致谢 .13 参考文献 .14-_1 1 绪论绪论1.1 设计背景及重要意义 近年来,随着电子测量技术的发展,运用超声波作出精确测量已成可能。随着经济发展,电子测量技术应用越来越广泛,而超声波测量精确高,成本低,性能稳定则备受青睐。超声波是指频率在 20kHz 以上的声波,它属于机械波的范畴。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。一般的超声波测距仪可用于固定物位或液位的测量,适用于建筑物内部、液位高度的测量等。 由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高等行业中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。因此超声波测距在移动机器人的研究上得到了广泛的应用。同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。-_2 2 电路总体方案电路总体方案2.12.1 电路总体框图电路总体框图电路总体框图包括 51 单片机最小系统,HC-SR04 超声波测距模块,LED 数码管显示电路,蜂鸣器报警电路和按键电路。图 2.1 电路基本框图-_3 3 单片机概述单片机概述3.1 STC89C51 主要性能STC89C51 是 STC 公司推出的一款超强抗干扰,加密性强,在线可编程,高速,低功耗 CMOS 8 位单片机。片内含 4k bytes 的可反复擦写 Flash 只读程序存储器和 256 bytes 的随机数据存储器(RAM),器件采用 STC 公司的高密度、非易失性存储技术生产,与标准 MCS51 指令系统及 8052 产品引脚兼容, 片内置通用 8 位中央处理器 (CPU)和 Flash 存储单元, 功能强大的 STC89C51单片机适合于许多较为复杂控制应用场合。3.2 STC89C51 内部组成STC89C51 单片机的框图如图 3.2 所示,各功能部件由内部总线连接在一起。图 3.2 STC89C51 单片机框图-_4 4 超声波超声波概述概述4.1 超声波传感器介绍超声波是一种频率比较高的声音,由于其指向性强、能量消耗缓慢、传播距离较远等优点,而经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如液位、井深、管道长度等场合。超声波测距的利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在测控系统的研制上得到了广泛应用。超声传感器是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件。目前常用的超声传感器有两大类,即电声型与流体动力型。电声型主要有:1 压电传感器;2 磁致伸缩传感器;3 静电传感器。4.2 超声波时序图图 4.2 超声波时序图-_4.3 超声波测距原理超声波测距是借助于超声脉冲回波渡越时间法来实现的,设超声波脉冲由传感器发出到接收所经历的时间为 t,超声波在空气中的传播速度为 c,则从传感器到目标物体的距离 D 可用下式求出:D=ct/2。其系统框图如图 4.3 所示。图 4.3 系统框图 基本原理:经发射器发射出长约 6mm,频率为 40khz 的超声波信号。此信号被物体反射回来由接收头接收,接收头实质上是一种压电效应的换能器。它接收到信号后产生 mV 级的微弱电压信号。障碍物-_5 5 硬件设计硬件设计5.1 硬件设计原理图图5.2 复位电路单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V 的电源通过电阻给电解电容进行充电,电容两端的电会由 0V 慢慢的升到 4V 左右(此时间很短一般小于0.3 秒),正因为这样,复位脚由低电位升到高电位,引起了内部电路的复位工作;当按下复位键时,电容两端放电,电容又回到 0V了,于是又进行了一次复位工作。电路图如图 5.1。R1410K+ C310uFG N D+ 5图 5.1 复位电路-_5.3 晶振电路它是单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作。假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。一般单片机的晶振工作于并联谐振状态,也可以理解为谐振电容的一部分。它是根据晶振厂家提供的晶振要求负载电容选值的,换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差,也能保证温漂等误差。它是由一个晶振和两个瓷片电容组成的,晶振和瓷片电容是没有正负的,两个瓷片电容相连的那端一定要接地,如图 5.2 所示。Y 112M H ZC1 30pC2 30pG ND图 5.2 晶振电路5.4 LED 数码管显示电路本电路的显示模块主要由一个 4 位一体的 7 段 LED 数码管构成,用于显示测量到的电压值。它是一个共阴极的数码管,每一位数码管的 a,b,c,d,e,f,g和 dp 端都各自连接在一起,用于接收单片机的 P1 口产生的显示段码。S1,S2,S3,S4 引脚端为其位选端,用于接收单片机的 P2 口产生的位选码。具体原理图如图 5.3-_R1 2.2KR2 2.2KR3 2.2KR4 2.2KQ 1 9012Q 2 9012Q 3 9012Q 4 9012W1W2W3W4G NDe1d2dp3c4g5S46b7S38S29f10a11S112U 3 4-LEDA FBE D dp C GS1S2 S3 S4图 5.3 显示电路6 6 软件设计软件设计6.1 程序设计流程图系统程序主要包括主程序、显示数据子程序、报警子程序和按键子程序等。主程序的主要功能是负责距离的显示、读出并处理 HC-RS04 的测量距离值,按键控制有效距离限制,当测量的值超过预设值时,蜂鸣器发声报警。主程序流程图如图 6.1 所示。图 6.1 主流程图-_6.2 软件程序#include /器件配置文件 #include /传感器接口 sbit RX = P23; sbit TX = P22; sbit DIAN=P05;/变量声明 unsigned int time=0; unsigned int timer=0; unsigned char posit=0; unsigned long S=0; char num=0; bit flag=0; unsignedchar const discode =0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x80; /数码管 显示码 0123456789-和不显示 unsigned char disbuff4 =0,0,0,0; /数组用于存放距离信息 sbit W0=P24; sbit W1=P25; sbit W2=P26; sbit W3=P27;/*/ /扫描数码管 void Display(void) num+; if(num=1) W3=1; W0=1; P0=discodedisbuff0; DIAN=0; W1=0; else if(num=2) W1=1; P0=discodedisbuff1; W2=0;-_ else if(num>=3) W2=1; P0=discodedisbuff2; W3=0; num=0; /*/ /计算 void Conut(void) time=TH0*256+TL0; /读出 T0 的计时数值 TH0=0; TL0=0; /清空计时器 S=(time*1.7)/100; /算出来是 CMif(S>=700)|flag=1) /超出测量范围显示“-” flag=0; disbuff0=10; /“-” disbuff1=10; /“-” disbuff2=10; /“-” else disbuff0=S%1000/100; /将距离数据拆成单个位赋值 disbuff1=S%1000%100/10; disbuff2=S%1000%10 %10; /*/ /定时器 0 void zd0() interrupt 1 /T0 中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志 /*/ /定时器 1 void zd3() interrupt 3 /T1 中断用来扫描数码管和计 800MS 启动模 块 TH1=0xf8;-_TL1=0x30; /定时 2ms Display();/扫描显示 timer+;/变量加 if(timer>=400)/400 次就是 800ms timer=0; TX=1; /800MS 启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); TX=0; /*/ /主函数 void main(void) TMOD=0x11; /设 T0 为方式 1,GATE=1; TH0=0; TL0=0; TH1=0xf8; /2MS 定时 TL1=0x30; ET0=1;/允许 T0 中断 ET1=1; /允许 T1 中断 TR1=1; /开启定时器 EA=1;/开启总中断 while(1) while(!RX);/当 RX 为零时等待 TR0=1;/开启计数 while(RX);/当 RX 为 1 计数并等待 TR0=0;/关闭计数 Conut();/计算 -_设计总结设计总结施鹏:本次设计我们是以 AT89C51 为核心,借助于模数电技术和单片机技术的 结合,解决了超声波测距的一些难题。灵活的运用超声波换能集成电路作为超 声波的接收电路,在讨论了超声波测距原理、硬件电路实现和软件设计方法基 础上,完成了超声波测距的设计要求。利用单片机的运算和控制功能,利用超 声波的特性设计出的一种简单的测距系统。利用超声波检测往往比较迅速、方 便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要 求,随着科学技术的快速发展,超声波的应用将越来越广。但就目前技术水平 来说,人们可以具体利用的超声波技术还十分有限,因此,这是一个正在蓬勃 发展而又有无限前景的技术及产业领域。从方案论证到具体设计,我查阅了大 量的资料。对一些疑难的问题,我得到了老师和同学的帮助。也始终感受着导 师的精心指导和无私的关怀,我受益匪浅。在此向老师们表示深深的感谢和崇 高的敬意。磨国强: 本次设计我们在讨论了超声波测距原理、硬件电路实现和软件设计方法 基础上,以 AT89C51 为核心,完成了超声波测距的设计要求。利用单片机的运算 和控制功能,设计出的一种筒单实用的超声波测距系统,利用超声波测距系统比 较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面达到了一定 的要求。本次设计主要单片机系统,显示电路和超声波模块三个部分。从方案 论证到具体设计,我查阅了大量的资料。对一些疑难的问题,我得到了老师和 同学的帮助。也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此 向老师们表示深深的感谢和崇高的敬意。胡广富: 本次设计我们在讨论了超声波测距原理、硬件电路实现和软件设计方法 基础上,以 AT89C51 为核心,借助于模数电技术和单片机技术的结合,解决了超 声波测距的一些难题。灵活的运用超声波换能集成电路作为超声波的接收电路, 在讨论了超声波测距原理、硬件电路实现和软件设计方法基础上,完成了超声 波测距的设计要求,利用超声波检测往往比较迅速、方便、计算简单、易于做 到实时控制,并且在测量精度方面能达到工业实用的要求,随着科学技术的快 速发展,超声波的应用将越来越广。设计过程中查阅了大量资料,得到了老师 的帮助,在此向老师们表示深深的感谢和深深的敬意。-_致 谢首先,我们要感谢我的导师周光祥老师在此次设计中对我给予的悉心指导和严格要求,同时也感谢本校的一些老师在设计期间所给予我得帮助。在论文写作期间,各位老师给我提供了种种专业知识上的指导和日常生活上的关怀,没有您们这样的帮助和关怀,我不会这么顺利的完成此次设计,借此机会,向您们表示由衷的感激。同时还要感谢系实验室在此次设计期间提供给我们优越的实验条件。接着,我要感谢和我一起做此次设计的同学。在此次设计中,你们给我们提出很多宝贵的意见,给了我不少帮助还有工作上的支持,在此也真诚的谢谢你们。同时,我还要感谢我的寝室同学和身边的朋友,正是在这样一个团结友爱,相互促进的环境中,在和他们的相互帮助和启发中,才有我今天的小小收获。 最后我要深深地感谢我的家人,正是他们含辛茹苦地把我养育成人,在生活和学习上给予我无尽的爱、理解和支持,才使我时刻充满信心和勇气,克服成长路上的种种困难,顺利的完成大学学习。 还有许许多多给予我学业上鼓励和帮助的朋友,在此无法一一列举,在此也一并表示忠心地感谢!-_参考文献参考文献1 宋雪臣,单振清.传感器与检测技术(第 2 版).北京:人民邮电出版社,2012 年 4 月.2 谢维成,杨加国.单片机原理与应用及 C51 程序设计.北京:清华大学出版社,2006 3 张齐等.单片机应用系统设计技术-基于 C 语言编程.北京:电子工业出版社,2004 4 吴延海.微型计算机接口技术.重庆:重庆大学出版社,1997 5 李丽霞.单片机在超声波测距中的应用J.电子技术,2002 6 姜道连,宁延一,袁世良.用 AT89C2051 设计超声波测距仪J.国外电子元器件,2000 7 李学海.PIC 单片机实用教程基础篇(第 1 版)M.北京航天航空大学出版社.北京:2002 年 2 月 8 贾伯年.传感器技术. 南京: 东南大学出版社,2000