单片机设计 超声波测距仿真(AT89C51)

发布时间:2023-01-05  

一、电路设计

由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此得到了广泛的应用。如图5即为HC-SR04超声波测距模块

1、基本工作原理:

如图6为超声波测距传感器HC-SR04模块,VCC 接 5V 电源,GND 为地 线,TRIG 为触发控制信号输入,ECHO为回响信号输出。超声波在传播时碰到障碍物即返回,HC-SR04模块收到回波信号后Echo口输出一个高电平。

2.、HC-SR04电气参数:

HC-SR04超声波测距模块可提供2cm至400cm的非接触式距离感测功能,测距精度可达3mm;模块自身包括超声波发射器、接收器与控制电路

3、操作步骤为:

HC-SR04的Trig端口和Echo端口接入单片机的I/O口接,初始化时将trig和echo端口都置低,首先向给 trig 端发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),如图6,然后等待,捕捉 echo 端输出一个高电平,当单片机检测到上升沿(或高电平)的同时,打开定时器开始计时,再次等待,直到单片机检测到echo变成下降沿(或低电平)时,结束计数,读出计时器的时间,计数器的计数值乘以单片机计数周期就是超声波从发射到接收的往返时间,即按照

*测试距离(S)=高电平时间(t)声速(v=340m/s)/2

就可以算出超声波到障碍物的距离。

二、运行结果

三、部分代码

#include "task.h"


//全局变量定义

//段码表,适用于共阴数码管

unsigned int code duan_ma[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //0~9

0x77,0x7c,0x39,0x5e,0x79,0x71}; //A~F

unsigned int dis_buf[4]; //显示缓存


unsigned int S = 0; //距离缓存变量

unsigned long time = 0; //时间缓存变量 

unsigned int S_H = 400, S_L = 10; //S_H:报警上限值,默认400cm,S_L:报警下限值,默认10cm




/* 延时,单位:ms */

void delayms(unsigned int ms)

{

unsigned char a,b,c;


while(--ms)

{

    for(c=1;c>0;c--)

        for(b=142;b>0;b--)

            for(a=2;a>0;a--);

}

}




/* 计算测距 */

void count(void)

{

start_ranging(); //启动一次超声波

while(!Echo); //等待超声波模块输出IO拉高 

TR0 = 1; //开启定时器计时

while(Echo); //等待超声波模块输出IO拉低

TR0 = 0; //关闭定时器计时

/* 计算距离 */

time = TH0 * 256 + TL0; //得到的时间,专业写法应该是这样:time = TH0 << 8 | TL0

TH0 = 0; //定时计数器清零

TL0 = 0;

S = (time * 1.7) / 100; //算出来是M

}

/* 显示距离 */

void dis_distance(void)

{

dis_buf[3] = 0x00;

dis_buf[2] = duan_ma[S / 100 %10]; //取出百位数,并在数码管的第3位显示,从右往左数

dis_buf[1] = duan_ma[S / 10 %10]; //取出十位数,并在数码管的第2位显示,从右往左数

dis_buf[0] = duan_ma[S % 10]; //取出个位数,并在数码管的第1位显示,从右往左数

}

/* 设置报警功能 */

void key_fuction(void)

{

unsigned char mode_flag = 1; //模式切换标记位,1:设置上限值,2:设置下限值,3:退出


while(1)

{

if(key_scan() == 1)

{

BEEP = 0; //按键提示音

delayms(50);

BEEP = 1;

delayms(1000);

++mode_flag;

if(mode_flag >= 3) //如果满3了,则退出

break;

}

if(key_scan() == 2) //如果加键按下

{

BEEP = 0; //按键提示音

delayms(50);

BEEP = 1;

delayms(1000);

if(mode_flag == 1) //设置上限值

{

++S_H;

if(S_H > 400)

S_H = 2;

}

if(mode_flag == 2) //设置下限值

{

++S_L;

if(S_L > 400)

S_L = 2;

}

}

if(key_scan() == 3) //如果减键按下

{

BEEP = 0; //按键提示音

delayms(50);

BEEP = 1;

delayms(1000);

if(mode_flag == 1) //设置上限值

{

--S_H;

if(S_H < 2)

S_H = 400;

}

if(mode_flag == 2) //设置下限值

{

--S_L;

if(S_L < 2)

S_L = 400;

}

}


/* 报警设置显示 */

if(mode_flag == 1) //显示设置上限值内容

{

dis_buf[3] = 0x76; //第4位数码管显示字母 H

dis_buf[2] = duan_ma[S_H / 100 % 10]; //显示百位数

dis_buf[1] = duan_ma[S_H / 10 % 10]; //显示十位数

dis_buf[0] = duan_ma[S_H % 10]; //显示个位数

}

if(mode_flag == 2) //显示设置下限值内容

{

dis_buf[3] = 0x38; //第4位数码管显示字母 L

dis_buf[2] = duan_ma[S_L / 100 % 10]; //显示百位数

dis_buf[1] = duan_ma[S_L / 10 % 10]; //显示十位数

dis_buf[0] = duan_ma[S_L % 10]; //显示个位数

}

}

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    在传播过程中其大小将会随着传播距离的改变而改变,传播距离越大,超声波信号则越小。在STM32单片机的高精度超声波测距系统设计过程中,为了提高测量结果的精度,设计人员通常会对衰减的超声波回波进行时间增益补偿,这就需要将超声波补偿电路加人到系统设计......
    基于51单片机的超声波测距系统设计;功能: 超声波测距仪,测量距离,用LCD12864显示信息。 lcd_writestr(0,0," 超声波测距仪 "); lcd_writestr(1,0......
    为核心器件的超声波测距系统及其硬件和软件的设计方案。系统中还集成了声速的温度补偿、串行输出和LCD 显示等功能,能实时修正超声速度和显示测量值。实验结果表明,该超声波测距系统具有测量数据准确,线性......
    基于51单片机的超声波测距模块设计;超声波测距的模块,51单片机接上12864液晶,HC-SR04超声波模块,就可以了,具体程序没怎么看,超声波模块的硬件也不晓得。 超声波测距51单片机12864......
    基于51单片机的汽车倒车防撞报警系统;引言结合电控技术、电气技术构建起机电一体化控制体系,并逐渐形成了独立的、完整的技术体系成为一门独立的应用技术体系。对于汽车设计制造而言,汽车......
    基于STM32单片机的紫外线消毒系统设计;一.系统设计 通过STM32单片机进行主控,通过设置消毒时间来控制消毒,超声波测距模块和光电开关主要起到人体检测作用,当检测达不到人体时才能进行消毒,检测......
    为核心的移动机器人还存在处理数据局限、控制不稳定等不足之处,国内市场暂时还没有出现具有真正意义的跟随性智能载物小车。本设计基于单片机的智能小车测距模块、红外遥控模块和小车智能控制模块,通过软硬件设计调试,实现......
    ]。 本次设计内容 本设计模仿蝙蝠的超声应用能力和原理,在研究现有的电子式超声波测距系统的基础上,应用回声定位的原理,通过传感器发送超声波,然后获得并分析障碍物的回波信息,研制的一套超声波导盲系统[11......
    基于STC89C52RC单片机的超声波测距程序设计;网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4......
    作业肌肉骨骼疾患问卷的编制[J].中华劳动卫生职业病杂志,2011(12):908-912. [5]GB/T 3976—2014 学校课桌椅功能尺寸及技术要求[S]. [6]王蕊.基于单片机的多功能自动调温风扇系统设计[D......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>