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

合集下载

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

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

基于stm32单片机的超声波测距仪设计报告【文章标题】基于STM32单片机的超声波测距仪设计报告【引言】超声波测距是一种常见且有效的测量方法,被广泛应用于工业控制、自动化、智能家居等领域。

本文将深入讨论基于STM32单片机的超声波测距仪的设计原理、硬件搭建和软件编程,并分享对该设计的观点和理解。

【简介】1. 超声波测距原理简介(可使用子标题,如1.1)- 超声波的特性与应用- 超声波传感器原理及工作方式2. 设计方案(可使用子标题,如2.1)- 系统框图:硬件模块与连接方式- 所需材料清单及器件参数选择【正文】1. 超声波传感器的选型与特性比较(可使用子标题,如1.1)1.1 超声波传感器的种类与特点1.2 STM32单片机与超声波传感器的配合选择理由与原则2. 硬件电路设计与搭建(可使用子标题,如2.1)2.1 超声波发射电路设计与实现2.2 超声波接收电路设计与实现2.3 STM32单片机与超声波传感器的连接方法及引脚映射3. 软件编程实现(可使用子标题,如3.1)3.1 STM32单片机开发环境配置与准备3.2 程序框架和流程设计3.3 超声波信号处理与距离计算算法【总结】1. 设计成果总结与优缺点评价- 设计成果与功能实现总结- 设计过程中的挑战与解决方案- 设计的优点与改进空间2. 对基于STM32单片机的超声波测距仪设计的观点和理解- 本设计在硬件搭建和软件编程方面充分利用了STM32单片机的性能与功能- 超声波测距仪在工业自动化和智能家居等领域具有广阔应用前景 - 未来可以进一步提升设计的灵活性和可扩展性【参考资料】- 张三: 《超声波测距原理与应用技术》,出版社,2018年- 李四: 《STM32单片机与嵌入式系统设计》,出版社,2019年以上是本文基于STM32单片机的超声波测距仪设计报告,对这个主题的观点和理解。

希望这篇文章内容全面、深入,并能帮助您对超声波测距仪设计有更深刻的理解。

基于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单片机的超声波测距仪达到了预期的效果。

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

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

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

XXXXX学院单片机课程设计报告题目:基于单片机的超声波测距仪学生姓名XX学号09XXX02专业电子信息工程专业班级2009级1班指导教师XXXX学部计算机科学与电气工程课程设计时间2012年6月18日基于单片机的超声波测距仪摘要测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,为了提高中长距离测量的简便性和精确度,本课题设计了一种基于51单片机的超声波测距仪。

系统以AT89C52单片机为核心,以超声波接收管和超声波发射管为传感器,利用单片机系统内部定时器来计算时间。

测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。

经测试,系统工作正常,达到设计要求。

关键词:超声波测距仪;AT89C52单片机;超声波传感器目录摘要 (I)第1章绪论 (3)1.1本设计的意义 (3)1.2本设计的发展前景 (3)1.3本设计的原理 (4)第2章本设计系统结构介绍 (5)2.1系统结构框图 (5)2.2各功能模块介绍 (5)2.2.1蜂鸣器、按键及液晶 (5)2.2.2超声波发射模块 (5)2.2.3超声波接收模块 (6)2.3本章小结 (6)第3章系统硬件电路设计 (7)3.1单片机介绍 (7)3.2单片机最小系统设计 (7)3.2.1单片机时钟电路介绍 (8)3.2.2单片机复位电路介绍 (9)3.3超声波发射电路介绍 (9)3.3.1 主要芯片功能介绍 (10)3.3.2 芯片内部结构图 (10)3.3.3 芯片引脚功能介绍 (10)3.4超声波接收电路介绍 (11)3.4.1 主要芯片功能介绍 (11)3.4.2 芯片内部结构图 (11)3.4.3 芯片引脚功能介绍 (11)3.5本章小结 (12)第4章系统软件调试环境介绍 (13)4.1 Keil编程软件介绍 (13)4.1.1软件功能 (13)4.1.2软件应用流程 (13)4.2 STC程序下载软件功能 (19)4.2.1软件应用流程 (19)4.3 本章小结 (22)第5章系统程序设计 (23)5.1系统程序设计流程图如图5-1所示 (23)5.2超声波发射模块详细流程图 (24)5.2.1程序流程图对应程序代码 (24)5.3液晶显示程序模块详细流程图 (26)5.3.1程序流程图对应程序代码: (27)5.4本章小结 (28)结论 (29)参考文献 (30)附录A (31)附录B (36)附录C (37)基于单片机的超声波测距仪第1章绪论超声波是指超过人的听觉范围以上(16KHZ)的声波。

基于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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于单片机超声波测距系统设计实验报告-重

基于单片机超声波测距系统设计实验报告-重

指导教师评定成绩:审定成绩:自动化学院计算机控制技术课程设计报告设计题目:基于单片机的超声波测距系统设计单位(二级学院):学生姓名:专业:班级:学号:指导教师:负责项目:设计时间:二〇一四年五月自动化学院制目录一、设计题目 0基于51单片机的超声波测距系统设计 0设计要求 0摘要 (1)二、设计报告正文 (2)2.1 超声波测距原理 (2)2.2系统总体方案设计 (3)2.3主要元件选型及其结构 (4)2.4硬件实现及单元电路设计 (9)2.5系统的软件设计 (12)三、设计总结 (17)四、参考文献 (17)五、附录 (18)附录一:总体电路图 (18)附录二:系统源代码 (18)一、设计题目基于51单片机的超声波测距系统设计设计要求1、以51系列单片机为核心,控制超声波测距系统;2、测量范围为:2cm~4m,测量精度:1cm;3、通过键盘电路设置报警距离,测出的距离通过显示电路显示出来;4、当所测距离小于报警距离时,声光报警装置报警加以提示;5、设计出相应的电子电路和控制软件流程及源代码,并制作实物。

摘要超声波具有传播距离远、能量耗散少、指向性强等特点,在实际应用中常利用这些特点进行距离测量。

超声波测距具有非接触式、测量快速、计算简单、应用性强的特点,在汽车倒车雷达系统、液位测量等方面应用广泛。

本次课设利用超声波传播中距离与时间的关系为基本原理,以STC89C52单片机为核心进行控制及数据处理,通过外围电源、显示、键盘、声光报警等电路实现系统供电、测距显示、报警值设置及报警提示的功能。

软件部分采用了模块化的设计,由系统主程序及各功能部分的子程序组成。

超声波回波信号输入单片机,经单片机综合分析处理后实现其预定功能。

关键词:STC89C52单片机; HC-SR04;超声波测距二、设计报告正文2.1 超声波测距原理常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。

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

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

基于单片机得超声波测距系统实验报告一、实验目得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. 理解超声波测距原理,掌握超声波传感器的工作原理。

2. 掌握单片机编程技巧,实现超声波测距功能。

3. 了解超声波测距系统在实际应用中的注意事项。

三、实习内容1. 超声波测距原理超声波测距原理基于声波在介质中传播的速度和距离的关系。

当超声波发射器发出超声波信号后,遇到障碍物会发生反射,反射信号被接收器接收。

根据超声波发射和接收的时间差,可以计算出障碍物与传感器的距离。

2. 实验设备(1)51单片机开发板(2)HC-SR04超声波测距模块(3)蜂鸣器(4)LED灯(5)面包板、连接线3. 实验步骤(1)搭建实验电路将51单片机开发板、HC-SR04超声波测距模块、蜂鸣器、LED灯等元器件按照电路图连接到面包板上。

(2)编写程序使用C语言编写单片机程序,实现以下功能:1)初始化51单片机、HC-SR04超声波测距模块、蜂鸣器、LED灯等外围设备。

2)使用定时器0产生定时中断,定时检测HC-SR04超声波测距模块的回波信号。

3)根据超声波往返时间计算距离,并显示在LCD显示屏上。

4)当距离小于设定值时,蜂鸣器发出报警声,LED灯亮起。

(3)编译、下载程序将编写好的程序编译并下载到51单片机开发板上。

(4)测试与调试连接LCD显示屏,观察距离显示是否正常。

调整HC-SR04超声波测距模块与障碍物的距离,测试报警声和LED灯是否正常工作。

四、实习结果与分析1. 实验结果通过实验,成功实现了超声波测距功能。

当距离小于设定值时,蜂鸣器发出报警声,LED灯亮起。

2. 分析(1)超声波测距原理正确,程序编写无误。

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

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

微机本理与单片机系统课程安排之阳早格格创做博业:轨讲接通旗号与统制班级:接控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。

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

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

基于单片机的超声波测距系统设计一、本文概述随着科技的飞速发展,超声波测距技术以其非接触、高精度、实时性强等优点,在众多领域如机器人导航、自动驾驶、工业控制、安防监控等中得到了广泛应用。

单片机作为一种集成度高、控制灵活、成本较低的微控制器,是实现超声波测距系统的理想选择。

本文旨在探讨基于单片机的超声波测距系统的设计原理、硬件构成、软件编程及实际应用,以期为相关领域的科研人员和技术人员提供参考。

本文将首先介绍超声波测距的基本原理和关键技术,包括超声波的传播特性、测量原理及误差分析。

接着,详细阐述基于单片机的超声波测距系统的硬件设计,包括单片机的选型、超声波收发模块的选择与连接、信号处理电路的设计等。

在此基础上,本文将介绍系统的软件设计,包括超声波发射与接收的时序控制、距离数据的处理与显示等。

还将讨论系统的低功耗设计、抗干扰措施以及在实际应用中的优化策略。

本文将通过具体实例,展示基于单片机的超声波测距系统在机器人定位、障碍物检测等场景中的应用,以验证系统的可行性和实用性。

本文期望能为相关领域的研究提供有益的参考,推动超声波测距技术的进一步发展和应用。

二、超声波测距原理超声波测距系统主要基于超声波在空气中的传播速度以及反射原理进行设计。

超声波是一种频率高于20kHz的声波,其传播速度在标准大气条件下约为343米/秒。

在超声波测距系统中,超声波发射器向目标物体发射超声波,当超声波遇到目标物体后,会发生反射,反射的超声波被超声波接收器接收。

测距的原理在于测量超声波从发射到接收的时间差。

设超声波发射器发射超声波的时间为t1,接收器接收到反射波的时间为t2,则超声波从发射到接收所经历的时间为Δt = t2 - t1。

由于超声波在空气中的传播速度是已知的,所以可以通过测量时间差Δt来计算目标物体与测距系统之间的距离D。

距离D的计算公式为:D = V * Δt / 2,其中V为超声波在空气中的传播速度。

在实际应用中,为了确保测量的准确性,通常会采用一些技术手段来减少误差。

基于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、超声波发射及接收原理:压电式超声波换能器是利用压电晶体的谐振来工作的。

超声波换能器内部有两个压电晶片和一个换能板。

当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器2、显示电路原理:数码管显示器是由发光的二极管显示字段组成的. 数码管显示器有8个发光二极管,其中从a~g管脚输入显示代码,可显示不同的数字或字符,Dp显示小数点共阳极的数码管显示器的公共端为发光二极管的阳极,通常接+5V电源,当发光二极管的阴极为低电平时,发光二极管点亮。

本设计中采用的是4位七段共阳极数码管显示器,一共具有12个引脚,4个位选端,8个字选端。

四位数码管显示器,有AT89C51的P0口输出。

动态扫描时,有P2口控制当前显示位。

3、复位电路原理:AT89C51复位有一个专用的外部引脚RESET,外部可通过此引脚输入一个正脉冲使单片机复位。

所谓复位,就是强制单片机系统恢复到确定的初始状态,并使系统重新从初始状态开始工作。

本设计采用的是电平式开关与上电复位电路,为了能使运行中的系统,经人工干预,强制系统进行复位。

二、软件流程图:按下开关,单片机初始化,设置定时器,发射超声波并检测是否有超声波返回,如果没有检测到超声波,则返回单片机初始化,如果检测到超声波,则进行外部中断子程序计算距离。

单片机超声波测距实习报告

单片机超声波测距实习报告

实习报告:基于单片机的超声波测距系统设计与实现一、实习背景及目的随着科技的不断发展,超声波测距技术在工业生产、机器人导航、自动驾驶等领域得到了广泛的应用。

本次实习旨在学习和掌握单片机超声波测距系统的设计与实现,提高自己的实际动手能力和创新能力。

二、实习内容与过程1. 了解超声波测距原理超声波测距原理是利用超声波在传播过程中,遇到障碍物时会产生反射现象,通过测量发射超声波和接收反射波之间的时间差,计算出障碍物与测距仪之间的距离。

2. 选定硬件平台本次实习选用AT89C51单片机作为控制核心,配合超声波发射接收模块、信号处理电路、显示电路等构成超声波测距系统。

3. 设计硬件电路根据超声波测距原理,设计超声波发射接收模块、信号处理电路、环境温度检测电路等。

其中,超声波发射接收模块负责发射超声波并接收反射波;信号处理电路对接收到的信号进行放大、滤波等处理,以便单片机能够准确地捕捉到信号;环境温度检测电路用于补偿超声波传播速度受温度影响产生的误差。

4. 编写程序代码利用C语言编写程序代码,实现单片机对超声波发射接收模块的控制、信号处理以及距离计算等功能。

程序主要包括以下几个部分:(1)初始化单片机,配置IO口、定时器等;(2)控制超声波发射接收模块发射超声波,并等待接收反射波;(3)对接收到的信号进行处理,提取有效信号;(4)计算反射波与发射波之间的时间差,并根据超声波传播速度计算距离;(5)将计算得到的距离显示在LCD屏幕上。

5. 系统调试与优化通过反复实验,对超声波测距系统进行调试和优化,提高测距精度和稳定性。

主要针对以下几个方面进行调整:(1)调整超声波发射接收模块的灵敏度,以适应不同距离的测量;(2)优化信号处理算法,提高对噪声的抗干扰能力;(3)根据环境温度变化,调整超声波传播速度的补偿系数。

三、实习成果与分析通过本次实习,成功设计并实现了基于单片机的超声波测距系统,实现了对不同距离的准确测量。

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

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

超声波测距仪单片机课设实验报告微机原理与单片机系统课程设计专业:轨道交通信号与控制班级:交控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。

超声波测距无线传输系统实验报告

超声波测距无线传输系统实验报告

超声波测距无线传输系统摘要:本系统利用声波反射原理,以MSP430单片机作为控制核心,实现超声波的发射和接收,通过测量超声波在发射源和被测物体间的传播时间来计算被测物体与发射探头间的距离,同时控制步进电机的转动, 实现正度45度的探测,并通过单片机无线收发功能传送数据,在单片机最小系统的液晶显示屏上显示所测物体的距离和坐标,可视化很强。

关键字:MSP430 超声波无线收发目录一、方案的论证1、40KHZ超声波波的产生方案一:由555产生一个稳定的40kHz载波信号,并由单片机控制它以产生间歇的发射波,此方法实现起来比较简单。

方案二:由非门进行振荡产生40kHz载波信号,此方案信号比较稳定,但需要特定频率的晶振,还可能需要分频电路,实现起来较为麻烦。

方案三:直接从FPGA分频得到40kHz的方波发射信号,频率稳定实现更为简单。

而且这种方法充分利用了FPGA资源,同时降低了硬件设计的复杂度,降低系统成本,但是考虑到功耗,我们并没用采用此方案。

方案四:在FPGA中设置一个触发器,时钟频率为80KHz,当其下降沿到来时对输出取反,得到40KHz的方波。

开始时,我们首先尝试用方案三,但后来发现方案三产生的方波不太稳定,考虑到本系统是用电池供电,所以后来改用了方案一,此方案硬件电路简单,功耗小。

3、超声波发射头的驱动方法方案一:将40K的脉冲经过反相器,用反相器驱动超声波发射头。

我们采用几个反相器串联和并联来提高电流,经试验后,此方案达不到要求。

方案二:采用三极管放大方案三:采用变压器方案四:超声波发射电路采用基于MAX232的方波发射电路电路的前几用74LS04非门输出正反相得40K的方波信号驱动MAX232后实现从TTL电平到RS232电平的DC-DC转换,输出+/-9V的电压方波,驱动超声波换能器。

由于发射到换能器的电压高,波形完整,因此可以达到很高的发射功率和效率,可以测量比较远的距离,同时用这个电路发射方波,电路工作稳定电路功耗很小,也适合单电源供电。

  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初值计算依据分频不同而有差异。

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

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

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

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

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

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

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

超声波传感器的主要性能指标包括:(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 主程序工作流程图(二)超声波探测程序流程图:图12 超声波探测程序流程图五、实验代码#include <reg52.h>#include <intrins.h>#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_();}/*********************超声波测距程序*****************************/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; //蜂鸣器报警}}{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秒后连加大些}}}}}六、实验分析及心得体会本次综合实验中,我们小组三个成员,在听了老师的大致讲解之后开始着手准备相关资料,查阅书籍,请教同学。

相关文档
最新文档