基于单片机的超声波测距论文_第1页
基于单片机的超声波测距论文_第2页
基于单片机的超声波测距论文_第3页
基于单片机的超声波测距论文_第4页
基于单片机的超声波测距论文_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计论文题 目: 基于单片机的超声波测距仪 学 院: 电气与电子工程学院 专 业: 电气工程及其自动化 班 级: 14电气实验班 姓 名: 李浩文 学 号: 指导教师: 小组成员: 日 期: 2016年12月15日 基于单片机的超声波测距仪基于单片机的超声波测距仪摘要超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。本课题详细介绍了超声波传感器的原理和特性,以及STC89C52单片机的性能和特点,并在分析了超声波测距的原理的

2、基础上,指出了设计测距系统的思路和所需考虑的问题,给出了以STC89C52单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。该系统电路设计合理、工作稳定、性能良好、检测速度快、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。关键词:超声波;测距;单片机;STC89C52目录1导论11.1 目的和意义11.2研究的主要内容12总体方案设计与分析22.11 超声波传感器22.1.2 超声波发生接收模块设计22.1.3 收发分立集成超声波探头HC-SR0432.1.4 HC-SR04总体性能分析52.2 STC89C52RC单片机介绍53 系统硬件

3、电路设计73.1 系统电路图73.2 单片机最小系统73.3 超声波模块电路83.4 7端数码管显示电路93.5 蜂鸣器报警电路93.6 按键键盘电路94 系统程序的设计114.1 程序设计流程114.2 C语言源程序12总结17参考文献18附 录(A)(成品展示)19附 录(B)(元件清单)20III1导论1.1 目的和意义由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,对于被测物处于黑暗、有灰尘、烟雾、电磁干扰等恶劣环境有一定的适应能力。具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、

4、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高料位测量、车辆自动导航、物体识别与定位、车辆安全行驶辅助系统乃至地形地貌探测等许多领域中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信

5、息(距离和方向)。因此超声波测距在移动机器人的研究上得到了广泛的应用。同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。1.2研究的主要内容课题基于单片机的超声波测距仪由51单片机最小系统、超声波测距模块、驱动显示电路、报警电路和按键电路等组成。利用超声波测距模块HC-SR04测量距离,并对数据进行分析处理,传给51单片机,再通过LED数码管显示出来,可以通过按键调整报警距离,同时电源部分采用5V稳压直流电源。2总体方案设计与分析2.11 超声波传感器超声波传感器主要有电致伸缩和磁致伸缩两类,电致伸缩采用双压电陶瓷晶片制成,具有可逆特性。压电陶瓷片具有如

6、下特性:当在其两端加上大小和方向不断变化的交流电压时,就会产生“压电效应”,使压电陶瓷也产生机械变形,这种机械变形的大小以及方向与外加电压的大小和方向成正。也就是说,若在压电晶片两边加以频率为的交流电电压时,它就会产生同频率的机械振动,这种机械振动推动空气的张弛,当落在音频范围内时便会发出声音。反之,如果由超声波机械振动作用于陶瓷片使其发生微小的形变时,那么压电晶片也会产生与振动频率相同的微弱的交流信号。超声波传感器结构如下: 图 2-1 元件内部结构 图 2-2 超声波外部结构2.1.2 超声波发生接收模块设计根据超声波测距原理,超声波收发设备应该完成超声波脉冲的发射以及回波首波的精确检测。

7、从结构上可以将收发设备分为收发一体换能器和收发分立换能器,这两种形式各自有优缺点。收发一体超声波换能器由于超声波发射和接收在一个口,因此其不存在近距离形成所谓的三角关系,因此其近距离的测量精度高。但是也由于收发共用端口的原因,导致了在发射完成脉冲序列之前不能够开始接收,这就导致了盲区的存在,这在原理是是不能消除的。收发分立超声波换能器虽然在近距离上可以进行测量,近乎没有盲区的存在,但是在近距离上一定会形成一个三角关系,从而导致其近距离上的测量相对误差极大。而在电路上,由于收发一体的超声波换能器的发射驱动电路和接收极的接收检测电路彼此相连,导致了电路的相互干扰,增加了抗干扰设计工作。虽然收发分立

8、形式也存在串扰的缺点,但其是可以通过软硬件设计消除的。从总体上来说,收发分立在应用上更加简单、可靠,本次设计采用收发分立形式换能器。2.1.3 收发分立集成超声波探头HC-SR04 产品特点:HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。HC-SR04实物图和总体参数分别如图3-3和表2-1所示。图2-3 HC-SR04实物图如图表2-1 HC-SR04总体参数HC-SR04基本工作原理:(1) 采用IO口TRIG触发测距,给最少10us的高电平信号。(2) 模块自动发送8个40khz的方波,自动检测

9、是否有信号返回;(3) 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2; 超声波时序图如图2-4所示。图2-4 超声波时序图2.1.4 HC-SR04总体性能分析根据HC-SR04的原理图图2-5,HC-SR04测距模块时一个相对独立的系统。采用的电源芯片MAX232为超声波换能器提供了合适的电压,驱动换能器正常工作。它采用了单片机EM78P135作为控制器,完成了对外部触发信号的检测、产生脉冲信号、检测回波首波信号等工作。与此同时其还肩负着控制电路的开启,处理超声波换能器的横向干扰,并且消除电路固定

10、延时影响等工作。对于本次设计,选用这种测距模块将极大减少设计的工作,降低设计的成本。图2-5 HC-SR04的原理图2.2 STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。如图2-6 STC89C52引脚图主要特性如下:增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)工作频率范围:040MHz,相当于普通8051的080M

11、Hz,实际工作频率可达48MHz用户应用程序空间为8K字节片上集成512字节RAM通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片具有EEPROM功能具有看门狗功能共3个16位定时器/计数器。即定时器T0、T1、T2外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒通用异

12、步串行口(UART),还可用定时器软件实现多个UART工作温度范围:-40+85(工业级)/075(商业级)PDIP封装图2-6 STC89C52引脚图3 系统硬件电路设计3.1 系统电路图该超声波测距系统由单片机最小系统、超声波模块电路、7端数码管显示电路、蜂鸣器报警电路、按键键盘电路组成,如图3-1 系统电路图所示;图3-1 系统电路图3.2 单片机最小系统单片机最小系统有复位电路和晶振电路组成。为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延迟才撤销复位,以防

13、电源开关或电源插头分-合过程中引起的抖动而影响复位。当单片机的复位引脚出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。所以复位引脚的电容大一点没多大关系,顶多是复位时间长一点;但如果电容太小,高电平持续时间太短,则单片机无法正常复位,就不能工作,电容通常取10UF或22UF,铝电解电容即可。单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电源通过电阻给电解电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),正因为这样,复位脚由低电位升到高电位,引起了内部电路的复位工作;当

14、按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作。晶振电路是单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作。假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。它是由一个晶振和两个瓷片电容组成的,晶振和瓷片电容是没有正负的。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。其起到一个并联协振的作用,这样可以让它的脉冲更平稳与协调。如图3-2 单片机最小系统;图3-2 单片机最小系统3.3 超声波模块电路由单片机STC89C52编程产生25us的方波,由

15、P3.3口输出给超声波模块的Trig端口,再经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,由Echo端口送至单片机P3.2端口。单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。如图3-3 超声波模块电路。图3-3 超声波模块电路213.4 7端数码管显示电路显示电路采用简单实用的4位共阴LED数码管,段码用74HC573驱动,位码用PNP三极管9012驱动。单片机系统及显示电路如图3-4所示图3-4 7段数码管显示电路 图3-5 蜂鸣器

16、电路图3.5 蜂鸣器报警电路本设计采用电磁式蜂鸣器,当测量距离小于预设报警值时,蜂鸣器就会发出报警生硬。电磁式蜂鸣器的发声原理是电流通过电磁线圈,是电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路,即通过一个PNP型三极管9012来放大驱动蜂鸣器。如图3-5所示3.6 按键键盘电路本设计选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时

17、I/O口保护高电平。当有键下时,此I/O口与地短路迫使I/O口为低电平。在单片机程序中查寻此I/O口的电平状态,根据I/O口的电平状态进行相应的程序执行。如图3-6所示。图3-6 按键电路由单片机最小系统、超声波模块电路、7端数码管显示电路、蜂鸣器报警电路、按键键盘电路组成超声波测距的功能框架图如图3-7所示。单片机处理数码管显示蜂鸣器报警按键输入超声波模块图3-7 系统设计原理框架图是否开始是否有按键按下?否mode=0,显示测量距离mode=1,显示预设报警值定时器T1中断定时溢出,超出测量范围,cb=1是键盘扫描程序蜂鸣器模块mode=1,被测距离小于预设报警距离时,蜂鸣器响初始化给Tr

18、ig一个25us的脉冲Echo有高电平响应?开启定时器T1和外部中断0外部中断0服务程序关闭定时器T1,读取定时器T1的数值并转化为距离,关闭中断循环扫描4 系统程序的设计4.1 程序设计流程图4-1主程序流程图在超声波测距仪系统的设计中,采用C语言编程。系统程序主要包括主程序、显示数据子程序、报警子程序、按键子程序和中断服务程序。首先利用C语言的宏定义#define语句来定义个管脚的连接,将每个管脚表示成为便于理解的字符在程序中可以直接对字符进行赋值,以实现对单片机输出端口的控制。程序控制流程如图4-1所示。4.2 C语言源程序#include <reg52.h> #includ

19、e <intrins.h> /_nop_()延时的头文件#define uchar unsigned char#define uint unsigned int/*端口配置*/sbit Trig=P33; /发射端口sbit Echo=P32; /接收端口sbit k1=P16; /设置键sbit k2=P15;/加键sbit k3=P14;/减键sbit feng=P20; /蜂鸣器/*定义变量*/char cb; /超出测量范围标志位char mode=0;/模式标志,0为正常模式,1为设置模式int BJJ=50; /报警距离,默认为50cmuchar timeH,timeL

20、; uint distance; /测量距离uint time; /回波时间/*/显示09,共阴,不带小数点uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*/void delay(uint z) /z毫秒 uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);/*/显示数据转换程序 void display(uint temp) uchar ge,shi,bai; bai=temp/100; shi=(temp%100)/10; ge=temp%10; /百P

21、0=0; P1=(P1|0xff)&0xfd; P0=tablebai|0x80; /按位或,最高位变为1,显示小数点 delay(1); / /十P0=0; P1=(P1|0xff)&0xfb; P0=tableshi; delay(1); / /个P0=0;P1=(P1|0xff)&0xf7; P0=tablege; delay(1); / /*延时25微秒*void delay_25us() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()

22、;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); /* void jianpansaomiao() /键盘扫描 if(k1=0) /设置键按下检测delay(10);if(k1=0)mode+;/模式加if(mode>=2)/加到2时清零mode=0;while(!k1);if(mode=1) /只在设置模式下检测加减键if(k2=0) /加delay(10);if(k2=0)BJJ+;if(BJJ>150

23、) BJJ=150;while(!k2);if(k3=0) /减delay(10);if(k3=0)BJJ-;if(BJJ<=0) BJJ=0;while(!k3); /*void main() uchar i;Trig=0; /首先拉低脉冲输入引脚TMOD=0x10; /定时器1,方式1,16位工作方式 ET1=1; /允许定时器1中断while(1) cb=0;i=0; EA=0; /关总中断 Trig=1; /超声波输入端 delay_25us(); /延时25us Trig=0; /产生一个25us的脉冲 while(Echo=0); /等待Echo回波引脚变高电平EA=1; E

24、X0=1; /打开外部中断0 IT0=1; /外部中断0下降沿触发 TH1=0; /定时器1清零 TL1=0; /定时器1清零 TF1=0; /计数溢出标志 TR1=1; /启动定时器1/*蜂鸣器模块*/if(cb=1|distance>400) feng=1; if(mode=0) /蜂鸣器在正常模式时,当测量距离小于报警距离时就响 if(distance<BJJ) feng=0;else feng=1; else feng=1;/* *if(cb=1|distance>400) feng=1;jianpansaomiao();/*设置模式的显示 if(mode=1)while(i<30)jianpansaomiao();P0=0;P1=(P1|0xff)&0xfe;P0=0x73;delay(1);display(BJJ);i+;/*正常模式的显示*/elsewhile(i<30)jianpansaomiao();if(cb=1|distance>400)feng=1;P0=0;P1=(P1|0xff)&0xfe;P0=0x46;delay(1);display(distance);i+;/*/*/外部中断0,用做判断回波电平void exte

温馨提示

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

评论

0/150

提交评论