51单片机-超声波模块

发布者:RainbowGarden最新更新时间:2021-10-14 来源: eefocus关键字:51单片机  超声波模块  测距工具 手机看文章 扫描二维码
随时随地手机看文章

1.超声波模块型号

超声波模块是一种常用的测距工具,一般用在避障小车,水位监控系统中,本教程使用的模块型号为HC-SR04,外观形状大体如下

9.3.png

模块除了两个电源引脚外,还有TRIG,ECHO引脚,这两个引脚分别接我们开发板的P2.0和P2.1。

工作原理就是起初先给这两个引脚都拉低,然后让TRIG引脚拉高10微秒以上再拉低产生一个脉冲起始信号(程序中我们是拉高20微秒)。起始信号一开启,ECHO引脚就会被拉高的同时,超声波开始发射,ECHO引脚检测到反射回来的信号时就会被拉低,因为声速为340m/s。那么测出的距离就是

(ECHO引脚高电平持续的时间*340m/s)/2。

中学学过用声波测海底深度,时间*声速=来回的距离,所以需要除以2才是真正的深度,超声波模块也一样。

 

2.软件分析

计算ECHO引脚高电平的持续时间就用定时器的计数功能完成,如果定时器计数溢出,证明测的距离太远,超出模块的测距范围(最多4米),我们就在数码管上显示999表示距离太远。在测量范围内我们的数码管就显示测出的厘米数。

比如说定时器的计数为9216,那么高电平的持续时间就是9216*(12/11059200)=0.01s

测出的距离就是0.01*340/2=1.7m

数码管就显示170。

不过为了简化单片机的计算过程,我们可以这样算

“( (X*12)/11059200 )*340*100/2”就是厘米数,化简约为“X/54”,X就是定时器的计数值。

本讲代码需要用到“#include”的“_nop_();”,这个表示延时1微秒左右,请参考《手把手教你学51单片机》文档14.2节后半段文字。


3.代码

#include  

#include //详见第六章第8讲

#include     //详见第八章第11讲

#include  

 

sbit TRIG = P2^0; 

sbit ECHO = P2^1; 

u8   FLAG = 0;

void delay_20us() 

{

    _nop_();_nop_();_nop_();_nop_();_nop_(); 

    _nop_();_nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();_nop_();

    _nop_();_nop_();_nop_();_nop_();_nop_();

}

  

void main()

{  

    u16 time_data,CM_data;

    TRIG = 0; 

    ECHO = 0;

 

    LED_Init();        //初始化LED硬件模块

    EA = 1;            //闭合总中断开关

    TIM1_Init(1000,0); //定时1ms,用来刷新数码管显示,定时精度要求不高可不微调

 

    TMOD &= 0xF0;

    TMOD |= 0x01; 

    ET0  = 1;

    while(1)

    {   

        TH0  = 0; 

        TL0  = 0; 

        FLAG = 0;      //上次如果是超出测量范围,FLAG被置1,这次再测就要清0

 

        //启动发射声波

        TRIG = 1;    

        delay_20us();

        TRIG = 0;

 

        while(!ECHO);              //声波开始发射,等待ECHO引脚拉高退出这个循环

        TR0 = 1;                   //ECHO引脚一拉高,就打开定时器进行计数 

        while(ECHO==1 && FLAG==0); //收到声波返回来的信号ECHO引脚就拉低,退出这个循环;如果定时器溢出,就会进入中断函数执行“FLAG=1;”

                                   //也就是测量的距离太远,一直没有收到反射回来的信号,不满足“FLAG==0”的条件只能结束这个循环语句  

        TR0 = 0;                   //关闭定时器结束计数

 

        time_data =TH0;

        time_data=(time_data<<8)|TL0;                //把两个八位的寄存器里的值组成一个16位变量的值,也就是定时器计数值

        CM_data = time_data/54;                      //得到厘米的表达式

 

        if(FLAG==1){ShowNumber(999); delay_ms(100);} //超出测量范围显示999,延时的目的:比如测得5cm到6cm之间,数码管会频繁在5跟6之间显示,加入延时就会让它们显示的没有那么频繁   

        else {ShowNumber(CM_data); delay_ms(100);}     

    }

}

  

void TIM0_IRQHandler()  interrupt 1   

{

    FLAG=1;

}

 

void TIM1_IRQHandler()  interrupt 3

{

    TH1 = T1RH;  //重新加载重载值

    TL1 = T1RL;

    SEG_Scan();

}


关键字:51单片机  超声波模块  测距工具 引用地址:51单片机-超声波模块

上一篇:51单片机-舵机与按键
下一篇:51单片机-串口通信入门

推荐阅读最新更新时间:2024-02-25 16:37

AT89C2051单片机对足浴器温度控制系统的设计
足浴器的设计难点在于成本控制和温度控制系统的设计。近年来,开关电源技术的逐渐成熟,为小功率电源供电提供了一个高效率且低成本的方案,摒弃了传统的变压器降压、整流、三端稳压的低效率供电方式。而通过软件算法完善,例如PID算法的运用,可减少部分硬件开销,降低成本及系统复杂度,提高系统的稳定性。设计结合以上技术,着眼于成本最小化,性能最大化,实现了LED温度显示,双按键目标温度调节,高精度温控功能。由于主控芯片AT89C2051只有两组共16个IO引脚,2 kB的内存,因此需合理运用IO资源,程序设计简洁,合理分配内存空间。 1 系统结构设计 系统由供电、采样、按键、显示及单片机部分组成。 传感器负责采集温度值,传递给MCU,目标
[单片机]
AT89C20<font color='red'>51单片机</font>对足浴器温度控制系统的设计
MCS-51单片机P0口扩展技术研究
0 引言 在单片机家族的众多成员中,MCS-51系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,占领了工业测控和自动化工程应用的主要市场,并成为国内单片机应用领域中的主流机型。 MCS-51单片机的并行口有P0、P1、P2和P3,由于P0口是地址/数据总线口,P2口是高8位地址线,P3口具有第二功能,这样,真正可以作为双向I/O口应用的就只有P1口了。这在大多数应用中是不够的,因此,大部分MCS-51单片机应用系统设计都不可避免的需要对P0口进行扩展。 由于MCS-51单片机的外部RAM和I/O口是统一编址的,因此,可以把单片机外部64K字节RAM空间的一部分作为扩展外围I/O口的地址空间。这样,单片机就可以像访问
[单片机]
51单片机C编程(十三 DAC0832锯齿波的产生)
#include reg51.h #include absacc.h #define DAC XBYTE //DAC0832的地址 void main() { int i; while(1) { for(i=0;i 255;i++) //送数字量进行转换 {DAC=i;} } }
[单片机]
51单片机程序设计中的地址指针及其应用
CS-51单片机外部RAM的地址空间为64K,地址总线为16位,访问外接RAM可执行如下4条指令: MOVX A,@DPTR MOVX @DPTR,A MOVX A,@RI MOVX @RI,A 其中DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL;Ri(I=0,1)是8位寄存器,作为地址指针时仅存低8位地址。 MCS-51执行上述指令时分为两个阶段:首先,是从外接程序存储器中取出指令代码,并进行分析。然后,执行对外接RAM的数据读/写操作。在这两个阶段,P0口、P1口上的地址选通是有区别的。 执行“MOVX A,@DPTR”和“MOVX @DPTR,A”指令时,在读指令代码阶段,由程序计数器(PC)提供A0
[单片机]
TMS320VC5402DSP与51单片机的接口设计技术
TMS320VC5402(VC5402)是德州仪器公司推出的具有较高性价比的定点数字信号处理器。VC5402增强外设由软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(DMA)控制器、增强型8位并行主机接口(HPI)等组成。两个可编程的多通道缓冲串口(McBSP)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。DSP和单片机之间的通信一般利用双口RAM,通过串口或DSP的HPI接口实现。 利用双口RAM实现 CY7C026是CYPRESS公司生产的16k×16B高速双口静态RAM,存取速度小于25ns。他具有真正的双端口,可以同时进行数据存取,两个端口具有独立的
[应用]
51单片机之中断系统
51单片机 说在前面 1.今天初步使用了一下怎么去焊接,什么锡丝,松香,铁架台,焊枪,洞洞板,还是得自己买一套琢磨 2.心疼我的电源模块一秒 1.51单片机的中断系统 1.在cpu在处理事件A的时候,发生了另外一件事B要求cpu紧急处理(中断发生),cpu转去实现b(中断响应和服务),处理完B之后返回处理A(中断返回) 2.让cpu实现中断的叫做中断源,cpu处理完中断源,返回原断点处,实现这一功能的叫中断系统 2.中断系统的优点 1.分时操作 2.实时响应 3.可靠性高 3.相关实现过程(重点:敲黑板啦) 中断响应条件 1.中断源有着中断请求 2.中断源的中断允许位为1 3.CPU开中断(EA=1) 顺序可变化 4.思路 想使用
[单片机]
基于89C51单片机的环境噪声测量仪
   1 引 言      环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关、学校等需要对环境噪声进行测量和控制的场合。 2 声压级的测量机理   人耳的听阈一般是20μPa,痛阈一般是200 Pa,其间相差107倍,这样宽广的声压范围很不易测量,
[单片机]
8051单片机供水系统水位控制的硬件电路设计
供水系统水位控制原理 下图是水塔水位控制原理图。图中虚线表示允许水位变化的上下限。在正常情况下,应保持水位在虚线范围之内,为此,在水塔的不同高度安装固定不动的三根金属棒,以感知水位变化情况。其中A棒处于下限水位以下,C棒处于上限水位,B棒在下限水位处。A棒接+5V电源,B棒、C棒各通过一个电阻与模拟地相连。 水塔由电机带动水泵供水,单片机控制电机转动以达到对水位控制的目的。供水时,水位上升,当达到上限时,由于水的导电作用,B棒、C棒连通+5V电源,因此,b、c两端均为高电平“1”状态。这时,应停止电机和水泵的工作,不再给水塔供水。 当水位降到下限时,B棒、C棒都不能与A棒导通,因此,b、c两端均为“0”状态。这时,应启动电机,
[单片机]
80<font color='red'>51单片机</font>供水系统水位控制的硬件电路设计

推荐帖子

DIY奇妙的化学之应急灯
这里转发介绍的是创意荧光红茶包!!!“别看它表面是个红茶包,其实它是一盏应急灯!”匪夷所思。一款源于化学反应的照明灯。这款灯由一个装有荧光物质的茶叶包和一个装有化学中间体的茶杯组成。当你把茶叶包放到茶杯中之后,在催化剂的作用下混合物开始发生化学反应,荧光物质开始发光。喜剧(洗具)源于悲剧(杯具),就是这么来的。设计师:wonsikchae它根本就没有电源和开关?这款红茶包应急灯其实是根据化学原理进行工作的,当家里停电的时候,只要找到一个透明玻璃杯倒入一些水,然后将这个茶叶包泡进
qwqwqw2088 DIY/开源硬件专区
磁性元件文章(续)
接前面一贴磁性元件文章(续)
zbz0529 测试/测量
Xilinx FPGA设计进阶(提高篇)
XilinxFPGA设计进阶(提高篇)
至芯科技FPGA大牛 FPGA/CPLD
EEWORLD大学堂----Alf-Egil Bogen 介绍最早期的AVR样品
Alf-EgilBogen介绍最早期的AVR样品:http://training.eeworld.com.cn/course/39爱特梅尔AVR微控制器共同发明人兼首席营销官Alf-Egil?Bogen?介绍AVR微控制器最早期的样品。EEWORLD大学堂----Alf-EgilBogen介绍最早期的AVR样品
dongcuipin 单片机
【 ST NUCLEO-H743ZI测评】试着玩一把DAC2ADC
很抱歉忽略了本次活动的规则,请EE和ST见谅。本次活动测评开发板STNUCLEO-H743ZI由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!STM32H7NUCLEO_H743ZI在以前的所有使用STM32的项目中,我所使用的ADC与DAC均是外部的,主要有TI与ADI。这样成本增加了很多,也占用了更多的外设资源,有时候没必要去另外选择外部模拟器件,造成浪费不说还体现了设计能力的不足。废话不多说,这次主要是尝试着运行一下H7cube库
54chenjq stm32/stm8
HackSpcae杂志第75期
https://hackspace.raspberrypi.com/issues电子版要等到2月15日后才能下载。HackSpcae杂志第75期挺不错的,可以可以
dcexpert DIY/开源硬件专区
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved