原创 stc12C2052开发超声波测距

2008-6-10 16:15 3066 9 10 分类: MCU/ 嵌入式
  超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。目前国内一般使用专用集成电路设计超声波测距仪,但是专用集成电路的成本很高,并且没有显示,操作使用很不方便。本文介绍一种以AT89C2051或GSM97C2051单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。实际使用证明该仪器工作稳定,性能良好。

1 超声波测距原理


    超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离S=Ct/2,式中的C为超声波波速。


    由于超声波也是一种声波,其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。其系统框图如图1所示。


2 AT89C2051的功能特点


    AT89C2051是一个2k字节可编程EPROM的高性能微控制器。它与工业标准MCS-51的指令和引脚兼容,因而是一种功能强大的微控制器,它对很多嵌入式控制应用提供了一个高度灵活有效的解决方案。AT89C2051有以下特点:2k字节EPROM、128字节RAM、15根I/O线、2 个16位定时/计数器、5个向量二级中断结构、1个全双向的串行口、并且内含精密模拟比较器和片内振荡器,具有4.25V至5.5V的电压工作范围和 12MHz/24MHz工作频率,同时还具有加密阵列的二级程序存储器加锁、掉电和时钟电路等。此外,AT89C2051还支持二种软件可选的电源节电方式。空闲时,CPU停止,而让RAM、定时/计数器、串行口和中断系统继续工作。可掉电保存RAM的内容,但可使振荡器停振以禁止芯片所有的其它功能直到下一次硬件复位。


    AT89C2051有2个16位计时/计数器寄存器Timer0t Timer1。作为一个定时器,每个机器周期寄存器增加1,这样寄存器即可计数机器周期。因为一个机器周期有12个振荡器周期,所以计数率是振荡器频率的 1/12。作为一个计数器,该寄存器在相应的外部输入脚P3.4/T0和P3.5/T1上出现从1至0的变化时增1。由于需要二个机器周期来辨认一次1到 0的变化,所以最大的计数率是振荡器频率的1/24,可以对外部的输入端P3.2/INT0和P3.3/INT1编程,便于测量脉冲宽度的门。

表1 声速与温度关系表



温度(℃)-30-20-100102030100
声速(米/称)313319325323338344349386

    充分利用AT89C2051的片内资源,即可在很少外围电路的情况下构成功能完善的超声波测距系统。


3 系统硬件电路设计


    超声波测距仪的硬件电路如图2所示。


    AT89C2051通过外部引脚P1.6输出脉冲宽度为250μs,载波为40kHz的10个脉冲的脉冲群,以推挽形式加到变压器的初级,经升压变换推动超声波换能器发射出去。在发射的同时,P1.7输出一个高电平启动,给电容C4充电。发射结束时高电平翻转为低电平,C4开始对R2、R3组成的分压器放电并输出到比较器的负端。超声波接收换能器将接收到的障碍物反射的超声波送到放大器进行放大,这是一个高增益、低噪声放大器,在对放大后的信号进行检波后将检测回波送到比较器的正输入端。发射时P1.7输出的电平可以抑制比较器的翻转,这样就可以抑制发射器发射的超声波直接辐射到接收器而导致错误检测。


    图3是超声波测距原理的波形图,从图中可以看到,测出回波和发射脉冲之间的时间间隔,利用S=Ct/2就可以算出距离,再在LCD上显示出来。当然还可以设置若干个键,以用来控制电路的工作状态。限制系统的最大可测距离存在四个因素:超声波的幅度,反射而的质地,反射而和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。


4 系统软件设计


    AT89C2051单片机和其开发应用系统具有语言简洁、可移植性好、表达能力强、表达方式灵活、可进行结构化设计、可以直接控制计算机硬件、生成代码质量高、使用方便等诸多优点。超声波测距仪就是用AT89C51单片机开发设计的。它采用模块化设计,由主程序、发射子程序、查蟓接收子程序、定时子程序、显示子程序等模块组成。


    图4和图5分别为主程序和测量子程序的框图。该系统的主程序处于键控循环工作方式,当按下测量键时,主程序开始调用发射子程序、查询接收子程序、定时子程序,并把测量结果用显示子程序在液晶屏上显示出来。


    必须指出的是,由于液晶要使用同一P3口,所以必须全部使用位操作,否则将导致LCD不能正常显示。另外,在系统还可以加入温度传感器来监测环境温度,把表1所列的数据做到程序中可进行温度被偿。为了增强系统的可靠性,应在软硬件上采用一些特殊措施。限于篇幅,下面仅给出部分程序,感兴趣者可与作者联系。


    # pragma DB OE CD OT(5,SPEED) ROM(LARGE)IV


    /*连接所需要的库*/


    #i nclude<reg52.h>


    #i nclude<absacc.h>


    #i nclude<stdio.h>


    /*定义数据类型*/


    typedef unsingned char byte;


    typedef unsigned int word


    #define uchar unsigned char


    #define unint unsigned int


    #define ulong unsigned long


    /*定义系统常数*/


    #define TRUE 1


    #define FALSE 0


    #define C="340" /*声速*/


    /*定义功能位*/


    sbit bflag="ACC7";


    sbit VOLCK="P1"^5;


    sbit MING="P3"^5;


    sbit QUIET="P1"^3;


    sbit BACK="P1"^2;


    /*定义显示缓冲区*/


    uchar idata ON[16]={’,’L’,’E’,’N’,’G’,’T’,’H’,’=’,’8’,’.’,’8’8’,’m’,’’,’’,’’};


    /*主程序用延时子程序*/


    woid main-delay(void)


    {


    register i;


    TRO="1";


    for(i=0;i<15;i++)


    {


    TH0=0;


    TL0=0;


    Do{}while(!TF0);


    TF0=0;


    }


    TR0=0;


    }


    */通用延时子程序*/


    void delay(void)


    {


    unint i;


    for(i=0;i<200;i++){;}


    }


    /*键盘延时子程序*/


    void key-delay(void)


    {


    unint i;


    for(i=0;i<200;i++){;}




    }


    /*初始化程序*/


    void start_main()


    {


    tegister i;


    uchar a[16]={’’,’L’,’E’,’N’,’G’,’T’,’H’,’=,’8’,’.’,’8’,’8’,’m’,’’,’’,’’};


    for(i=0;<16;i++)


    {ON=a;}


    nitlcd();/*初始化液晶*/


    display(ON);/*更新显示*/


    }


    /*主程序*/


    void main()


    {


    register s,keycode;


    long idata t;


    start-main();/*初始化*/


    main-delay();/*延时*/;


    if(keycoed= =true)


    {


    keycode="key-scan-wait"();


    /*判断是否有测量键按下*/


    t="measure"();*/测量*/


    S="0".5*t*C;*/换算*/


    Decode-bcd(s.0x09);


    /*把测量结果置换入显示缓冲区*/


    init-lcd();/*初始化液晶*/


    display(ON);/*更新显示*/


    }


    }


5 结束语


    虽然用一个单独计时器电路也可以测量超声波的传输时间,但利用AT89C2051单片机可以简化设计,便于操作和直观读数。该系统经实际测试证明,可以满足大多数场合的测距要求。


PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2012-12-2 09:22

你好,我现在正在做一个超声波的测距学校项目,请问下能不能发一份资料给我下非常感谢,我的邮箱578796122@qq.com

用户209490 2009-5-23 21:06

请问我安装以后 为什么打开bash的时候 它只是闪烁了一下 就消失了.?
相关推荐阅读
潜龙思瑞 2015-01-08 10:24
[智能手机]国产手机应改进的地方及目标
国产手机急需改进的地方有这么几条:   1,死机,国产手机就是死机毛病,是个大患。也是国产手机不要的主要原因。也许是软件设计不行,反正为了金钱拿出来卖,结果伤了国人的心。 2,卫星定位...
潜龙思瑞 2014-12-08 09:17
[智能手机]国产手机之我见
我以前干过通讯这个行业,现在不干了,但我对这个行业比较了解。 国产手机给我的印象是“山寨货”,档次低。虽然现在有了好点了的,什么大屏的5寸的7寸的,但都没有逃过它的烙印,得过且过,说白了就是“...
潜龙思瑞 2012-03-22 09:01
模块时代之ADI实验室电路
什么是实验室电路?   1、经过构建和测试可以确保功能和性能的电路设计;   2、借助ADI公司众多应用专业技术,解决了多种常见的模拟、RF/IF和混合信号设计挑战。 ...
潜龙思瑞 2010-11-10 20:01
智林小JLINK才48元超小超好用
 简版 JLINK ARM 仿真器(相当于USB型Wiggler)特点:1.和JLINK V7功能相同。(J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWA...
潜龙思瑞 2010-06-10 09:36
网上出现另类智林STM32开发板的抄板
真正智林板,做工精良出口日,韩,新,台,美,印。。。以下是最近出现抄板,好像没抄好^_^ ...
潜龙思瑞 2010-05-24 13:58
智林LPC1114核心模块
智林LPC1114核心模块Z111xP最新ARM Cortex-M0内核LPC1114核心模块/开发板–替代51等8位单片机 LPC1114背.jpg (64.74 KB)2010-5-24 13:4...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /3 下一条