基于单片机的超声波测距系统实验报告

合集下载

基于单片机超声波测距系统的设计和实现

基于单片机超声波测距系统的设计和实现

基于单片机超声波测距系统的设计和实现超声波测距系统是利用超声波传播速度较快的特性,通过发射超声波并接收其回波来测量距离的一种常见的测距方式。

在本文中,我们将介绍基于单片机的超声波测距系统的设计和实现。

一、系统设计原理超声波测距系统主要由超声波发射器、超声波接收器、单片机和显示器组成。

其工作原理如下:1.发送超声波信号:超声波发射器通过单片机控制,向外发射超声波信号。

超声波的发射频率通常在40kHz左右,适合在空气中传播。

2.接收回波信号:超声波接收器接收到回波信号后,将信号经过放大和滤波处理后送入单片机。

3.距离计算:单片机通过测量超声波发射和接收的时间差来计算距离。

以声速343m/s为例,超声波的往返时间与距离之间的关系为:距离=时间差×声速/2、通过单片机上的计时器和计数器来测量时间差。

4.数据显示:单片机将计算得到的距离数据通过显示器显示出来,实时展示被测物体与超声波传感器之间的距离。

二、系统设计步骤1.系统硬件设计:选择合适的超声波模块,其具有超声波发射器和接收器功能,并可通过接口与单片机连接。

设计好电源电路以及超声波传感器与单片机之间的连接方式。

2.系统软件设计:根据单片机的型号和编程语言,编写相应的程序。

包括超声波信号的发射和接收控制,计时和计数功能的编程,距离计算和数据显示的实现。

3.硬件连接和调试:将硬件连接好后,对系统进行调试。

包括超声波模块与单片机的连接是否正确,超声波信号的发射和接收是否正常,计时和计数功能是否准确等。

5.优化和改进:根据实际测试结果,对系统进行优化和改进。

如增加滤波和放大电路以提高信号质量,调整超声波模块的发射频率,改进显示方式等。

三、系统实现效果完成以上设计和实施后,我们可以得到一个基于单片机的超声波测距系统。

该系统使用简单,测距精度高,响应速度快,适用于各种距离测量的应用场景。

同时,该系统还可根据具体需求进行各种改进和扩展,如与其他传感器结合使用,增加报警功能等。

基于stm32单片机的超声波测距仪设计报告

基于stm32单片机的超声波测距仪设计报告

基于stm32单片机的超声波测距仪设计报告1. 引言超声波测距仪(Ultrasonic Distance Sensor)是一种常用的测距设备,通过发送超声波脉冲并接收其反射信号来测量目标与测距仪之间的距离。

本报告将详细介绍基于stm32单片机的超声波测距仪的设计过程。

2. 设计原理超声波测距仪的基本原理是利用超声波在空气中的传播速度和反射特性来计算目标物体与测距仪之间的距离。

其中,stm32单片机作为测距仪的控制核心,通过发射超声波脉冲并测量接收到的回波时间来计算距离。

2.1 超声波传播速度超声波在空气中的传播速度约为340m/s,可以通过测量超声波往返的时间来计算出距离。

2.2 超声波反射信号当超声波遇到障碍物时,会产生反射信号,测距仪接收到这些反射信号并测量其时间差,再通过计算即可得到距离。

3. 硬件设计本设计使用stm32单片机作为核心控制器,并搭配超声波发射器和接收器模块。

3.1 超声波发射器超声波发射器负责产生超声波脉冲,并将脉冲信号发送到待测物体。

3.2 超声波接收器超声波接收器负责接收从物体反射回来的超声波信号,并将其转换为电信号。

3.3 stm32单片机stm32单片机作为测距仪的核心控制器,负责发射超声波脉冲、接收反射信号并计算距离。

4. 软件设计本设计涉及的软件设计包括超声波信号发射、接收信号处理和距离计算等。

4.1 超声波信号发射使用stm32单片机的GPIO口控制超声波发射模块,产生一定频率和周期的脉冲信号。

4.2 接收信号处理通过stm32单片机的ADC模块,将超声波接收器接收到的模拟信号转换为数字信号,并对信号进行处理和滤波。

4.3 距离计算根据接收到的超声波反射信号的时间差,结合超声波的传播速度,使用合适的算法计算出距离。

5. 实验结果与分析经过实际测试,基于stm32单片机的超声波测距仪达到了预期的效果。

能够精确测量目标与测距仪之间的距离,并显示在相关的显示设备上。

基于单片机的超声波测距系统

基于单片机的超声波测距系统

基于单片机的超声波测距系统摘要:在工业生产中,许多地方需要用到非接触式距离测量,例如工业机械手的虚拟围栏、扫地机器人避障、AGV小车的壁垒回避等。

什么是超声波?就是一个频率超过二十千兆赫兹而且在弹性介质里面生成的机械震荡波。

它拥有精准的指向性、长远的发射长度、节能环保等优势,所以在零触摸距离测量上应用广泛。

由于它对环境光、散射颜色系数以及电磁场强度不敏感,因此超声波测距能够极大限度的适应比较复杂的环境空间,此外超声波测量的实时性高,精度相对不差甚至价格相对而言比较适中,故超声波测距方案性价比较高。

为此,本设计尝试以单片机STC89C51为核心,Protel99se绘制原理图,利用一对40 kHz超声波收发器设计一款体积较小、价格低廉、精度较高、具有温度补偿、实时LCD显示和报警的超声波测距电子系统。

关键词:超声波测距系统;单片机技术;电子技术当前有越来越多的人或者机构组织研究超声波测距系统。

因为超声波测距系统相较于其他方式,拥有相比之下较多的优点,例如操作简单,价格适度等。

所以基于超声波的测距系统无论在生活中或是实际工业生产中的各个万面都有良好的发展空间。

基于超声波的测距系统是一个拥有十分广阔前景的研究方问。

况且随着科技的进步,基于超声波的测距系统各项优点逐渐提高,超声波测距系统的研究也有了显著的进步。

有些场所对精度的需求较为严格,并且对测量工具的大小有着严格的管控,超声波测距发挥这举足轻重的作用。

鉴于超声波测距的研究和发展,在智能化方面会有一个更为广泛的未来,在日常活动与实地作业中发光发热。

随着非接触式测量技术的发展,测距的准确度以及自动化程度会更高,从而影响社会的发展[1]。

由于超声波测距的测距过程不需要接触被测物体接,测量结果基本不受外界干扰影响 ,同时卫生性相比于其他测距方式有所提高,也更加适用于部分环境恶劣的工业环境。

由于超声波的各项特点,它常被应用于距离的测量,如测距仪、液位测量等[2]。

单片机超声波测距-实训报告

单片机超声波测距-实训报告

基于STC11F04E单片机的超声波测距仪实训报告目录摘要 (3)一.超声波测距原理 (4)二.超声波测距仪原理图 (4)1. 单片机最小系统电路/按键电路/LCD显示电路 (5)2. 程序下载电路/电源电路/指示灯电路 (5)3. 超声波发送电路 (5)4. 超声波接收电路 (5)5. 其他电路 (5)三.超声波测距仪功能介绍 (6)四.超声波测距仪图片 (6)五.实训心得 (8)六.程序设计简介 (9)七.超声波测距仪部分程序 (10)摘要本超声波测距仪是基于STC11F04E单片机的,该测距仪可测得精确距离为3~100CM,误差小于1CM,使用NOKIA 5110 LCD显示,全过程中文显示,便于用户使用。

单片机产生超声波经功率放大发送出去,接收到的超声波经CX20106产生中断让单片机计算距离,再通过LCD显示距离,本测距仪还有可调的报警距离设定功能、即将进入盲区提示功能、即将超出量程提示功能、开机显示各种预设画面功能。

其中,进入报警距离调整状态时还有对应按键功能提示的功能。

一.超声波测距原理超声波测距原理是通过超声波发射器向某一方向发射超声波(一般为40KHz的超声波),在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S ,即:S = v•△t /2其中,超声波在空气中的传播速度给温度有关,速度V=332+0.607*T,T是环境温度,单位是摄氏度,因此,要精确测距要考虑温度的影响,采用温度补偿方式进行计算。

二.超声波测距仪原理图STC11F04E单片机最小系统电路/ 程序下载电路/按键电路/NOKIA 5110LCD显示电路电源电路/指示灯电路超声波发送电路超声波接收电路其他功能:温度检测电路/日期时间电路/外部存储电路1.单片机最小系统电路/按键电路/LCD显示电路STC11F04E单片机是51单片机的升级版,内置复位电路和振荡电路,本系统使用内置复位电路,按单片机说明书所说:在1号脚接1K电阻接地即可。

基于51单片机的超声波测距报告

基于51单片机的超声波测距报告

- 11 -
(六)附录 程序清单 ;********************************************
;* 超声波测距器 * ;* 采用 STC 89C54RC+ 12MHZ 晶振 * ;* 采用共阴 LED 显示器 LRM 2011.06.20 * ;******************************************** ;测距范围 7CM-1M,堆栈在 4FH 以上,20H 用于标志 ;显示缓冲单元在 40H-43H,使用内存 44H、45H、46H 用于计算距离 ; VOUT EQU P1.0 ; 红外脉冲输出端口 ; ;******************************************** ;* 中断入口程序 * ;******************************************** ; ORG 0000H LJMP START ORG 0003H ;中断 0 LJMP PINT0 ORG 000BH ;定时器 0 溢出 LJMP INTT0 ORG 0013H ;中断 1 RETI ORG 001BH ;定时器 1 溢出 LJMP INTT1 ORG 0023H ;串行口中断 RETI ORG 002BH RETI ; ;******************************************** ;* 主 程 序 * ;******************************************** ; START: MOV SP,#4FH MOV R0,#40H ;40H-43H 为显示数据存放单元 (40H 为最高位) MOV R7,#0BH CLEARDISP: MOV @R0,#00H INC R0 DJNZ R7,CLEARDISP

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计超声波测距仪是一种利用超声波测量距离的装置,具有测量速度快、精度高、非接触等特点,在机器人导航、自动控制、无损检测等领域得到了广泛的应用。

随着单片机技术的不断发展,基于单片机的超声波测距仪设计成为了可能,具有体积小、成本低、易于集成等优点。

本文将介绍一种基于单片机的超声波测距仪的设计与实现方法。

超声波测距仪的工作原理是利用超声波的传输特性来实现距离的测量。

超声波发射器发出超声波,超声波在空气中传播,遇到障碍物或被测物体后反射回来,被超声波接收器接收。

根据超声波的传播速度和传播时间,可以计算出超声波发射器与被测物体之间的距离。

一般来说,超声波的传播速度为340m/s,因此,距离计算公式为:距离 =传播速度×时间 / 2。

本设计选用STM32F103C8T6单片机作为主控制器,该单片机具有高性能、低功耗、丰富的外设接口等特点,满足系统的要求。

超声波测距仪的硬件部分包括超声波发射器、超声波接收器、单片机控制器和显示模块。

具体设计方案如下:(1)超声波发射器:采用HC-SR04模块,该模块集成了超声波发射器和接收器,输出脉冲宽度为5ms,驱动电压为5V。

(2)超声波接收器:同样采用HC-SR04模块,接收反射回来的超声波信号,并将其转换为电信号输出。

(3)单片机控制器:选用STM32F103C8T6单片机,接收超声波接收器输出的电信号,通过计算得到距离值,并将其输出到显示模块。

(4)显示模块:采用液晶显示屏,用于显示测量得到的距离值。

(1)初始化模块:对单片机、HC-SR04模块和液晶显示屏进行初始化。

(2)超声波发射模块:通过单片机控制HC-SR04模块发射超声波,并开始计时。

(3)超声波接收模块:接收反射回来的超声波信号,并输出到单片机。

(4)距离计算模块:根据超声波的传播速度和传播时间,计算出超声波发射器与被测物体之间的距离,并将其存储在单片机的存储器中。

(5)显示模块:将计算得到的距离值输出到液晶显示屏上。

基于单片机的超声波测距系统实验报告

基于单片机的超声波测距系统实验报告

基于单片机的超声波测距系统实验报告一、引言超声波测距系统是一种基于超声波工作原理的测距技术,主要通过发送超声波信号并检测回波信号来测量目标物体与传感器之间的距离。

本实验旨在通过使用单片机搭建一个基于超声波的测距系统,通过实际测量和数据分析来验证其测距的准确性和可靠性。

二、原理超声波测距系统主要包括超声波发射器、超声波接收器和单片机控制系统三部分。

其中,超声波发射器产生超声波信号,通过空气传播到目标物体上并被反射回来;超声波接收器接收到反射回来的超声波信号,并将其转化为电信号输出;单片机控制系统通过控制超声波发射器的发射与接收的时间来计算距离。

三、实验步骤1.搭建硬件连接:将超声波发射器和接收器分别连接到单片机的GPIO引脚,并通过电阻和电容进行滤波处理。

2.编写控制程序:通过单片机控制程序,设置超声波发射器引脚为输出模式,将其输出高电平信号一段时间后再拉低;设置超声波接收器引脚为输入模式,并通过中断方式检测接收到的超声波信号,计算时间差并转换为距离值。

3.进行实际测量:将超声波发射器和接收器对准目标物体,启动测量程序并记录距离值。

4.多次实验并计算平均值:为了提高测距的准确性,进行多次实验并计算多次测量结果的平均值。

四、实验结果和讨论通过多次实验测量,我们得到了如下结果:测量1距离为30cm,测量2距离为31cm,测量3距离为29cm。

将这些结果进行平均,得到最终距离结果为30cm。

通过与实际测量的距离进行对比,我们发现测量结果基本与实际距离相符,误差控制在可接受范围内。

这表明我们搭建的基于超声波的测距系统具有较好的测距准确性和可靠性。

然而,我们也发现在一些特殊情况下,例如目标物体表面有较强的吸收或反射能力时,测量结果可能会出现误差。

这是因为超声波在传播过程中会受到传播介质和目标物体的影响,从而引发信号衰减或多次反射等现象。

在实际应用中,我们需要根据具体情况进行系统的优化和调整,以提高测距的精确度。

超声波测距仪单片机课设实验报告

超声波测距仪单片机课设实验报告

微机本理与单片机系统课程安排之阳早格格创做博业:轨讲接通旗号与统制班级:接控1305姓名:贺云鹏教号:201310104指挥西席:李修国兰州接通大教自动化与电气工程教院2015 年12 月30 日超声波测距仪安排1 安排证明1.1 安排手段超声波测距的本理是利用超声波正在气氛中的传播速度为已知,丈量声波正在收射后逢到障碍物反射回去的时间,根据收射战接支的时间好估计出收射面到障碍物的本质距离.超声波测距主要应用于倒车指示、修筑工天、工业现场等的距离丈量.超声波正在气体、液体及固体中以分歧速度传播,定背性佳、能量集结、传输历程中衰减较小、反射本收较强.超声波能以一定速度定背传播、逢障碍物后产死反射,利用那一个性,通过测定超声波往返所用时间便可估计出本质距离,进而真止无交战丈量物体距离.超声波测距赶快、便当,且不受光芒等果素做用,广大应用于火文液位丈量、修筑动工工天的丈量、现场的位子监控、振荡仪车辆倒车障碍物的检测、移动呆板进探测定位等范围.1.2 安排要收本课题包罗数据测距模块、隐现模块.测距模块包罗一个HC-SR04超声波测距模块战一片AT89C51单片机,该安排采用HC-SR04超声波测距模块,通过HC-SR04收射战担当超声波,使用AT89C51单片机对于超声波举止计时并根据超声波正在气氛中速度为340米每秒的个性估计出距离.隐现模块包罗一个4位同阳极LED数码管战AT89C51单片机,由AT89C51单片机统制数码管动背隐现距离.1.3 安排央供采与单片机为核心部件,采用超声波模组,真止对于距离的丈量,丈量距离不妨通过隐现输出(LED,LCD).2 安排规划及本理超声波测距模块安排HC-SR04超声波测距模块可提供2cm-400cm的非交战式距离感测功能,测距粗度可达下到3mm.模块包罗超声波收射器、接支器与统制电路.当提供一个10uS以上正脉冲触收旗号,该模块里面将收出8个40kHz周期电仄并检测回波.一朝检测到有回波旗号则输出反响旗号.反响旗号的脉冲宽度与所测的距离成正比.由此通过收射旗号到支到的反响旗号时间隔断不妨估计得到距离由以上疑息,正在安排时采用二个定时器,定时器1用去定时800ms,当爆收中断时,开用HC-SR04超声波测距模块,即给其TRIG(收射)心支一个持绝20ms的正脉冲,定时器0用去对于超声波传播时间举止计时,即当ECHO(回波)心为下电通常开用计时,当ECHO心形成矮电通常关关计时.再根据超声波正在气氛中的传播速度为340米每秒,通过AT89C51估计出距离,当距离超出400cm时,隐现8888,表示超出处事距离.2.2 LED隐现模块安排将算得的距离通过一个4位LED数码管采与动背扫描举止隐现.2.3 其余功能的安排思量到本质的需要,本安排还应减少以下功能:1、减少一个指示灯.当ECHO(回波)心为下电通常,即超声波旗号正在气氛中传播时,指示灯面明.当数码管不克不迭仄常面明时,若指示灯仄常指示,则证明LED隐现模块爆收障碍;若指示灯不克不迭仄常面明,则证明超声波测距模块爆收障碍.2、减少一个锁存按钮.由于安排时咱们安排的为每800ms超声波测距模块开用一次,由于定时器会爆收缺面,制成测得距离不竭变更,减少一个锁存按钮,当决定隐现截止宁静时,按下按钮时,关关超声波测距模块,不妨使截止收会隐现.3、减少一个待机按钮.当按下锁存按钮后,再按下待机按钮,那时关关LED隐现,若再挨开待机按钮,那时LED 开用处事,隐现的数值为上一次被测距离.2.4 安排成本及定价商场仄衡代价:12元预计定价:10元3 硬件安排此系统的硬件安排主要包罗HC-SR04超声波测距模块、AT89C51单片机、4位LED隐现模块,并连进指示灯、待机开关战锁存开关.仿真时,将HC-SR04超声波测距模块用一个555延时电路去代替即可,其中安排改变滑动变阻器的阻值不妨模拟被测物体距离的变更.真验仿真电路图如图1所示.图1 安排硬件电路图4 硬件安排此系统的硬件安排主要包罗超声波测距模块安排、LED 隐现模块安排、战其余拓展模块.采与定时器1每800ms收射一个脉冲旗号开用超声波测距模块,采与定时器0估计超声波传播时间,并通过一个估计函数算得距离,而后支LED隐现屏举止径背扫描并隐现截止.4.1 步调过程图主步调过程图如图2所示.图2 步调过程图鉴于AT89C51单片机的超声波测距源步调睹附录一.5 系统仿真及调试截止鉴于AT89C51单片机的超声波测距仿真截止睹附录二.鉴于AT89C51单片机的超声波测距调试截止如图3所示.图3 系统步调调试截止6 归纳本安排通过对于超声波测距的钻研,与单片机分离,真止了超声波测距的目标,并减少了数据锁存、指示灯战待机的功能.仿真时由于硬件中不HC-SR04模块,果此用555延时电路去代替.通过那次课程安排,尔加深了对于单片机的明白,也为以去更佳的使用挨下了前提.末尾要感动李教授的指挥,正在李教授的耐性解问下,尔受益匪浅.参照文件[1] 李积英.数字电子技能.华夏电力出版社,2011[2] 深圳市捷什科技有限公司.HC-SR04超声波测距模块证明书籍.[3] 彭江.单片机本理及接心技能的开垦[J].硬件导刊,2011,12(8):66-70.附录一:真验源步调#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define LED_port P0 //用于LED段选#define LED_pos P1 //用于LED位选sbit qq=P2^6; //待机按钮sbit suocun=P2^1; //锁存截止sbit RX=P1^4; //回波sbit TX=P1^5; //支波sbit D1=P3^7; //接支指示灯uint time=0; //定时器0时间uint timer=0; //定时器1时间unsigned long S=0; //用于隐现末尾估计得到的距离unsigned long W[2]={0,0}; //用于比较二次测算距离大小bit flag =0; //定时器0中断溢出标记位uchar value[4];uchar codeLED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x8 0,0x90}; //数码管段选uchar code pos[4]={0x01,0x02,0x04,0x08}; //数码管位选/*************************************************** *****/void Delay(uchar t) //延时函数{uchar i,j,k;for(i=0;i<t;i++)for(j=0;j<20;j++)for(k=0;k<20;k++);}/*************************************************** *****/void value_shift(uchar value[]) //将距离值的每一位搁到数组中{value[0]=S/1000;value[1]=S/100%10;value[2]=S/10%10;value[3]=S%10;}/*************************************************** *****/void Display(uchar value[]) //数码管隐现{uchar i;for(i=0;i<4;i++){LED_pos=pos[i];LED_port=LED_seg[value[i]];Delay(1);}}/*************************************************** *****/void zd3() interrupt 3 //T1中断用去扫描数码管战计800MS开用模块{ //那是计时器1中断TH1=0xf8; //赋初值,2msTL1=0x30;timer++;if(timer>=400){timer=0;TX=0; //800MS 开用一次模块//Delay(30); //一次超声波旗号时少30ms,仿真时只需加背脉冲,故屏蔽此句TX=1;}}/*************************************************** *****/void zd0() interrupt 1 //T0中断用去计数器溢出{flag=1; //中断溢出标记}/*************************************************** *****/void Count(void) //估计步调{TH0=0; //定时器0的初初值为0TL0=0;S=(time*1.845)/10; //算出去是mm,time*12*170/(11.0592*1000)mm=time*(1845/10000)mm W[0]=S;if(((W[0]-W[1])^2)<=100) //举止矫正,若二次截止出进小于10mm,则采与前一次截止S=W[1];elseW[1]=S;if (S>=4000) //最大距离4m,即4000mmS=8888;if (flag==1) //推断是可溢出{S=8888;flag=0;TH0=0;TL0=0;}}/*************************************************** *****/void main( void ){TMOD=0x11; //设T0为办法1,T1为办法1TH0=0; //中断0初初化TL0=0; //中断1初初化TH1=0XF8;TL1=0X30;ET0=1; //允许T0中断ET1=1;TR1=1;qq=1;suocun=0;EA=1;while(1){while(!RX) ; //当RX为整时等待,即echo为矮电仄TX=1;TR0=1;D1=1; //开开计数while(RX); //当RX为1计数并等待TR0=0; //关关计数D1=0; //关指示灯while(!qq) //待机按钮按下时,关总中断战位选{EA=0;P1=0X00;}qq=1;Count(); //估计value_shift(value);Display(value); //隐现while(suocun) //当按下锁存按钮时,关总中断并隐现{EA=0;Display(value);}EA=1;}}附录二:1.距离小于4m时的仿真图图1 距离小于4m2.距离大于4m时的仿真图图2 距离大于4m。

基于单片机控制的超声波测距系统设计

基于单片机控制的超声波测距系统设计

基于单片机控制的超声波测距系统设计1. 引言超声波测距技术是一种常见的非接触式测距方法,广泛应用于工业自动化、机器人导航、智能交通等领域。

本文旨在设计一种基于单片机控制的超声波测距系统,通过对系统的硬件和软件设计进行详细分析和研究,实现高精度的测距功能。

2. 系统硬件设计2.1 超声波传感器选择超声波传感器是实现超声波测距的核心组件。

根据应用需求,选择合适的超声波传感器非常重要。

本文选择了XX型号的超声波传感器,该传感器具有高精度、稳定性好等特点。

2.2 单片机选择在本系统中,单片机作为控制核心起到了重要作用。

根据需求分析和性能要求,我们选择了XX型号单片机作为控制核心。

该单片机具有较高的计算能力和丰富的外设接口。

2.3 电路设计为了实现稳定可靠的工作状态,我们对整个电路进行了详细设计。

包括电源电路、信号放大电路、滤波电路等部分。

通过合理的电路设计,可以提高系统的抗干扰能力和测量精度。

3. 系统软件设计3.1 系统流程设计根据测距系统的功能需求,我们设计了详细的系统流程。

主要包括初始化、触发超声波发射、接收超声波回波、测量距离和显示结果等步骤。

通过合理的流程设计,可以保证系统的稳定性和可靠性。

3.2 程序框架设计在单片机控制下,我们编写了相应的程序代码。

根据系统流程,我们将代码分为多个模块,并采用模块化编程方式进行开发。

通过良好的程序框架设计,可以提高代码可读性和维护性。

3.3 软件功能实现在软件开发过程中,我们实现了多项功能。

包括超声波信号发射控制、回波信号接收与处理、距离计算算法等部分。

通过详细分析每个功能模块,并进行适当优化,可以提高系统整体性能。

4. 系统测试与优化4.1 功能测试在完成硬件和软件设计后,我们对整个测距系统进行了全面测试。

主要包括触发超声波信号并接收回波信号,计算距离并显示结果等功能。

通过测试,可以验证系统的功能是否符合设计要求。

4.2 精度测试为了评估系统的测量精度,我们设计了一系列测试用例,并对测量结果进行统计和分析。

基于单片机的超声波测距

基于单片机的超声波测距

信息学院电子设计竞赛辅导作业设计报告电子信息科学与技术专业:092班班级:超声波测距设计题目:学生姓名:指导教师:叶林鹏完成日期:2012年月日目录一、设计任务和性能指标 (2)1.1设计任务 (2)1.2性能指标 (2)二、设计方案 (3)三、系统硬件设计 (4)3.1单片机最小系统 (4)3.2超声波发射电路 (5)3.3超声波检测接收电路 (5)3.4.报警电路............................................................................. 错误!未定义书签。

3.5显示电路 (7)四.系统软件设计 (8)4.1主程序设计 (8)五.调试及性能分析 (9)5.1调试步骤 (9)5.2性能分析 (9)六.心得体会 (10)参考文献 (12)附录1 系统硬件电路图 ............................................................... 错误!未定义书签。

附录2 程序清单 (13)一、设计任务和性能指标1.1设计任务利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个含有温度补偿的超声波测距仪器,用LED把环境温度和测距仪距被测物的距离显示出来。

要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。

1.2性能指标1.距离显示:用三位LED数码管进行显示(单位是CM)。

2.环境温度:用三位数码管进行显示温度(绝对温度)。

3.测距范围:5CM到 300CM之间。

4.键位:复位键、便携电源开关、USB供电开关,温度显示距离显示。

5. 烧显器的连接,电路的仿真玉检测。

二、设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、电源模块、显示模块、键扫描模块、超声波发射模块,超声波接收模块,温度补偿模块共七个模块组成。

基于52单片机的超声波测距系统的报告书

基于52单片机的超声波测距系统的报告书

一、项目综述1、超声波简介超声波是频率高于20KHz的声波,具有方向性好,穿透能力强等特点,被广泛应用于各行各业。

在日常生产生活中,很多场合如汽车倒车、机器人避障、工业测井、水库液位测量等需要自动进行非接触测距。

由于超声波对光线、色彩和电磁场不敏感,因此超声波测距对环境有较好的适应能力。

2、项目原理及应用(1)超声波测距原理:本项目采用往返时间检测法测距,其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。

测试传输时间可以得出距离。

假定s为被测物体到测距仪之间的距离,测得的时间为t/s,超声波传播速度为v/m·s-1表示,则有关系式<1>s=vt/2 <1>在精度要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式<2>对超声波传播速度加以修正,以减小误差。

v=331.4+0.607T <2>式中,T为实际温度单位为℃,v为超声波在介质中的传播速度单位为m/s(2)项目主要在超声波测距系统的基础上应用于高杆作物的测量,以便适时获得植物生长状况的数据。

二、项目过程(一)确定项目方案1.硬件部分1.1超声波发射部分采用由74HC04组成的推挽式电路进行功率放大以便使发射距离足够远。

1.2超声波接收部分集成芯片CX20106在接收部分电路中起了很大的作用。

CX20106是一款应用广泛的红外线检波接收的专用芯片,其具有功能强、性能优越、外围接口简单、成本低等优点,由于红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz比较接近,而且CX20106内部设置的滤波器中心频率f0五可由其5脚外接电阻调节,阻值越大中心频率越低,范围为30~60 kHz。

故本次设计用它来做接收电路。

CX20106内部由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整形电路构成。

基于单片机的超声波测距仪-课程设计(毕业设计)完整版

基于单片机的超声波测距仪-课程设计(毕业设计)完整版

电子与信息工程学院综合实验课程报告课题名称超声波测距仪专业电子信息工程班级学生姓名王利伟、魏丽丽、齐斯超学号王利伟魏丽丽齐斯超指导教师丁刚、严辉摘要随着科学技术的快速发展,超声波将在测距仪中的应用越来越广。

但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。

展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。

无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。

随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。

在新的世纪里,面貌一新的测距仪将发挥更大的作用。

本设计采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。

整个电路采用模块化设计,由主程序、中断程序、发射子程序、接收子程序、显示子程序等模块组成。

各探头的信号经单片机综合分析处理,实现超声波测距仪的各种功能。

在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。

1.总体方案设计介绍本文所研究的超声波测距仪利用超声波指向性强、能量消耗缓慢、传播距离较远等优点,即用超声波发射器向某一方向发送超声波,同时在发射的时候开始计时,在超声波遇到障碍物的时候反射回来,超声波接收器在接收到反射回来的超声波时,停止计时。

设超声波在空气中的传播速度为V,在空气中的传播时间为T,汽车与障碍物的距离为S,S=VT/2,这样可以测出汽车与障碍物之间的距离,然后在LED显示屏上显示出来。

基于单片机超声波测距项目实验报告

基于单片机超声波测距项目实验报告

电子信息工程系实验报告课程名称:1、信号检测与控制2、单片机技术与应用3、印刷电路板设计与制板工艺班级:应电0933班实训者姓名:左兴华柴理会学号:0919013319 0919013317 指导老师:方跃春李桂平张艳阳时间:2010年12月目录一、-----------------------实验背景二、-----------------------实验原理三、-----------------------实验设备四、-----------------------实验目的五、-----------------------实验内容六、-----------------------实验步骤七、-----------------------实验作品展示八、-----------------------实验体会九、-----------------------附超生波测距汇编程序一、实验背景在科学技术高速发展的今天,超生波的在测距中的应用也越来越广。

但目前我们的技术还是有限,为了推动我们电子信息工程系同学对其的兴趣发展,所以我们电子信息工程系教研室的老师们策划了一个基于单片机超声波测距仪项目的课程设计。

同时也是为了老师考察电子系同学们在前一学年在单片机应用技术课程,传感器技术应用课程和印刷电路板的设计与工艺课程学习情况。

也是对电子信息工程系的学生们动手能力的一种锻炼,及高职院校学生综合素质的一种培养。

设计超声波测距仪用专用的集成电路的成本很高, 并且没有显示,操作比较不方便。

本文结合超声波精确测距的需要,尝试用STC89C52 单片机为核心的低成本、简单实现收发功能、小型化数字显示超声波测距的硬件电路和软件设计方法。

二、实验原理超声波是一种在弹性介质中的机械振荡,传播速度仅为光波的百万分之一,超声波对色彩,光照度,外界光线和电磁场不敏感,因此超声波测距对于被测物处于黑暗,有灰尘或烟雾,强电磁干挠,有毒等恶劣的环境下有一定的适用能力,在液体测位,机器人避障和定位,倒车雷达、物体识别等方面有广泛应用。

基于单片机的超声波测距系统设计

基于单片机的超声波测距系统设计

基于单片机的超声波测距系统设计超声波测距系统在物联网和机器人等领域有着广泛的应用。

超声波作为一种非接触的测量方式,可以有效地避免物体表面的污染,适用于各种环境下的距离测量。

本文将介绍基于单片机的超声波测距系统的设计方法。

超声波测距的原理超声波测距是基于声波传播时间的测量。

超声波发射器发出超声波,经物体反射后被接收器接收。

根据声波的传播速度和接收时间,可以计算出超声波的传播距离。

常用的超声波频率为40kHz左右,其传播速度约为340m/s。

单片机与超声波测距在超声波测距系统中,单片机作为主控制器,负责控制整个系统的运行。

它接收来自超声波发射器的信号,触发超声波的发送,并计时等待超声波的返回。

当超声波被接收器接收时,单片机通过计算时间差来计算距离。

距离计算距离计算公式为:距离 =声速×时间差 / 2。

在系统中,声速是已知量,因此关键是准确测量时间差。

单片机通过计时器来精确测量从超声波发射到接收的时间,从而计算出距离。

误差分析超声波测距系统可能出现的误差主要有以下几种:1、计时器计时误差:这是时间测量误差的主要来源。

为提高计时精度,可以使用高精度的计时器或者采取软件滤波算法来降低误差。

2、声速误差:由于环境温度、湿度等因素的影响,声速可能会发生变化,从而影响测量结果。

可以通过引入温度传感器来对声速进行补偿,以减小误差。

3、反射面误差:由于被测物体的表面形状和质地等原因,超声波可能无法完全反射回来,导致测量结果偏小。

为减少误差,可以在发射端和接收端加装角度调节装置,使超声波尽量垂直于被测物体表面。

应用实例以下是一个基于单片机的超声波测距系统的设计实例:1、硬件选择:选用STM32F103C8T6单片机作为主控制器,并选用HC-SR04超声波传感器作为超声波发射和接收器。

该传感器具有外接和控制电路简单、性能稳定、可靠性高等优点。

2、硬件连接:将超声波传感器的Trig和Echo引脚分别连接到单片机的GPIO口,以控制超声波的发射和接收。

基于单片机的超声波测距系统实验报告

基于单片机的超声波测距系统实验报告

基于单片机得超声波测距系统实验报告一、实验目得1、了解超声波测距原理;2.根据超声波测距原理,设计超声波测距器得硬件结构电路;3.对设计得电路进行分析能够产生超声波,实现超声波得发送与接收,从而实现利用超声波方法测量物体间得距离;4.以数字得形式显示所测量得距离;5、用蜂鸣器与发光二极管实现报警功能、二、实验内容1、认真研究有关理论知识并大量查阅相关资料,确定系统得总体设计方案,设计出系统框图;2.决定各项参数所需要得硬件设施,完成电路得理论分析与电路模型构造。

3。

对各单元模块进行调试与验证;4、对单元模块进行整合,整体调试;5.完成原理图设计与硬件制作;6.编写程序与整体调试电路;7。

写出实验报告并交于老师验收。

三、实验原理超声波测距就是通过不断检测超声波发射后遇到障碍物所反射得回波,从而测出发射与接收回波得时间差t,然后求出距S=Ct/2,式中得C为超声波波速。

由于超声波也就是一种声波,其声速C与温度有关。

在使用时,如果温度变化不大,则可认为声速就是基本不变得。

如果测距精度要求很高,则应通过温度补偿得方法加以校正、声速确定后,只要测得超声波往返得时间,即可求得距离。

这就就是超声波测距仪得机理,单片机(AT89C51)发出短暂得40kHz信号,经放大后通过超声波换能器输出;反射后得超声波经超声波换能器作为系统得输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,得出时间t,再由系统软件对其进行计算、判别后,相应得计算结果被送至LED显示电路进行显示、(一)超声波模块原理:超声波模块采用现成得HC-SR04超声波模块,该模块可提供2cm—400cm得非接触式距离感测功能,测距精度可达高到3mm、模块包括超声波发射器、接收器与控制电路。

基本工作原理:采用IO 口 TRIG触发测距,给至少10us 得高电平信号;模块自动发送 8 个 40khz 得方波,自动检测就是否有信号返回;有信号返回,通过 IO口ECHO 输出一个高电平,高电平持续得时间就就是超声波从发射到返回得时间。

基于单片机的超声测距系统的开题报告

基于单片机的超声测距系统的开题报告

基于单片机的超声测距系统的开题报告一、研究背景超声测距技术以其精度高、测量范围广等特点,在物体测距、障碍检测、机器人导航等领域得到了广泛应用。

其中,基于单片机的超声测距系统因其结构简单、成本低廉等优点备受关注。

二、研究意义本课题旨在设计和实现一种基于单片机的超声测距系统,可以应用于各种实际场景。

该系统能够快速、准确地测量物体与传感器之间的距离,并能够在实现单片机与外部设备之间的通信的情况下,实现对数据的处理和显示,对于工业自动化、物流仓储等领域有着广泛的应用价值。

三、研究内容1. 系统硬件设计(1)超声波模块的设计与选型(2)信号调理模块的设计(3)单片机模块的设计2. 系统软件设计(1)超声波信号的发射与接收程序(2)数据处理程序(3)通讯程序四、研究方案本课题的研究方案如下:1. 系统硬件设计(1)超声波传感器:选用市面上成熟的超声波传感器,能够稳定工作,且测量精度高;(2)信号调理模块:采用光耦隔离,输入输出恰当的信号波形,通过同步测量,实现测量精度;(3)单片机模块:选用处理速度快,存储空间大,通用性强的单片机,并具有相应的开发软件。

2. 系统软件设计(1)超声波信号的发射与接收程序:通过控制超声波发射器的频率和发射时长进行信号发射,然后通过一定算法求出发射器和接收器之间的时间差,从而计算出距离;(2)数据处理程序:对测量结果进行处理和校准,提高系统的测量精度和稳定性;(3)通讯程序:实现与上位机或其他设备的通信,可以将测量结果传输给其他设备,或者接收其他设备的指令,实现系统的远程控制或监测。

五、预期成果本课题预期实现一个基于单片机的超声测距系统,能够对物体进行快速、准确的测量,并能够将测量结果传输给其他设备或者通过LCD显示出来,实现了单片机与外部设备之间的通信。

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计

基于单片机的超声波测距仪设计1系统要求我们组选择制作了一套超声波测距系统,功能有:倒车雷达测量的显示距离在手机APP上显示,设定阈值,若小于设定的距离数值,蜂鸣器发出报警声。

2研究目的为了深层次的巩固学习的单片机的知识,更加熟悉的使用Proteus和Keil C51这两个软件。

能够综合所学的单片机的知识进行系统设计,将所学习的知识运用到生活中。

我们组选择制作了这样一套超声波测距系统。

3 设计方案及原理框图3.1 系统概述在汽车倒车中存在的困难之一也会影响到驾驶员的驾驶情况,在驾驶员在驾驶座位上无法完全了解到四周特别是后方环境时,只能依赖后视镜来观察后方障碍物,而这种环境因素也会限制驾驶员的视野狭窄和清晰度,从而驾驶员导致倒车会遇到危险。

其二是驾驶员在进行倒车过程中,要观察左右环境,同时也要兼顾到汽车后侧与障碍物的距离,这样会使驾驶员过于分心和费力费神。

其三是驾驶员会依赖自己长久以来的驾驶技术,以此来停靠车位,这样会引起驾驶员无法准确的倒入准确位置。

解决这种问题是在汽车生产行业中重中之重要解决的一个技术性难题,我们可在汽车内部安置一个汽车倒车预报警系统,显示器可装置在汽车内部,驾驶员能看到的有利位置,而感应器则可以装置在汽车后侧内部,从而接受到后方的障碍物情况,传输到显示器当中。

这个设计可避免驾驶员在倒车时候频繁看后视镜去判断汽车与障碍物的距离,从而避免发生事故发生。

汽车倒车预报警系统在很大程度上解决了汽车倒车的难题,同时也为驾驶员的驾驶提供了安全的保障。

该设计由超声波传感器、STC89C52系列单片机、HC-SR04超声波传感器模块、蜂鸣器组成。

总体设计方案如图1所示。

障碍物超声波发射传感器发射电路超声波接收传感器接收电路STC89C52单片机电源电路APP显示报警电路图1 总体设计方案3.2 系统总体电路图单片机系统的电路图如图2所示。

图2 系统设计图4 硬件实现4.1 STC89C52单片机STC89C52是基于51系列的单片机发展过来的。

基于单片机的超声波测距系统的设计

基于单片机的超声波测距系统的设计

基于单片机的超声波测距系统的设计1. 摘要基于单片机的超声波测距系统利用了超声波的频率在20KHZ以上,具有方向性强、耗能慢、传播距离远等优点。

在传感器技术与自动控制技术相结合的测距程序中,超声波测距是最常见的应用之一,被广泛应用于防盗、倒车雷达、水位测量、建筑工地和一些工业用地。

本系统的设计主要包含了硬件电路和软件程序两部分。

通过分析超声波测距的基本原理,选用合适的硬件电路部分,并写入相应的控制代码,以实现一个超声波测距系统的设计思路与方案。

在设计中,核心控制单元选用了STC89C52单片机,利用超声波传感器检测出超声波信号从传感器发出、碰到待测物并反射、最后接收器接收到返回的超声波信号这一过程的时间间隔,通过超声波在一定温度下的传播速度,利用公式得出传感器与待测物之间的距离,并将结果通过1602液晶显示出来。

系统还建立了按键模块和声光报警模块,以提升实用性,并建立了温度补偿模块,以提高测距的精确度。

系统采用模块化的结构,主要由温度检测模块、超声波测距模块、独立按键模块和供电电路四部分构成输入部分,由LCD1602显示模块、蜂鸣器、LED构成输出部分,由STC89C52单片机作为中控部分处理输入部分数据并控制输出部分。

通过Proteus仿真软件验证了硬件电路和软件代码设计。

2. 绪论随着科技的不断发展,人们对距离测量的需求日益增长。

在工业自动化、智能交通、机器人导航等领域,精确的距离测量是实现系统智能化和自动化的关键。

超声波测距技术因其非接触、高精度、低成本等优点,成为距离测量的首选方法之一。

基于单片机的超声波测距系统是利用单片机控制超声波的发射和接收,通过计算超声波在空气中传播的时间来测量距离。

相比传统的机械式测距方法,基于单片机的超声波测距系统具有更高的测量精度和更广泛的应用范围。

本文旨在设计一个基于单片机的超声波测距系统,通过研究超声波的特性、传感器的选择、硬件电路的设计和软件程序的编写,实现对目标距离的高精度测量。

超声波测距仪单片机课设实验报告

超声波测距仪单片机课设实验报告

超声波测距仪单片机课设实验报告微机原理与单片机系统课程设计专业:轨道交通信号与控制班级:交控1305姓名:贺云鹏学号: 201310104指导教师:李建国预计定价:10元利润:1.46元3 硬件设计此系统的硬件设计主要包括HC-SR04超声波测距模块、AT89C51单片机、4位LED显示模块,并连入指示灯、待机开关和锁存开关。

仿真时,将HC-SR04超声波测距模块用一个555延时电路来代替即可,其中调节改变滑动变阻器的阻值可以模拟被测物体距离的变化。

实验仿真电路图如图1所示。

图1 设计硬件电路图4 软件设计此系统的软件设计主要包括超声波测距模块设计、LED显示模块设计、和其他拓展模块。

采用定时器1每800ms发射一个脉冲信号启动超声波测距模块,采用定时器0计算超声波传播时间,并通过一个计算函数算得距离,然后送LED 显示屏进行动态扫描并显示结果。

4.1 程序流程图主程序流程图如图2所示。

图2 程序流程图4.2程序基于AT89C51单片机的超声波测距源程序见附录一。

5 系统仿真及调试结果基于AT89C51单片机的超声波测距仿真结果见附录二。

基于AT89C51单片机的超声波测距调试结果如图3所示。

图3 系统程序调试结果6 总结本设计通过对超声波测距的研究,与单片机结合,实现了超声波测距的目标,并增加了数据锁存、指示灯和待机的功能。

仿真时由于软件中没有HC-SR04模块,因此用555延时电路来代替。

通过这次课程设计,我加深了对单片机的理解,也为以后更好的运用打下了基础。

最后要感谢李老师的指导,在李老师的耐心解答下,我受益匪浅。

参考文献[1] 李积英.数字电子技术.中国电力出版社,2011[2] 深圳市捷什科技有限公司.HC-SR04超声波测距模块说明书.[3] 彭江.单片机原理及接口技术的开发[J].软件导刊,2011,12(8):66-70.[4] 王思明.张金敏.苟军年.张鑫.杨乔礼.单片机原理及应用系统设计.科学出版社.2012附录一:实验源程序#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define LED_port P0 //用于LED段选#define LED_pos P1 //用于LED位选sbit qq=P2^6; //待机按钮sbit suocun=P2^1; //锁存结果sbit RX=P1^4; //回波sbit TX=P1^5; //送波sbit D1=P3^7; //接收指示灯uint time=0; //定时器0时间uint timer=0; //定时器1时间unsigned long S=0; //用于显示最后计算得到的距离unsigned long W[2]={0,0}; //用于比较两次测算距离大小bit flag =0; //定时器0中断溢出标志位uchar value[4];uchar code LED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管段选uchar code pos[4]={0x01,0x02,0x04,0x08}; //数码管位选/********************************************************/void Delay(uchar t) //延时函数{uchar i,j,k;for(i=0;i<t;i++)for(j=0;j<20;j++)for(k=0;k<20;k++);}/********************************************************/void value_shift(uchar value[]) //将距离值的每一位放到数组中{value[0]=S/1000;value[1]=S/100%10;value[2]=S/10%10;value[3]=S%10;}/********************************************************/void Display(uchar value[]) //数码管显示{uchar i;for(i=0;i<4;i++){LED_pos=pos[i];LED_port=LED_seg[value[i]];Delay(1);}}/********************************************************/void zd3() interrupt 3 //T1中断用来扫描数码管和计800MS启动模块{ //这是计时器1中断TH1=0xf8; //赋初值,2msTL1=0x30;timer++;if(timer>=400){timer=0;TX=0; //800MS 启动一次模块//Delay(30); //一次超声波信号时长30ms,仿真时只需加负脉冲,故屏蔽此句TX=1;}}/********************************************************/void zd0() interrupt 1 //T0中断用来计数器溢出{flag=1; //中断溢出标志}/********************************************************/void Count(void) //计算程序{time=TH0*256+TL0; //这是最后算到的时间,往返时间,但应该再乘以12/11.0593M是一个机器周期,时间应该是time*12/11.059 TH0=0; //定时器0的初始值为0TL0=0;S=(time*1.845)/10; //算出来是mm,time*12*170/(11.0592*1000)mm=time*(1845/10000)mmW[0]=S;if(((W[0]-W[1])^2)<=100) //进行校正,若两次结果相差小于10mm,则采用前一次结果S=W[1];elseW[1]=S;if (S>=4000) //最大距离4m,即4000mmS=8888;if (flag==1) //判断是否溢出{S=8888;flag=0;TH0=0;TL0=0;}}/********************************************************/void main( void ){TMOD=0x11; //设T0为方式1,T1为方式1TH0=0; //中断0初始化TL0=0; //中断1初始化TH1=0XF8;TL1=0X30;ET0=1; //允许T0中断ET1=1;TR1=1;qq=1;suocun=0;EA=1;while(1){while(!RX) ; //当RX为零时等待,即echo为低电平TX=1;TR0=1;D1=1; //开启计数while(RX); //当RX为1计数并等待TR0=0; //关闭计数D1=0; //关指示灯while(!qq) //待机按钮按下时,关总中断和位选{EA=0;P1=0X00;}qq=1;Count(); //计算value_shift(value);Display(value); //显示while(suocun) //当按下锁存按钮时,关总中断并显示{EA=0;Display(value);}EA=1;}}附录二:1.距离小于4m时的仿真图图1 距离小于4m 2.距离大于4m时的仿真图图2 距离大于4m。

「基于单片机的超声波测距系统的研究与设计」

「基于单片机的超声波测距系统的研究与设计」

第1章绪论1.1课题背景目的及重要意义随着科学技术的快速发展,超声波将在传感器中的应用越来越广。

在人类文明的历次产业革命中,传感技术一直扮演着先行官的重要角色,它是贯穿各个技术和应用领域的关键技术,在人们可以想象的所有领域中,它几乎无所不在[M]。

传感器是世界各国发展最快的产业之一,在各国有关研究、生产、应用部门的共同努力下,传感器技术得到了飞速的发展和进步。

但就目前技术水平来说,人们可以具体利用的传感技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。

超声波测距与其它非接触式的检测方式方法相比,如电磁的或光学的方法它不受光线,被测对象颜色,电磁干扰等影响。

超声波对于被测物体处于黑暗,有灰尘,烟雾,电磁干扰,有毒等恶劣的环境有一定的适应能力。

因此在液位测量,机械手控制,车辆自动导航,物体识别等方面有广泛应用。

特别是应用于空气测距,由于空气中波速较慢,其回波信号中包含的沿传播方向上的结构信息很容易检测出来,具有很高的分辩力,因而其准确度也较其它方法高,而且超声波传感器具有结构简单,体积小,信号处理可靠等特点。

超声波是一种指向性强,能量消耗慢的波。

它在介质中传播的距离较远。

因而超声波经常用于距离的测量,可解决超长度的测量。

超声波作为一种特殊的声波,同样具有声波传输的基本物理特性,反射,折射,干涉,衍射,散射。

与物理紧密联系,应用灵活。

并且更适合与高温,高粉尘,高湿度和高强电磁干扰等恶劣环境下工作。

超声波可用于非接触测量,具有不受光、电磁波以及粉尘等外界因素的干扰的优点,是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,对被测目标无损害。

而且超声波传播速度在相当大范围内与频率无关[J]。

超声波的这些独特优点越来越受到人们的重视。

在新的世纪里,面貌一新的传感器将发挥更大的作用课程设计目的是单片机原理与接口技术课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的超声波测距系统实验报告一、实验目的1.了解超声波测距原理;2.根据超声波测距原理,设计超声波测距器的硬件结构电路;3.对设计的电路进行分析能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离;4.以数字的形式显示所测量的距离;5.用蜂鸣器和发光二极管实现报警功能。

二、实验容1.认真研究有关理论知识并大量查阅相关资料,确定系统的总体设计方案,设计出系统框图;2.决定各项参数所需要的硬件设施,完成电路的理论分析和电路模型构造。

3.对各单元模块进行调试与验证;4.对单元模块进行整合,整体调试;5.完成原理图设计和硬件制作;6.编写程序和整体调试电路;7.写出实验报告并交于老师验收。

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

由于超声波也是一种声波,其声速C与温度有关。

在使用时,如果温度变化不大,则可认为声速是基本不变的。

如果测距精度要求很高,则应通过温度补偿的方法加以校正。

声速确定后,只要测得超声波往返的时间,即可求得距离。

这就是超声波测距仪的机理,单片机(AT89C51)发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,得出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED显示电路进行显示。

(一)超声波模块原理:超声波模块采用现成的HC-SR04超声波模块,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm。

模块包括超声波发射器、接收器与控制电路。

基本工作原理:采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号;模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340M/S))/2。

实物如下图1。

其中VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四支线。

程序中测试功能主要由两个函数完成。

实现中采用定时器0进行定时测量,8分频,TCNTT0预设值0XCE,当timer0溢出中断发生2500次时为125ms,计算公式为(单位:ms):T = (定时器0溢出次数 * (0XFF - 0XCE))/ 1000其中定时器0初值计算依据分频不同而有差异。

(二)超声波换能器工作原理:图4 超声波模块实物图完成产生超声波和接收超声波这种功能的装置就是超声波传感器,习惯上称为超声换能器,或者超声波探头。

超声波探头主要由压电晶片组成,既可以发射超声波,也可以接收超声波。

小功率超声探头多用作探测方面。

它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。

超声探头的核心是其塑料外套或者金属外套中的一块压电晶片。

构成晶片的材料可以有许多种。

由于晶片的大小,如直径和厚度也各不相同,因此每个探头的性能都是不同的,我们使用前必须预先了解清楚该探头的性能参数。

超声波传感器的主要性能指标包括:(1)工作频率。

工作频率就是压电晶片的共振频率。

当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。

(2)工作温度。

由于压电材料的居里点一般比较高,特别时诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不失效。

医疗用的超声探头的温度比较高,需要单独的制冷设备。

(3)灵敏度。

主要取决于制造晶片本身。

机电耦合系数大,灵敏度高。

人类能听到的声音频率围为:20Hz~20kHz,即为可听声波,超出此频率围的声音,即20Hz以下频率的声音称为低频声波,20kHz以上频率的声音称为超声波。

超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强。

为此,利用超声波的这种性能就可制成超声波传感器。

另外,超声波在空气中的传播速度较慢,为340m/s,这就使得超声波传感器使用变得非常简便。

我们选用压电式超声波传感器。

它的探头常用材料是压电晶体和压电瓷,是利用压电材料的压电效应来进行工作的。

逆压电效应将高频电振动转换成高频机械振动,从而产生超声波,可作为发射探头;而利用正压电效应,将超声振动波转换成电信号,可作为接收探头。

为了研究和利用超声波,人们已经设计和制成了许多种超声波发生器。

总体上讲,超声波发生器大体可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。

电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。

它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。

目前较为常用的是压电式超声波发生器。

图2 超声波传感器结构压电式超声波发生器实际上是利用压电晶体的谐振来工作的。

超声波发生器部结构如图所示,它有两个压电晶片和一个共振板。

当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。

反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。

如图2所示。

(三)超声波传感器原理:市面上常见的超声波传感器多为开放型,其部结构如图3所示,一个复合式振动器被灵活地固定在底座上。

该复合式振动器是由谐振器以及一个金属片和一个压电瓷片组成的双压电晶片元件振动器。

谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。

当电压作用于压电瓷时,就会随电压和频率的变化产生机械变形。

另一方面,当振动压电瓷时,则会产生一个电荷。

利用这一原理,当给由两片压电瓷或一片压电瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。

相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。

基于以上作用,便可以将压电瓷用作超声波传感器。

图3 超声波部结构超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。

它有折射和反射现象,且在传播过程中有衰减。

(四)超声波测距原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2由于超声波也是一种声波,其声速V与温度有关。

在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。

如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。

声速确定后,只要测得超声波往返的时间,即可求得距离。

这就是超声波测距仪的基本原理。

四、方案设计硬件部分(一)总体方案设计本设计包括硬件和软件设计两个部分。

模块划分为数据采集、按键控制、四位数码管显示、报警等子模块。

电路结构可划分为:超声波传感器、蜂鸣器、单片机控制电路。

就此设计的核心模块来说,单片机就是设计的中心单元,所以此系统也是单片机应用系统的一种应用。

单片机应用系统也是有硬件和软件组成。

硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是各种工作程序的总称。

单片机应用系统的研制过程包括总体设计、硬件设计、软件设计等几个阶段。

系统采用STC89C51单片机作为核心控制单元,当测得的距离小于设定距离时,主控芯片将测得的数值与设定值进行比较处理。

然后控制蜂鸣器报警。

系统总体的设计方框图如图4所示。

模块图4 系统方框图(二)主模块设计主控制最小系统电路如图5所示。

图5 最小系统硬件电路总设计见图6,从以上的分析可知在本设计中要用到如下器件: STC89C51、超声波传感器、按键、四位数码管、蜂鸣器等一些单片机外围应用电路。

其中D1为电源工作指示灯。

电路中用到3个按键,一个是设定键, 一个加键,一个减键。

图6 总设计电路图(三)时钟电路的设计XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片振荡器。

石晶振荡和瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us。

如图7所示为时钟电路。

图7 时钟电路图(四)复位电路的设计复位方法一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后, 在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。

例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us。

本设计采用的是自动复位电路。

如图8示为复位电路。

图8 复位电路图(五)声音报警电路的设计如下图所示,用一个Speaker和三极管、电阻接到单片机的P13引脚上,构成声音报警电路,如图9示为声音报警电路。

图9 声音报警电路图(六)显示模块显示模块采用数码管显示接口电路如图10图10 数码管电路(七)电源设计电源部分的设计采用3节5号干电池4.5V供电。

软件部分(一)主程序工作流程图按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图11所示图11 主程序工作流程图(二)超声波探测程序流程图:五、实验代码#include <reg52.h>#include <intrins.h> 图12 超声波探测程序流程图#include "eepom52.h"#define uchar unsigned char#define uint unsigned int//数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //断码//数码管位选定义uchar code smg_we[]={0xe0,0xd0,0xb0,0x70};uchar dis_smg[8] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};sbit smg_we1 = P3^4; //数码管位选定义sbit smg_we2 = P3^5;sbit smg_we3 = P3^6;sbit smg_we4 = P3^7;sbit c_send = P3^2; //超声波发射sbit c_recive = P3^3; //超声波接收uchar flag_hc_value; //超声波中间变量sbit beep = P2^3; //蜂鸣器IO口定义bit flag_key_b_en,flag_key_set_en; //按键蜂鸣器使能uchar smg_i = 3; //显示数码管的个位数bit flag_300ms ;bit key_500ms ;long distance; //距离uint set_d; //距离bit flag_csb_juli; //超声波超出量程uint flag_time0; //用来保存定时器0的时候的// 按键的IO变量的定义uchar key_can; //按键值的变量uchar zd_break_en,zd_break_value; //自动退出设置界面uchar menu_shudu = 10; //用来控制连加的速度bit flag_lj_en; //按键连加使能bit flag_lj_3_en; //按键连3次连加后使能加的数就越大了uchar key_time,flag_value; //用做连加的中间变量uchar menu_1; //菜单设计的变量uchar a_a;/***********************1ms延时函数*****************************/ void delay_1ms(uint q){uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/***********************处理距离函数****************************/ void smg_display(){dis_smg[0] = smg_du[distance % 10];dis_smg[1] = smg_du[distance / 10 % 10];dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f;}/******************把数据保存到单片机部eepom中******************/ void write_eepom(){SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_write(0x2001, set_d / 256);byte_write(0x2058, a_a);}/******************把数据从单片机部eepom中读出来*****************/ void read_eepom(){set_d = byte_read(0x2001);set_d <<= 8;set_d |= byte_read(0x2000);a_a = byte_read(0x2058);}/**************开机自检eepom初始化*****************/ void init_eepom(){read_eepom(); //先读if(a_a != 1) //新的单片机初始单片机问EEPOM {set_d = 100;a_a = 1;write_eepom();}}/****************独立按键处理函数********************/ void key(){static uchar key_new = 0,key_old = 0,key_value = 0;if(key_new == 0){ //按键松开的时候做松手检测if((P2 & 0x07) == 0x07)key_value ++;elsekey_value = 0;if(key_value >= 5){key_value = 0;key_new = 1;flag_lj_en = 0; //关闭连加使能flag_lj_3_en = 0; //关闭3秒后使能flag_value = 0; //清零key_time = 0;write_eepom();}}else{if((P2 & 0x07) != 0x07)key_value ++; //按键按下的时候elsekey_value = 0;if(key_value >= 5){key_value = 0;key_new = 0;flag_lj_en = 1; //连加使能zd_break_en = 1; //自动退出设置界使能zd_break_value = 0; //自动退出设置界变量清零flag_key_b_en = 1; //按键蜂鸣器使能}}key_can = 20;if(key_500ms == 1) //连加{key_500ms = 0;key_new = 0;key_old = 1;zd_break_value = 0;}if((key_new == 0) && (key_old == 1)){switch(P2 & 0x07){case 0x06: key_can = 3; break; //得到k2键值case 0x05: key_can = 2; break; //得到k3键值case 0x03: key_can = 1; break; //得到k4键值}// dis_smg[3] = smg_du[key_can % 10];}key_old = key_new;}void smg_we_switch(uchar i){switch(i){case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; }}/***********************数码显示函数*****************************/void display(){static uchar i;i++;if(i >= smg_i)i = 0;// P1 = 0xff; //段选// P3 = 0xf0 | (P3 & 0x0f); //位选// P3 = smg_we[i] | (P3 & 0x0f); //位选smg_we_switch(i);P1 = dis_smg[i]; //段选}void delay(){_nop_(); //执行一条_nop_()指令就是1us_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}/*********************超声波测距程序*****************************/ void send_wave(){c_send = 1; //10us的高电平触发delay();c_send = 0;TH0 = 0; //给定时器0清零TL0 = 0;TR0 = 0; //关定时器0定时flag_hc_value = 0;while(!c_recive); //当c_recive为零时等待TR0=1;while(c_recive) //当c_recive为1计数并等待{flag_time0 = TH0 * 256 + TL0;if((flag_hc_value > 1) || (flag_time0 > 65000)) //当超声波超过测量围时,显示3个888{TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;break ;}else{flag_csb_juli = 1;}}if(flag_csb_juli == 1){TR0=0; //关定时器0定时distance = TH0; //读出定时器0的时间distance = distance * 256 + TL0;distance +=( flag_hc_value * 65536);//算出超声波测距的时间得到单位是msdistance *= 0.017; // 0.017 = 340M / 2 = 170M = 0.017M 算出来是米if(distance > 350) //距离 = 速度 * 时间{distance = 888; //如果大于3.8m就超出超声波的量程}}}/*********************定时器0、定时器1初始化******************/void time_init(){EA = 1; //开总中断TMOD = 0X11; //定时器0、定时器1工作方式1ET0 = 1; //开定时器0中断TR0 = 1; //允许定时器0定时ET1 = 1; //开定时器1中断TR1 = 1; //允许定时器1定时}/****************按键处理数码管显示函数***************/void key_with(){if(key_can == 1){menu_1 ++;if(menu_1 >= 2){menu_1 = 0;}if(menu_1 == 0){menu_shudu = 20;dis_smg[0] = smg_du[distance % 10];dis_smg[1] = smg_du[distance / 10 % 10] ;dis_smg[2] = smg_du[distance / 100 % 10] & 0x7f;smg_i = 3;}if(menu_1 == 1){menu_shudu = 1;dis_smg[0] = smg_du[set_d % 10];dis_smg[1] = smg_du[set_d / 10 % 10];dis_smg[2] = smg_du[set_d / 100 % 10] & 0x7f ;dis_smg[3] = 0x88;smg_i = 4;}}if(menu_1 == 1) //设置高温报警{if(flag_lj_3_en == 0) //三次连加之后速度加快menu_shudu = 10 ; //500ms 加减一次elsemenu_shudu = 1; //250ms 加减一次if(key_can == 2){set_d ++ ; //按键按下未松开自动加三次if(set_d > 350)set_d = 350;dis_smg[0] = smg_du[set_d % 10]; //取小数显示dis_smg[1] = smg_du[set_d / 10 % 10] ; //取个位显示dis_smg[2] = smg_du[set_d / 100 % 10] & 0x7f; //取十位显示dis_smg[3] = 0x88; //a}if(key_can == 3){set_d -- ; //按键按下未松开自动加三次if(set_d <= 1)set_d = 1;dis_smg[0] = smg_du[set_d % 10]; //取小数显示dis_smg[1] = smg_du[set_d / 10 % 10] ; //取个位显示dis_smg[2] = smg_du[set_d / 100 % 10] & 0x7f ; //取十位显示dis_smg[3] = 0x88; //a}// write_eepom();}}/****************报警函数***************/void clock_h_l(){static uchar value;if(distance <= set_d){value ++; //消除实际距离在设定距离左右变化时的干扰if(value >= 5){beep = ~beep; //蜂鸣器报警}}else{value = 0;beep = 1; //取消报警}}/****************按键按下蜂鸣器响下**********************/ void key_beep(){static uint value;if((flag_key_b_en == 1) && (flag_key_set_en == 1)) {beep = 0; //打开蜂鸣器value ++;if(value > 800){value = 0;flag_key_b_en = 0;beep = 1;//关闭蜂鸣器}}}void main(){send_wave(); //测距离函数smg_display(); //处理距离显示函数time_init();init_eepom(); //读eepom数据while(1){if(flag_300ms == 1){flag_300ms = 0;clock_h_l(); //报警函数send_wave(); //测距离函数if(menu_1 == 0)smg_display(); //处理距离显示函数if(zd_break_en == 1) //自动退出设置界面程序{zd_break_value ++; //每300ms加一次if(zd_break_value > 100) //30秒后自动退出设置界面{menu_1 = 0; //smg_i = 3;zd_break_en = 0;zd_break_value = 0;}}}key(); //按键函数if(key_can < 10){key_with(); //按键处理函数}}}/*********************定时器0中断服务程序用做超声波测距的************************/void time0_int() interrupt 1{set_d ++; // TH0 TL0 到65536后溢出中断}/*********************定时器0中断服务程序************************/ void time1_int() interrupt 3{static uchar value; //定时10ms中断一次TH1 = 0xf8;TL1 = 0x30; //2msdisplay(); //数码管显示函数value++;if(value >= 150){value = 0;flag_300ms = 1;}if(value % 25 == 0){if(flag_lj_en == 1) //按下按键使能 50ms{key_time ++;if(key_time >= menu_shudu) //500ms{key_time = 0;key_500ms = 1; //500msflag_value ++;if(flag_value >= 3){flag_value = 10;flag_lj_3_en = 1; //3次后1.5秒后连加大些}}}}}六、实验分析及心得体会本次综合实验中,我们小组三个成员,在听了老师的大致讲解之后开始着手准备相关资料,查阅书籍,请教同学。

相关文档
最新文档