招生信息
函授本科_机械设计制造及其自动化毕业设计
作者: xzh 时间: 2022-12-14 浏览:


 
函授本科_机械设计制造及其自动化

题    目      超声波测距仪设计与其应用   
 

摘要

现代社会的电子测距仪的检测距离为五十厘米到五百厘米,而精度要求达到了一厘米,测量的时候不能够与被测物有任何接触,才可以较为清晰的得出结果。又因为超声波的定向能力极强,传递时能耗较低,在媒介里能够传递的较远,所以,超声波常常被人们在测距上所使用。本文设计中由超声波为主体的测距仪由74hc04反相器与CX20106搭配连接电路,从而使超声波发射和接受都得以实现,而AT89C51单片机为是整个仪器的核心构件,因为有着许多特点,例如容易控制,制作方便,性价比高,市场前景较为可观。 成人高考的条件与要求
    关键词超声波;单片机;测距仪
 
 ABSTRACT
 
    The detection distance of electronic rangefinder in modern society is fifty cm to five hundred cm, and the precision is a measurement of CM, when not to have any contact with the measured object, it can get the result more clear. Then, because the ultrasonic pointing ability is stronger, the energy consumption is low when propagating, and the medium can transmit a long distance, so the ultrasonic is often used by people in the detection distance. The design of the instrument for measuring the distance of ultrasonic wave is used as the main body of the 74hc04 inverter and CX20106 lap circuit, so that the ultrasonic transmitting and receiving are realized, this instrument is based on AT89C51 microcontroller as the core, because there are a lot of features, such as easy control, convenient manufacture, high cost, the market prospect is considerable.
Key words: ultrasonic ;single chip microcomputer;range finder,

目 录
 
摘要 .......................................................Ⅰ
Abstract …………………………………………………………………Ⅱ
1.绪论................................................... 1
 1.1背景和意义..................................................................1
 1.2研究内容………………………………………………………………1
2.超声波测距仪相关及意义 ……………………………………2
 2.1超声波在现实生活中应用的意义………………………………  2
 2.2方案设定……............…………………………………………3  
3.系统硬件电路设计………………………………………………………4
 3.1单片机模块……………………………………………………………4
3.2 AT89C51标准功能………………………………………….........……………5
3.3管脚说明 ……………………………………………............…………………5
4.系统软件程序设计……………………………………………………… 7
 4.1超声波测距程序设计…………………………………………………7
 4.2超声波测距流程图…………………………………………………8
5.结论…………...........…………………………………………… 9
参考文献 ………………………………………………………………..........……14
附录 ……………………………………………………........…………..........……15
致谢 ………………………………………………………………..................……22

www.zdnblg.com
第1章  绪论
1.1背景和意义
在最近这些年,我们都能看见,随着科技的发展,生活的节奏越来越快,因此人们需要一种更加快捷,更加安全并且更加稳定的测量距离的仪器现世。而超横波出现之后,人们便意识到,这种能够产生反射且这种反射波叫回声的声波就是人们期待已久的测量距离最好的载体。其原理为:当知道声波传播的速度的时候,声波经过的距离就可以通过声波传播的时间来计算得出。而由于使用超声波测量距离时,其稳定性与无需触碰物体的特性,在很多领域都被使用尝试。本文所设计的仪器则是通过单片机来进行控制,将超声波与无线两个系统进行组合,从而制定出高性价比的仪器。 成人高考报名官网入
因为超声波的指定方向能力较为强大,传播时能耗较低,在媒介里能够传递的较远,所以,超声波常常被人们在测距上所使用。
1.2研究内容
    超声波是指一种调频大于20KHZ的声波,其遵守大部分机械波的传播规律,且拥有自己独特的有点,例如其频率可以很快到达很高的级别,因此它传递时可以聚拢进行很小范围的传播,且方向性就很强。在一些独特的测距系统中,方向性是一个非常重要的参考点。而另外一些独特的测量系统中,与频率高低成反比的波长,可以小到很大的程度。而由于超声波是不可听声,因此在其传播时就不会产生噪音,所以,超声波可以成为绿色的声波。而使用超声波来测距的原理是:发射超声波之后,等到其触碰到物体后,传来其传播的时间,在进行计算,从而得出距离。
    而在工业上,由于所遇情况复杂,因此关于测量距离的技术有很多种,而本文所使用的超声波测量距离的技术则有很多的优点:不需要防护,简单廉价,而在较为差劲的环境之下,其高精度的特点就会被展现。而由于其测量时无需载体带动运动,因此较为便捷的安装也是其优点之一。由于其适应性较好,因此有些其他测量仪器无法测量时,可以由超声波测量。 
 
第2章  超声波测距仪相关内容与意义
超声波具有很多优点,例如传播速度稳定,其利用传播的时间来计算得出距离的方法,使得这种方法简单无害等特点让人们对他的关注度越来越高。因此对于这种技术的需求也就日益增加,在各个行业都有着较大的应用。
2.1 超声波测距原理
通过设计一种以超声波为主题的测量距离的仪器,让他在各种场合可以应用。其核心部件为单片机,通过使用单片机来进行控制超声波的释放以及超声波传来的信息处理,并且将所有信息进行汇总计算得出想要的结果。超声波传来的信息即为超声波在整个过程中时所消耗的时间。其原理如图2.1。
                                                         
图2.1 测距的原理
只要知道超声波传来的时间信息,单片机就可以进行距离方面的计算了  成人高考报名官网入
。距离计算公式为:
              (2-1)
其中:  d为被测物与测距器的距离;
        s为声速的来回路程;
        c为声速;
        t为声波来回所用的时间。
为了使超声波能够为人们所用,人们发明了超声波传感器,他能够生产超声波还能接收超声波传回的信息。其原理在于能够将传感器中的电能转换为超声波并将其发射传递,当超声波触碰到物体并且将信息传回时,将此信息其转化为电信号。
超声波测距的原理为:先测量出超声波经过一次完整测量所消耗的时间,然后乘以其速度就可以得出实际距离的两倍值,又由于超声波在标准空气中的传播的速度为332.45m/s,所以为了使系统的测量精度达到毫米级别,我们的单片机选择使用12MHZ晶振。
    有超声波传感器发射的声波以v在标准空气中传递,接触障碍物时便开始返程,由传感器接收信号并对其进行解读,往返时间设为t,由s=vt/2可以计算出与被测障碍物之间的距离。又因为超声波的传递速度能被当时的温度状况所影响,其传播速度v与当地温度有关,下表2.1展现了超声波的传播速度与温度之间的关系。
表2.1 超声波传播速度与温度之间的关系表
温度(℃) -30 -20 -10 0 10 20 30 100
声速(m/s) 313 319 325 323 338 344 349 386
 
具体的原理图如下面的流程图,由单片机优先释放信号,然后经过发射器发出,然后接收器接受声波信号并进行解读放大并中断程序,测的时间为t,再通过软件对数据进行计算并得出所求距离。
www.zdnblg.com
 
图2-2 超声波测距原理框图
2.2 方案设定
整个系统共由四个模块组成,其中包括:超声波谐振频率调理及其回波接受处理电路,led数码显示屏、单片机与电源。而本文所设计的机器主要以单片机为主,利用其进行掌控整个系统。超声波传感器定向发射声波,在其被发射出的瞬间进行计时,其在空气中进行传递,当触碰被测物体时立即回归,而接收器接收到反射波传回的信息之后当即终止计算时间并且对数据进行解读。正常情况下,声速v=340m/s,而由接收器内部的计时器我们能够直接读出传递时间t,从而通过计算得出距离s,即s=340*t/2,这就是最常用的时差测距法。成人专升本宁波
显示模块的主体是一块LED屏;测量的结果的显示可以由四位数字段码进行表达,其优点在于可以有自己手动操作,精度比较高,其缺点为性能不稳定。   成人教育
 
第3章 系统硬件电路设计
3.1单片机模块
近年来,一种在小小芯片上继承了各种元件的微信计算机发展的越来越好,他就是单片机。其主要集成了CPU、RAM、ROM、定时计数器,中断装置,时钟装置等。而在小小芯片上集成了这么多装置的单片机也拥有了诸多优点,例如体型小,价格便宜且开发方便等。因此在电子技术与工业方面较为吃香,应用较为广泛。而在控制领域里,人们更加在意的是计算机的体型的大小还有成本的高低,运行是否可靠以及其灵活度。而在各个仪器中引进单片机这一装置,可以使仪器精度更高,还能提高其运算速度,还能简化装置,性价比极高。
型号为AT89C51的单片机通常可以通过两种不同的方式来产生时钟信号,一种由内部一种由外部。通过在其内部接一个晶振,形成自激振荡器并产生脉冲信号。而其中还有电容,其作用为稳定频率与快速起振,电容值在5-30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2-12MHz间选择,典型值为12MHz和11.0592MHz。
复位电路有两个方法,分别为通过上电自动与通过手动按钮两种。而最简单的前者是通过给外部的电容充电进行实现。除了上电复位还有按键复位。而本设计的采用的是按键复位。而按键复位也有两种,分为电平和脉冲。其中电平法则是通过将RST与VCC相接通而得以实现。最小系统如图3-1所示。
 
图3-1 单片机中最小的系统的原理图
3.2 AT89C51标准功能
(1)与MCS-51单片机产品兼容
(2)8K字节在系统可编程Flash存储器
(3)1000次擦写周期
(4)全静态操作:0Hz~33Hz
(5)三级加密程序存储器
(6)32个可编程I/O口线
(7)三个16位定时器/计数器
(8)八个中断源
(9)全双工UART串行通道
(10)低功耗空闲和掉电模式
(11)掉电后中断可唤醒
(12)看门狗定时器
(13)双数据指针
(14)掉电标识符
3.3 管脚说明
(1) VCC:电源
(2) GND:地
(3) P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。在这种模式下,P0具有内部上拉电阻。
(4) P1口:P1口是一个双向口,能够驱动4分逻辑电平。对其写入“1”时,可以当做输出口。此外,P1.0和P1.2分别作定时器与计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX) ,具体如表4-1所示。  
表4-1  P1口第二功能
引脚号 第二功能
P1.0                  T2 ,时钟输出
P1.1                  T2EX
P1.5 MOSI(在系统编程用)
P1.6 MISO(在系统编程用)
P1.7 SCK(在系统编程用)
 
 (5) P2 口:P2口是一个双向口,也能够输出4个电平,当对其写入“1”时,可以当做输入口使用。而当做输入口使用的时候,就会输出电流。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。   
(6) P3 口:P3口也是一个双向口,能够驱动四个逻辑电平。当写入“1”时,可以作为输入端口使用。当作为输入端口使用时,将输出电流。  
P3口也可以作为此单片机的第二功能使用。如表4-2所示。
表4-2 P3口第二功能
引脚号 第二功能
P3.0 RXD(串行输入)
P3.1 TXD(串行输出)
P3.2 INT0(外部中断 0)
P3.3 INT0(外部中断 0)
P3.4 T0(定时器0外部输入)
P3.5 T1(定时器1外部输入)
P3.6 WR(外部数据存储器写选通)
     P3.7 RD(外部数据存储器写选通)
 
(7) RST: 复位输入。当晶振开始进行工作的时候,RST脚可以使单片机复位,方法为令其维持两个机器周期的高电平。而特殊寄存器 AUXR(地址 8EH)上的DISRTO位可以让这个功能不能触发。DISRTO默认状态下,复位高电平有效。
(8) ALE/PROG:地址锁存控制信号(ALE)是输出脉冲。
通常情况下,ALE可以用做输出脉冲,能够当做外部定位器或者时钟。它能够使微控制器无效。  
(9)  PSEN:他是外部储存程序的选通信号。当单片机在外部代码执行时,他将被激活两次。 
(10) EA/VPP:他是访问位于外部的程序的存储器的控制信号。 
(11) XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
(12) XTAL2:振荡器反相放大器的输出端。
 
 
第4章 系统软件程序设计
4.1超声波测距程序设计
超声波测距器的软件主要由以下部分组成:
1、主程序:初始化系统并且将显示端口进行清零,令EA=1。
2、超声波发射子程序:延迟0.1ms之后发送超声波脉冲。
3、超声波接收中断程序:打开外中断0并且接受返回的超声波信号。
4、显示子程序:将计算后的结果进行显示。
已知:晶振为12MHZ,机器周期为1us,气温为20摄氏度,在这种温度下,声速为344m/s,计数器数值定位T0。可得公式: 宁波成考报名时间
                     (4-1)
在此我们使用C语言编程进行对于此复杂算法的编程。通过P1.0端口发送2个左右超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T0打开进行计时。利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。
4.2超声波测距流程图
第5章  结论
在完成了所有的设计之后,我们对所设计的电路进行了较为精细的测量并且进行校准,发现了此电路的测量范围在15厘米到250厘米内的平面物体,最大的误差不超过2厘米,然而显示的最小的分辨率为0.01米,测量的盲区小于0.15米,而且重复性较为优越。本文设计的测距仪拥有以下优点:稳定性较好,灵敏度较高,盲区小,分辨率小于0.01米。被测目标不需要特意的进行定位固定。但是在检测过程中会有一些不便的地方:
1.因为超声波传感器的发射功率较低,因此距离大于五米的事物无法被测量。检测距离有限。
   2.功率较低但是电流较高。
3.不能够实现不同温度下的测距功能。
4.在空气中传播时,容易被电磁波所干扰。
超声波测距的原理则是通过记录超声波完成一次检测所花费的时间来进行计算通过的距离。实际上人们大部分使用的测量方法总共有两种,超声波测距则为两种之一,反射波方式。
综上所述:若已知:当地温度,当地声速,便可以通过计时等操作得出所求的距离。而求温度则是难点之一,但是可以由一个已知距离的标杆进行计算从而得出当地声速,从而省去计算温度的过程。
所以可知,本文设计的测距仪可以通过较为小的代价得出较大的精度。
本文还介绍了超声波测距仪的电路设计以及程序设计还有电路的搭建与调试。
本电路设计由于功率较小而导致测量的距离并没有达到设计的初衷,不过对于整个仪器的功能并没有产生较大的影响,可以满足日常生活与一些较为小型的工业上面的测试,因此此设计在测距方面有着较为深刻的影响。这个设计开拓了我关于测距方面的视野并且让我对于单片机这一小巧而精致的装置有了较为深刻的理解,让我对于编程也产生了浓厚的兴趣,全面的提升了自我。

参考文献
[1]张艺刚.单片机原理与接口技术[M].北京:北京航空航天大学出版社,2005.68~105. 
[2]胡萍.超声波测距仪的研制[M].浙江:浙江大学出版社·2000.103~159
[3]李华.单片机C语言编程[M].北京:北京航空航天大学出版社·2005.26~56
[4]苏长赞.红外线与超声波遥控[M].北京:人民邮电出版社·1993.159~189
[5]苏伟.超声波测距误差分析.传感器技术[J].2005,第五期,23
[6]周荷琴、吴秀清.微型计算机原理与接口技术[M].安徽:中国科学技术大学出版社,2009.45~47
[7]靳达.单片机应用系统开发实例导航[M].电子工业出版社人民邮电出版社,2003.26~29
[8]余永权、汪明慧等.单片机在控制系统中的应用[M].北京:电子工业出版社,2004.45~51
[9]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.11~23
[10]刘凤然.基于单片机的超声波测距系统[J].传感器世界,2001.第五期.20~31
[11]高飞燕.基于单片机的超声波测距系统的设计[J].信息技术,2005.41~52
[12]沈燕、 高晓蓉、孙增友等. 基于单片机的超声波测距仪设计[J]. 现代电子技术, 2012, 35(7):126-129.
[13]孔雅琼.基于单片机的超声测距仪研究与开发[D]. 哈尔滨:国防科学技术大学, 2007.
[14]粟娟.基于单片机的超声波测距系统设计[J].企业技术开发, 2012(26):16-17.
[15]戴曰章、吴志勇. 基于AT89C51单片机的超声波测距系统设计[J].计量与测试技术, 2005,32(2):17-19.

附录
源程序:
#include <reg51.H>
sbit k1=P3^4;
sbit csbout=P1^0;//超声波发送
sbit csbint=P3^2;//超声波接收
sbit bg=P3^3;
#define LED P0
sbit LED1=P2^4; //LED控制
sbit LED2=P2^5; //LED控制
sbit LED3=P2^6; //LED控制
sbit bj=P2^0;//报警
#define csbc 0.0347
unsigned char cl,mqzd,csbs,csbds,buffer
[3],xm1,xm2,xm0,jpjs;//显示标识
unsigned char convert[10]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x09};//0~9段码
unsigned int s,t,i,xx,j,sj1,sj2,sj3,mqs,sx1;                                 
void csbcj();
void delay(j);//延时函数
void scanLED();//显示函数
void timeToBuffer();//显示转换函数
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();
void main()//主函数
{
EA=1;//开中断
TMOD=0x11;//设定时器0为计数,设定时器1定时
ET0=1;//定时器0中断允许
        ET1=1;//定时器1中断允许
        TH0=0x00;
        TL0=0x00;
        TH1=0x9E;
        TL1=0x57;
        csbds=0;
        csbout=1;
        cl=0;
        csbs=8;
        jpjs=0;
        sj1=50;/////////测试报警距离
        sj2=200;
        sj3=580;
        k4cl();
        TR1=1;                                  
        while(1)
          {
                keyscan();
                if(jpjs<1)
                {
                        csbcj();//调用超声波测距程序
                        if(s>sj3)//大于时显示“CCC”
                        {
                                buffer[2]=0xC6;   
                                buffer[1]=0xC6;   
                                buffer[0]=0xC6;   
                        }
                        else if(s<sj1)//小于时显示“- - -”
                        {
                                buffer[2]=0xBF;   
                                buffer[1]=0xBF;   
                                buffer[0]=0xBF;
                        }
                        else timeToBuffer();      
                }
                else timeToBuffer(); //将值转换成LED段码
                offmsd();
                  scanLED();//显示函数
                if(s<sj1)
                bg=0;
                bg=1;
        }
}
void scanLED()//显示功能模块
{
        LED=buffer[0];
        LED3=0;
        delay(200);
        LED3=1;
 
        LED=buffer[1];
        LED2=0;
        delay(200);
        LED2=1;
         
        LED=buffer[2];
        LED1=0;
        delay(200);
        LED1=1;
}
 
void timeToBuffer()//转换段码
 
功能模块
{
        xm0=s/100;         
        xm1=(s-100*xm0)/10;
        xm2=s-100*xm0-10*xm1;