文档库 最新最全的文档下载
当前位置:文档库 › 超声波测距报告含程序..

超声波测距报告含程序..

超声波测距报告含程序..
超声波测距报告含程序..

《单片机原理及应用》

单片机课程设计报告超声波测距报告

目录

第1 章课程设计概述 (2)

1.1 课程设计选题及原理 (2)

1.2课程设计选题调研 (2)

1.2.1 选题目的与意义 (2)

1.2.2 国内外研究综述 (3)

第2 章方案设计 (4)

2.1 主要任务 (4)

2.2 设计框图 (4)

2.3 设计所需元器件及简介 (4)

2.4 设计程序流程简图 (5)

2.5 编程语言的选择

第3 章电路及部分代码设计 (6)

3.1 Stc12c5a60s2最小系统 (6)

3.2 超声波测距模块 (7)

3.3 数码管显示模块 (8)

3.4 蜂鸣器报警模块 (9)

3.5 总仿真结果及实物测量结果 (10)

第4 章课程设计心得体会和总结 (11)

4.1 心得体会 (11)

4.2 总结 (11)

附1 课程设计仿真图…………………………………………………………

附2 课程设计实物图…………………………………………………………

附3 课程设计程序设计代码……………………………………………………………

第1 章课程设计概述

1.1 课程设计选题及原理

课程设计题目

超声波测距仪

设计原理

通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。这与雷达测距原理相似。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离s,即:s=340t/2。

由于超声波也是一种声波,其声速V与温度有关。在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。声速确定后,

只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的基本原理。

1.2课程设计选题调研

1.2.1 选题目的与意义

超声波是指频率在20KHz以上的声波,它属于机械波的范畴,可用于非接触测量,具有不受光、电磁波以及粉尘等外界因素的干扰的优点,利用计算超声波在发送端和接收端之间的传输时间和声速来测量距离,对被测目标无损害。而且超声波传播速度在很大范围内与频率无关。超声波的这些独特优点越来越受到人们的重视。

目前对于超声波精确测距的需求也越来越大,比如油库和水箱液面的精确测量和控制,汽车辅助泊位系统的应用,物体内气孔大小的检测和机械内部损伤的检测等。在机械制造,电子冶金,航海,宇航,石油化工,等工业领域也有广泛地应用。此外,在材料科学,医学,生物科学等领域中也占具重要地位。

1.2.2 国内外研究综述

历史上使用超声波来测量距离是从第二次世界大战时海军的声纳技术的发展开始。声纳是一种利用声波在水下测定目标距离和运动速度的仪器。经过几个世纪,科学家们对此反复研究,最终发现了超声波的原理。超声波测距应用于各种工业领域,如工业自动控制,建筑工程测量和机器人视觉识别等方面。

超声波作为一种检测技术,采用的是非接触式测量,由于它具有不受外界因素影响,对环境有一定的适应能力,且操作简单,测量精度高等优点而被广泛应用。这些特点可使测量仪器不受被测介质的影响,大大解决了传统测量仪器存在的问题,比如,在粉尘多的情况下对人引起的身体接触伤害,腐蚀性质的被测物对测量仪器腐蚀,触电接触不良造成的误测等。此外该技术对被测元件无磨损,使测量仪器牢固耐用,使用寿命加长,而且还降低了能量损耗,节省人力和劳动的强度。因此,利用超声波检测既迅速、方便、计算简单,又易于实时控制,在测量精度方面能达到工业实用的要求。

然而超声波测距在实际应用中也有很多局限性。由于超声波在传播过程中,声压会随距离的增大而呈指数规律衰减,远目标的回波信号幅度小,信噪比低,用固定阈值的比较器检测回波,可能导致越过门槛的时间前后移动,从而影响计时的准确性,这必然会影响到测距的准确度。此外,构成超声波传感器的压电陶瓷片在压电的双向转换过程中,存在惯性,滞后等现象,以及超声波脉冲在空气中传播本身及多重的反射路径,均导致回波信号被展宽,也会使测量产生较大的误差,影响了测距的分辨率。其它如温度,风速等也会对测量造成一定的影响。工程师针对这些误差提出的可变阈值的超声波测距方法,从回波信号处理的角度出发,分析了超声波回波曲线的特性,利用回波包络的峰值检测技术以确定回波到达的时刻,另外,利用温度补偿电路可以降低温度对声速的影响,这些改进都大大的提高了超声波测距的准确性。

计量学在制造业中越来越重要。直接在机器上测量尤其能推动制造业的发展。目前为止大部分还是采用视觉的或触觉的测量方法。但是墙的厚度就不能用这些来测量,因此德国人把超声系统结合到机器设计出了测距方法。随着超声波的发展,早在2000年时英国人就设计出了可观察,识别并测距的超声波集成系统。

第2 章方案设计

2.1主要任务

设计制作一个超声波测距仪,通过单片机控制超声波测距模块,计算并显示所测距离以及实现报警功能。

整体电路的控制核心为单片机STC12C5A60S2。超声波发射和接收电路中都对相应信号进行整形及放大,以保证测量结果尽可能精确。超声波探头接OUT 口实现超声波的发射和接收。另外超声波发射和接受模块hc-sr04还有具有温度补偿的作用,使测量精度能够达到要求。整体结构图包括超声波发射接收电路,

单片机电路,显示电路与蜂鸣器报警电路等几部分模块组成。

2.2 设计框图

本设计主要的四个模块:超声波发射和接收模块,蜂鸣器报警模块,单片机 STC12C5A60S2,四位数码管显示模块。以下是设计框图

图1 设计框图

2.3 设计所需元器件及简介

STC12C5A60S2

增强型 8051 CPU ,1T ,单时钟/ 机器周期,指令代码完全兼容传统8051。工作电压5.5V-3.3V 。STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D 转换(250K/S),针对电机控制,强干扰场合。

通用I/O 口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O 口) 可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O 口驱动能力均可达到20mA ,但整个芯片最大不要超过55mA 。

本设计中用到的单片机管脚有P1,P2.0-P2.3,P3.5-P3.7。

超声波测距模块HC-SR04

超声波测距模块HC-SR04 可提供2-400cm 的非接触式距离感测功能,测距精度可高达3mm 。模块包括超声波发器、接收器与控制电路本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(

2cm )超近,稳定的测距是此产品成功走向市场的有力根据

图2 HC-SR04正面图

主要技术参数:1:使用电压:DC5V 2:静态电流:小于2mA

3:电平输出:高5V 4:电平输出:底0V

5:感应角度:不大于15度6:高精度可达0.2cm

7:探测距离:2cm-450cm

接线方式:VCC,trig(控制端),echo(接收端),GND

模块工作原理:(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;

超声波发射器向某一方向发射超声波,在发射超声波的同时开始计时,超声波在空气中传播,途中碰到障碍物反射后立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度约为340m/s,根据计时器记录的时间t,就可以计算出超声波发射点距障碍物的距离(s),即为:s=340t/2,这就是所谓的时间差测距法。

存在4个因素限制了该系统的最大可测距离:超声波的幅度、反射的质地、反射回波和入射声波之间的夹角。

四位数码管显示模块

数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led 数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,led数码管根据LED 的接法不同分为共阴和共阳两类。本设计用到的是共阳极,静态驱动也称直流驱动数码管。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

共阳TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,088H

本设计还需要的元件有蜂鸣器,电阻,电容,12M晶振,按键,三极管,面包板等

设计流程图说明:本设计P3.5连接超声波发射端,P3.7口接超声波接收端。首先单片机开始工作,系统初始化后单片机向P3.5口发送40KHZ的方波,使超声波发射和接受模块开始工作,当P3.7口接收到高电平时计时器开始计时,选用的是计时器工作方式1,16位。当P3.7口接收到低电平的时候计时器关闭。此时时间存在TH0,TL0中,这是通过计算子程序把时间换算成距离四位,从高到底分别存在78H,77H,76H,75H。此时调用显示子程序把距离显示在四位数码管中。再调用报警子程序,根据距离的判断,使蜂鸣器发出不同频率的声音。延时很短的时间,继续下次的测量。

2.5编程语言的选择

在编程语言的选择上,我们主要考虑使用我所学过的汇编语言和C语言。

汇编语言是一种面向机器的低级的程序设计语言。它直接利用机器提供的指令系统编写程序,该类程序的可执行指令是与机器语言程序的指令一一对应的。汇编语言由于是面向机器的程序设计语言,与具体的计算机硬件有着密切的关系,因此,可移植性差。但由于汇编指令与机器语言指令一一对应,即一条汇编语言的可执行指令对应着一条机器语言指令,反之亦然。因此,汇编语言可直接利用机器硬件系统的许多特性,如寄存器、标志位以及一些特殊指令等,具有执

行速度快、占用内存少等优点。

在本设计中,设计程序过程相对不复杂,用汇编语言完全可以实现,所以本设计选择了使用汇编语言进行编程。

第3 章电路及部分代码设计

3.1Stc12c5a60s2最小系统

在电源旁接了开关控制电源。复位电路旁还接了按键,方便复位操作。

图4 单片机工作最小系统

3.2超声波测距模块

设计思路:单片机P3.5发送40KHZ的方波,超声波接收到后开始测距,返回一段高电平到P3.7就是超声波的测量的时间,所以程序设计时P3.7接收到高电平时开启定时器,P3.7口接收到低电平时关闭定时器,这样定时器TH0,TL0里存储的就是测量的时间,根据公式s=340t/2就可以计算出距离。

流程图

图5 超声波发射和接收流程图

电路部分

图6 超声波发射和接收电路

根据超声波测距模块原理代码设计部分如下

P3.5发射,P3.7接受

MOV TMOD,#01H ;置定时器T0工作方式样3,对内部机器周期计数 CJZCX: MOV TL0,#00H ;装入定时器初值

MOV TH0,#00H

puzel:MOV 14H,#08H ;超声波发射持续200us

Here:CPL P3.5 ;输出40kHz方波

NOP ;

NOP ;

NOP ;

DJNZ 14H,Here ;

QBA:JB P3.7,QBC ;等待1跳到QBC

DJNZ R1,QBA

DJNZ R0,QBA

QBC:SETB TR0 ;测到1开始计时

SETB P3.2

QBB:JNB P3.7,QBD ;等待0跳到QBD

JMP QBB

QBD:CLR P2.3 ;测到0关闭计时

CLR TR0

3.3 数码管显示模块

设计思路:此时通过计算后四位数据分别从高到底存在78H,77H,76H,75H 里,显示数据时从高到低,P1口接a-h,P2.0-P2.3口接共阳极。首先赋值P2口0FEH,让78H中的数据给高位,在左移,把77H数据给次高位,这样循环知道四位数据全部显示,此时跳到主程序。

电路部分如图6

代码部分(说明显示四位左端为高位,代码中78H,77H,76H,75H分别存了四位,P1口接a-h,P2.0-P2.3接共阳极)

DISPLAY: MOV R1,#78H ;立即数78H送寄存器中

MOV R5,#0FEH ;立即数FEH送寄存器R5中

PLAY: MOV A,R5 ;寄存器R5中的数值送累加器A中

MOV P2,A ;累加器A中的数值送P2口

MOV A,@R1 ;以寄存器R1中的数为地址单元的数值送累加器中

MOV DPTR,#TAB ;16位地址送地址寄存器中

MOVC A,@A+DPTR ;以中的地址为基地变址寻址单元中的数送累加器

MOV P1,A ;累加器A中的数值送P1口

MOV R6,#14H ;立即数据14送寄存器R6中

DL1:MOV R7,#19H ;立即数据19送寄存器R7中

DL2:DJNZ R7,DL2 ;寄存器中的数据减1,不为零时则转移 DJNZ R6,DL1 ;寄存器中的数据减1,不为零时则转移 DEC R1 ;寄存器R1中的数值减1

MOV A,R5 ;寄存器R5中的数值送累加器A中

JNB ACC.3,ENDOUT ;地址位为0则转到ENDOUT

RL A ;累加器循环右移

MOV R5,A ;累加器A中的数值送寄存器R5中

AJMP PLAY ;绝对短转移

ENDOUT: SETB P3.5 ;置P3.5口

RET ;返回

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,088H

图 7 数码管显示电路

3.4 蜂鸣器报警模块

设计思路:如图P3.6口接的是蜂鸣器电路,实现蜂鸣器不同频率报警,首先要距离分段,此程序判断的是最高位,所以是78H里的值,控制蜂鸣器报警频率不同是通过改变P3.6口0和1翻转的状态时间不同来实现的。

电路部分

图8 蜂鸣器报警电路

蜂鸣器报警分5种频率

分段为<1m,1-2m,2-3m,3-4m,>4m

距离不同设定的蜂鸣器报警的频率不同

3.5总仿真结果及其实物测量结果

由于没有超声波发射和接收模块,用按键来给P3.7口信号。电路的仿真结果是单片机工作后,用按键给信号,四位数码管可以显示计算值出来,蜂鸣器可以正常工作。

本次设计的实物能实现的功能功能有:

(1)超声波的发射和接受控制

(2)对回波信号的检测

(3)测距时间到距离的换算

(4)距离不断测量和不断显示

(5)对距离进行判断,并且蜂鸣器报警

第4 章课程设计心得体会和总结

4.1心得体会

心得:这两个星期是一个不断发现问题和解决问题的过程,从调研选题背景意义,了解了超声波测距仪的工作原理及其发展,感觉上通过单片机控制是一个相对简单的过程没有什么弯路要走。确定方案,购买元件的时候就发现有很多的实际问题,由于第一次实际做一些东西出来,总觉得不知道从什么地方下手,这个时候小组合作就显得格外重要,大家一起讨论,给出不同的意见,完善各自的方案,了解更多实际电路要考虑到的问题,电阻的限流作用,单片机工作的电压电流,电阻选多大,电容选多大,这些对电路都是有影响的,选的不对很可能就把单片机烧坏。每天都会有新的问题,解决完一个就会发现那不是结束仅仅是一个开始。焊接电路是一项需要有耐心的过程,一不小心就会犯错,那是万万不允许的,所以必须检查每一个焊接点,刚开始做必然做的不太娴熟,焊接的也不太美观,但最也算是完成了。调试电路是最头疼的,一开始不知道是电路的问题还是程序的问题。这次我们用的是汇编语言,而大部分组用的是C语言,这让我们在交流程序的时候显得有些无奈,开始我们只有一个部分一个部分的慢慢调试,先从四位数码显示部分开始,这部分知道电路连接正确应该就不会有问题。然后我们测蜂鸣器是否工作正常。最后遇到问题是发现超声波接收和发射模块不能正常工作,找了很多原因,都不行。后来恍然大悟,是我们在一开始是就把超声波发射和接收模块的时间开始和接受弄错了,所以计算的时间总是错的。完成能测距的这一基本任务让我们有了信心去做接下来的报警功能。对于我们这个超声波测距模块,要弄清楚每一个环节的工作原理,才能进行电路设计及程序编写。

4.2 总结

总结:我们使用stc12c5a60s2单片机控制,hc-sr04超声波发射和接受模块辅助测量,在四位数码显示管显示结果,蜂鸣器报警,这是整个超声波测距系统的主要四个部分。测量范围在2cm到300cm之间。由于经验不足,最后的成品能虽然实现测量和报警的功能,但是任然有很多不足的地方,电路排版焊接不美观,电路测量的有效性不够强,程序的稳定性容错性都存在问题。程序在努力改进后还需加强。本次课程设计学习到很多,对课本原理性的内容更是加深理解。对实践动手能力有了很大的锻炼和提高。

附录1

课程设计仿真图

图9 仿真电路

附录2

课程设计实物图

图10 实物图

附录3

程序设计代码

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

; 测量范围35-300厘米;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 中断入口程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0000H

AJMP START

ORG 000BH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

START: MOV R0,#70H ;立即数70H送寄存器R0中

MOV R7,#0BH ;立即数0BH送寄存器R7中

MOV 20H,#00H ;立即数00H送20H单元中

CLEARDISP: MOV @R0,#00H ;立即数立即数00H送R0中的地址单元中

INC R0 ;寄存器R0加1

DJNZ R7,CLEARDISP;寄存器中的数值减1非零时转移

MOV TMOD,#01H ;置定时器T0工作方式样3,对内部机器周期计数

CJZCX: MOV TL0,#00H ;装入定时器初值

MOV TH0,#00H

MOV R0,#0FH

MOV R1,#5bH

puzel:MOV 14H,#08H ;超声波发射持续200us

Here:CPL P3.5 ;输出40kHz方波

NOP ;

NOP ;

NOP ;

DJNZ 14H,Here ;

QBA:JB P3.7,QBC ;等待1跳到QBC DJNZ R1,QBA

DJNZ R0,QBA

QBC:SETB TR0 ;测到1开始计时 SETB P3.2

QBB:JNB P3.7,QBD ;等待0跳到QBD JMP QBB

QBD:CLR P2.3 ;测到0关闭计时 CLR TR0

MOV 70H,TL0

MOV 71H,TH0

MOV R2,71H

MOV R3,70H

MOV R6,#11H

MOV R7,#0H

LCALL MULD

MOV R6,#64H

MOV R7,#0H

LCALL DIVD

MOV 73H,R2

MOV 74H,R3

MOV R3,#0H

MOV R4,#0H

MOV R5,#0H

MOV R6,73H

MOV R7,74H

LCALL HB2

MOV A,R4 ;分离BCD

MOV B,#10H

DIV AB

MOV 78H,A

MOV 77H,B

MOV A,R5

MOV B,#10H

DIV AB

MOV 76H,A

MOV 75H,B

MOV 7AH,#0FFH

XXX:LCALL DISPLAY

LCALL WARNING

DJNZ 7AH,XXX

AJMP CJZCX ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 乘34程序(乘声速) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MULD: MOV A,R3 ;计算R3乘R7

MOV B,R7

MUL AB

MOV R4,B ;暂存部分积

MOV R5,A

MOV A,R3 ;计算R3乘R6

MOV B,R6

MUL AB

ADD A,R4 ;累加部分积

MOV R4,A

CLR A

ADDC A,B

MOV R3,A

MOV A,R2 ;计算R2乘R7

MOV B,R7

MUL AB

ADD A,R4 ;累加部分积

MOV R4,A

MOV A,R3

ADDC A,B

MOV R3,A

CLR A

RLC A

XCH A,R2 ;计算R2乘R6

MOV B,R6

MUL AB

ADD A,R3 ;累加部分积

MOV R3,A

MOV A,R2

ADDC A,B

MOV R2,A

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 除100程序(除法) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DIVD: CLR C ;比较被除数和除数 MOV A,R3

SUBB A,R7

SUBB A,R6

JC DVD1

SETB OV ;溢出

RET

DVD1: MOV B,#10H ;计算双字节商

DVD2: CLR C ;部分商和余数同时左移一位 MOV A,R5

RLC A

MOV R5,A

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

XCH A,R2

RLC A

XCH A,R2

MOV F0,C ;保存溢出位

CLR C

SUBB A,R7 ;计算(R2R3-R6R7)

MOV R1,A

MOV A,R2

SUBB A,R6

ANL C,/F0 ;结果判断

JC DVD3

MOV R2,A ;够减,存放新的余数

MOV A,R1

MOV R3,A

INC R5 ;商的低位置一

DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5) MOV A,R4 ;将商移到R2R3中

MOV R2,A

MOV A,R5

MOV R3,A

CLR OV ;设立成功标志

RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; BCD转换 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

HB2: CLR A ;BCD码初始化

MOV R3,A

MOV R4,A

MOV R2,#10H ;转换双字节十六进制整数

HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中

RLC A

MOV R7,A

MOV A,R6

RLC A

MOV R6,A

MOV A,R5 ;BCD码带进位自身相加,相当于乘2

ADDC A,R5

DA A ;十进制调整

MOV R5,A

MOV A,R4

ADDC A,R4

DA A

MOV R4,A

MOV A,R3

ADDC A,R3

MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整

DJNZ R2,HB3 ;处理完16bit

RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 报警程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

WARNING: MOV R6,#10

MOV A,78H

CJNE A,#00H,B1

LJMP W1

B1: SUBB A,#01H

CJNE A,#00H,B2

LJMP W2

B2: SUBB A,#01H

CJNE A,#00H,B3

LJMP W3

B3: SUBB A,#01H

CJNE A,#00H,B4

LJMP W4

B4: LJMP W5

RET

W1: CPL P3.6 ;蜂鸣器驱动电平取反

MOV R7,#28

DE1: DJNZ R7,DE1

DEC R6

CJNE R6,#00,W1 ;反复循环

RET

W2: CPL P3.6 ;蜂鸣器驱动电平取反

MOV R7,#228

DE2: DJNZ R7,DE2

DEC R6

CJNE R6,#00,W2 ;反复循环

RET

W3: CPL P3.6 ;蜂鸣器驱动电平取反

MOV R7,#428

DE3: DJNZ R7,DE3

DEC R6

CJNE R6,#00,W3 ;反复循环

RET

W4: CPL P3.6 ;蜂鸣器驱动电平取反

MOV R7,#628

DE4: DJNZ R7,DE4

DEC R6

CJNE R6,#00,W4 ;反复循环

RET

W5: CPL P3.6 ;蜂鸣器驱动电平取反

MOV R7,#828

DE5: DJNZ R7,DE5

DEC R6

CJNE R6,#00,W5 ;反复循环

RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 显示程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DISPLAY: MOV R1,#78H ;立即数76H送寄存器中

MOV R5,#0FDH ;立即数FEH送寄存器R5中

PLAY: MOV A,R5 ;寄存器R5中的数值送累加器A中

MOV P2,A ;累加器A中的数值送P3口

MOV A,@R1 ;以寄存器R1中的数为地址单元的数值送累加器中

MOV DPTR,#TAB ;16位地址送地址寄存器中

MOVC A,@A+DPTR ;以中的地址为基地变址寻址单元中的数送累加器

MOV P1,A ;累加器A中的数值送P1口

MOV R6,#14H ;立即数据14送寄存器R6中

DL1:MOV R7,#19H ;立即数据19送寄存器R7中

DL2:DJNZ R7,DL2 ;寄存器中的数据减1,不为零时则转移

DJNZ R6,DL1 ;寄存器中的数据减1,不为零时则转移

DEC R1 ;寄存器R1中的数值加1

MOV A,R5 ;寄存器R5中的数值送累加器A中

JNB ACC.3,ENDOUT ;地址位为0则转到ENDOUT

RL A ;累加器循环右移

MOV R5,A ;累加器A中的数值送寄存器R5中

AJMP PLAY ;绝对短转移

ENDOUT: SETB P3.5 ;置P3.5口

RET ;返回

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,088H EEE: END ;结束

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

指导教师评定成绩: 审定成绩: 自动化学院 计算机控制技术课程设计报告设计题目:基于单片机的超声波测距系统设计 单位(二级学院): 学生姓名: 专业: 班级: 学号: 指导教师: 负责项目: 设计时间:二〇一四年五月 自动化学院制

目录 一、设计题目 (1) 基于51单片机的超声波测距系统设计 (1) 设计要求 (1) 摘要 (2) 二、设计报告正文 (3) 2.1 超声波测距原理 (3) 2.2系统总体方案设计 (4) 2.3主要元件选型及其结构 (5) 2.4硬件实现及单元电路设计 (9) 2.5系统的软件设计 (13) 三、设计总结 (17) 四、参考文献 (17) 五、附录 (18) 附录一:总体电路图 (18) 附录二:系统源代码 (18)

一、设计题目 基于51单片机的超声波测距系统设计 设计要求 1、以51系列单片机为核心,控制超声波测距系统; 2、测量范围为:2cm~4m,测量精度:1cm; 3、通过键盘电路设置报警距离,测出的距离通过显示电路显示出来; 4、当所测距离小于报警距离时,声光报警装置报警加以提示; 5、设计出相应的电子电路和控制软件流程及源代码,并制作实物。

摘要 超声波具有传播距离远、能量耗散少、指向性强等特点,在实际应用中常利用这些特点进行距离测量。超声波测距具有非接触式、测量快速、计算简单、应用性强的特点,在汽车倒车雷达系统、液位测量等方面应用广泛。本次课设利用超声波传播中距离与时间的关系为基本原理,以STC89C52单片机为核心进行控制及数据处理,通过外围电源、显示、键盘、声光报警等电路实现系统供电、测距显示、报警值设置及报警提示的功能。软件部分采用了模块化的设计,由系统主程序及各功能部分的子程序组成。超声波回波信号输入单片机,经单片机综合分析处理后实现其预定功能。 关键词:STC89C52单片机; HC-SR04;超声波测距

51单片机超声波测距程序

//晶振:11.0592 //TRIG:P1.2 ECH0:P1.1 //波特率:9600 #include #include #include #define uchar unsigned char #define uint unsigned int sbit RX=P0^2; sbit TX=P0^3; unsigned int time=0; unsigned int timer=0; float S=0; bit flag =0; void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.87)/100; //算出来是CM if(flag==1) //超出测量 { flag=0; printf("-----\n"); } printf("S=%f\n",S); } void delayms(unsigned int ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i)

{ j=10; while(--j); } } } void zd0() interrupt 1 //T0中断用来计数器溢出,超出测距范围{ flag=1; //中断溢出标志 } void StartModule() //T1中断用来扫描数码管和计800ms启动模块{ TX=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void main(void) { TMOD=0x21; //设T0为方式1,GATE=1; SCON=0x50; TH1=0xFD; TL1=0xFD; TH0=0; TL0=0;

超声波测距仪硬件电路的设计

超声波测距仪电路设计实验报告 轮机系楼宇071 周钰泉2007212117 实验目的:了解超声波测距仪的原理,掌握焊接方法,掌握电路串接方法,熟悉电路元件。 实验设备及器材:电烙铁,锡线,电路元件 实验步骤:1,学习keil软件编写程序2、焊接电路板3、运行调试 超声波测距程序: #include unsigned char code dispbitcode[]={0x31,0x32,0x34,0x38,0x30,0x30, 0x30,0x30}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x77,0x7c,0x 39}; unsigned char dispbuf[8]={10,10,10,10,10,10,0,0}; unsigned char dispcount; unsigned char getdata; unsigned int temp; unsigned int temp1;

unsigned char i; sbit ST=P3^0; sbit OE=P3^1; sbit EOC=P3^4; sbit CLK=P3^5; sbit M1=P3^6; sbit M2=P3^7; sbit SPK=P2^6; sbit LA=P3^3; sbit LB=P3^2; sbit LC=P2^7; sbit K1=P2^4; sbit K2=P2^5; bit wd; bit yw; bit shuid; bit shuig; unsigned int cnta; unsigned int cntb; bit alarmflag; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void main(void) { M1=0; M2=0; yw=1; wd=0; SPK=0; ST=0; OE=0; TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-500)/256; TL1=(65536-500)%256; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; ST=1; ST=0; while(1) { if(K1==0) { delay10ms(); if(K1==0) { yw=1; wd=0; } } else if(K2==0) { delay10ms(); if(K2==0) { wd=1; yw=0; } } else if(LC==1) { delay10ms(); if(LC==1) { M1=0; M2=1; temp1=13; shuid=0; shuig=1; LB=0; } } else if((LC==0) && (LB==1)) { delay10ms(); if((LC==0) && (LB==1)) { M1=0; M2=0; temp1=12; shuig=0; shuid=0; LB=0; }

超声波测距程序(详细C语言数码管显示)

超声波测距程序(详细C语言数码管显示) #include //头文件 #include// _nop_() 函数延时1US用 #include #include #define uchar unsigned char #define uint unsigned int #define nop _nop_() sbit csb=P1^0;//超声波发送端口为P1.0 sbit bai=P2^2;//数码管百位 sbit shi=P2^1;//数码管十位 sbit ge=P2^0;//数码管个位 uchar flag;//超声波接收标志 float juli1;//距离变量,用来数码管显示用 int juli; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0到9的代码 int xianshi[3]; void delayshow(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void ledshow(void) { xianshi[0]=juli/100; xianshi[1]=((juli%100)/10); xianshi[2]=juli%10; bai=0; P0=table[xianshi[0]]; delayshow(2); bai=1; delayshow(2); shi=0; P0=table[xianshi[1]]; delayshow(2); shi=1;

单片机应用_超声波测距器

单片机课程设计 一、需求分析: 超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量围在1m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。 本文旨在设计一种能对中近距离障碍物进行实时测量的测距装置,它能对障碍物进行适时、适量的测量,起到智能操作,实时监控的作用。 关键词单片机AT82S51 超声波传感器测量距离 二、硬件设计方案 设计思路 超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(time of flight)。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离 测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为340米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。 由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。 超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。 根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示: 超声波测距器系统设计框图 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。

PLC超声波测距实验报告082039140程稳

利用plc的高速计数模块进行超声波测距实验 ―――――微型控制计算机暑期设计实验报告 082039140程稳 利用51单片机来驱动超声波模块测距,是一件很容易的事,只需要结合定时中断和外部中断,利用12M或更高的晶振频率即可精确获取从发射到接收到超声波之间的时间,平均1ms对应 3.4cm的行程,本GE比赛设计需要物位测量的最大距离是30cm,即需要30*2/3.4=17.64ms,而GE PAC RX3i的PME软件梯形图程序得扫描周期2ms以上,就算是最快的定时节点也有1ms,所以若直接用PLC的普通离散量输入模块IC694MDL654输入节点来测量接收到超声波回波的时间的误差为1ms,误差距离3.4/2=1.7cm,结果自然不理想,更严重的问题在于PLC该模块无硬件中断响应功能,是不能测电平宽度的。总之PLC的IO口工作在低速模式下是难以胜任高速测量任务的,但可喜的是GE PLC 的高速计数模块HSC304能处理2MHZ的信号,但仍无硬件中断功能。于是想能否干脆把单片机测出的电平时间数据通过串口发送给PLC,我也试着这样连线测试,不过PLC串口的使用不像单片机这么简单,没有相关资料,PLC内部寄存器找不到PLC从单片机接收的数据。于是仍决定放弃此方案,回到高速计数模块。再认真阅读此模块配置信息和实验调试后,发现其可以测量出外部信号频率,于是想既然PLC无法直接测电平宽度,那干嘛不测量频率,有了频率自然有周期,有周期自然有电平宽度!

利用plc的高速计数模块检测超声波测距仪的信号接收端的频率,正常情况下应使用频率直接求得周期接而来计算时间,但由于实际测得这样根本很难实现,所以直接测频率,并利用示波器查看该频率的波形,并修改程序使得在所测距离变化的情况下,一周期内的低电平保持不变(高电平所持续的时间表示超声波从发出到接收到所经历的时间,低电平是延时,为了使得波形正常),然后测出频率及其所对应的距离。 以下是用虚拟示波器测出的超声波模块在不同距离测量回波接收脚电压波形:

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

基于51单片机的超声波测距系统 贾源 完成日期:2011年2月22日

目录 一、设计任务和性能指标 (3) 1.1设计任务 (3) 1.2性能指标 (3) 二、超声波测距原理概述 (4) 2.1超声波传感器 (5) 2.1.1超声波发生器 (5) 2.1.2压电式超声波发生器原理 (5) 2.1.3单片机超声波测距系统构成 (5) 三、设计方案 (6) 3.1AT89C2051单片机 (7) 3.2超声波测距系统构成 (8) 3.2.1超声波测距单片机系统 (9) 图3-1:超声波测距单片机系统 (9) 3.2.2超声波发射、接收电路 (9) 图3-1:超声波测距发送接收单元 (10) 3.2.3显示电路 (10) 四.系统软件设计 (11) 4.1主程序设计 (11) 4.2超声波测距子程序 (12) 4.3超声波测距程序流程图 (13) 4.4超声波测距程子序流程图 (14) 五.调试及性能分析 (14) 5.1调试步骤 (14) 5.2性能分析 (15) 六.心得体会 (15) 参考文献 (16) 附录一超声波测系统原理图 (18) 附录二超声波测系统原理图安装图 (19) 附录三超声波测系统原理图PCB图 (20) 附录四超声波测系统原理图C语言原程序 (21) 参考文献 (26)

一、设计任务和性能指标 1.1设计任务 利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个超声波测距仪器,用LED数码管把测距仪距测出的距离显示出来。 要求用Protel 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。 1.2性能指标 距离显示:用三位LED数码管进行显示(单位是CM)。 测距范围:25CM到 250CM之间。误差:1%。

超声波测距仪的设计说明

题目:超声波测距仪的设计 超声波测距仪的设计 一、设计目的: 以51单片机为主控制器,利用超声波模块HC-SR04,设计出一套可在数码管上实时显示障碍物距离的超声波测距仪。 通过该设计的制作,更为深入的了解51的工作原理,特别是51的中断系统及定时器/计数器的应用;掌握数码管动态扫描显示的方法和超声波传感器测距的原理及方法,学会搭建51的最小系统及一些简单外围电路(LED显示电路)。从中提高电路的实际设计、焊接、检错、排错能力,并学会仿真及软件调试的基本方法。 二、设计要求: 设计一个超声波测距仪。要求: 1.能在数码管上实时显示障碍物的实际距离; 2.所测距离大于2cm小于300cm,精度2mm。 三、设计器材: STC89C52RC单片机 HC-SR04超声波模块 SM410561D3B四位的共阳数码管 9014三极管(4) 按键(1) 电容(30PF2,10UF1) 排阻(10K),万用板,电烙铁,万用表,5V直流稳压电源,镊子,钳子,

导线及焊锡若干,电阻(200欧5)。 四、设计原理及设计方案: (一)超声波测距原理 超声测距仪是根据超声波遇到障碍物反射回来的特性进行测量的。超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离L。基本的测距公式为:L=(△t/2)*C 式中 L——要测的距离 T——发射波和反射波之间的时间间隔 C——超声波在空气中的声速,常温下取为344m/s 声速确定后,只要测出超声波往返的时间,即可求得L。 根据本次设计所要求的测量距离的围及测量精度,我们选用的是HC-SR04超声波测距模块。(如下图所示)。此模块已将发射电路和接收电路集成好了,硬件上不必再自行设计繁复的发射及接收电路,软件上也无需再通过定时器产生40Khz的方波引起压电陶瓷共振从而产生超声波。在使用时,只要在控制端‘Trig’发一个大于15us宽度的高电平,就可以在接收端‘Echo’等待高电平输出。单片机一旦检测到有输出就打开定时器开始计时。 当此口变为低电平时就停止计时并读出定时器的值,此值就为此次测距的时间,再根据传播速度方可算出障碍物的距离。 (二)超声波测距模块HC-SR04简要介绍 HC-SR04超声波测距模块的主要技术参数使用方法如下所述: 1. 主要技术参数: ①使用电压:DC5V ②静态电流:小于2mA ③电平输出:高5V

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

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

一、实验目的 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 回响信号输出等四支线。

超声波测距C语言源程序代码

超声波测距C语言源程 序代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

/*{HZ即单位s的倒数}本晶振为12MHZ,因此外部的时钟频率为12MHZ,所以内部的时钟频率为(12M H Z)/12=1M H 即1000000HZ,而机械频率为1/(1MHZ),即每完成一次计算(即定时器的值加一)用时, 即1us(微秒).*/ /*************************************************************************** ********/ #include<> #define UC unsigned char #define UI unsigned int void delay(UI); sbit BX = P3^0;void TimeConfiguration(); a = 0; b = 0; c = 0; P2 =~ 0x00; goto loop; } time = TL0 + TH0*256; juli = ( int )( (time*/2 ); BAI = ( (juli%1000)/100 ); SHI = ( (juli%100)/10 ); GE = ( juli%10 ); /******************************************两种模式的距离显示 ********************************************/ if(juli > MAX) { Hong = 0; Lv = 1; while( t1-- ) { a = 0; b = 1; c = 1; P2 =~ CharacterCode[BAI]; delay(400); a = 1; b = 0; c = 1; P2 =~ CharacterCode[SHI]; delay(400); a = 1; b = 1; c = 0; P2 =~ CharacterCode[GE]; delay(390);

stm32超声波测距汇总

嵌入式系统及应用开放性实验报告 Stm32 HC-SR04超声波测距

第一章绪论 1.1STM32超声波测距系统 1.1.1 HC-SR04超声波测距模块简介 HC-SR04 超声波测距模块可提供2cm-400cm 的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。 使用电压:DC---5V 静态电流:小于2mA 电平输出:高5V 低0V 感应角度:不大于15度 探测距离:2cm-450cm 高精度:可达3mm 1.1.2 HC-SR04超声波测距模块原理 采用IO 口TRIG 触发测距,给TRIG至少10us 的高电平信号; 模块自动发送8个40khz 的方波,自动检测是否有信号返回; 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超 声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2; T(℃)={(V25-Vsense)/Avg_Slope}+25 V25=Vsense 在25 度时的数值(典型值为: 1.43)。 Avg_Slope=温度与Vsense 曲线的平均斜率(单位为mv/℃或uv/℃)(典型值为4.3Mv/℃)。 利用以上公式,我们就可以方便的计算出当前物体超声波模块之间的距离。 程序中使用: 测试距离=高电平时间*声速(340M/S))/2 这个公式 1.2 设计要求 使用ARM开发板上硬件资源与超声波模块结合,编程实现实时距离显示功能,通过数码管实时显示距离,并在距离小于设定报警距离时使用蜂鸣器报警。1.3 总体设计方案及框图

1.3.1 距离测量及获取方法 通过设置定时器,开启中断,读取ECHO 输出高电平的持续时间,计算结果 作为当前距离。1.3.2 总体设计方案 实时距离: 本超声波测距系统可实现对距离的实时测量,并不断显示在数码 管上 保持距离: 用户可通过按键使得当前距离值在数码管保持, 也可再次返回对 距离的实时测量,此模式下距离小于报警值不会报警,仅为显示模式。 两种模式相互转换,并且可以在距离保持状态时通过按键进入修改报警距离模式,如果实测距离小于下限值,蜂鸣器报警,当距离大于下限值时,报警自动停止。 1.3.3 程序框图 K5 按下 K6按下 否 是 K7按下 是 否 否 超声波测距数码管显示距离K4是否按下 显示当前距离K7是否按下 开始初始化 数码管及按键扫描 SV++ SV-- K1是否按下

超声波测距C语言源程序代码

/*{HZ即单位s的倒数}本晶振为12MHZ,因此外部的时钟频率为12MHZ,所以内部的时钟频率为(12MHZ)/12=1MH 即1000000HZ,而机械频率为1/(1MHZ),即每完成一次计算(即定时器的值加一)用时0.000001s, 即1us(微秒).*/ /****************************************************************************** *****/ //具有模式选择. #include #define UC unsigned char #define UI unsigned int void delay(UI); //延时9.56us程序 sbit beep = P1^3; //用于声音报警 sbit Lv = P1^7; //用于光报警 sbit Hong = P1^6; sbit QD = P3^7;//K8 //P3^7口(K8)为确定键, sbit GX = P3^1;//K7 //P3^3口(K2)为修改键, sbit SX = P3^6;//K6 //P3^2(K3)为测量键. sbit BX = P3^0;//K5 //个(K7),十(K6),百(K5),三位修改键 sbit a = P1^2;//百位//数码管位选 sbit b = P1^1;//十位 sbit c = P1^0;//个位 sbit trig = P1^4; //方波发射端 sbit echo = P1^5; //超声波接收端 void IntConfiguration(); //用来"设置中断"的函数,P3^3口(K2)为修改键,P3^2(K3)为测量键. void TimeConfiguration(); //用来"设置定时器"的函数 sbit K1 = P3^4;//动态 sbit K4 = P3^5;//静态//用于进行模式切换(K1、K4键) void xiaxian(); //修改函数,用来修改下限 void shangxian(); //修改函数,用来修改上限 UI min[3]={0,5,0}; //报警极限,拆分为"百十个"三位 UI max[3]={3,0,0}; //MIN,MAX 用来存储最大和最小值 void MINxianshi(UI); //最小范围和最大范围的显示 void MAXxianshi(UI); UC code CharacterCode[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管数字字符(P2口) /********************************主函数*********************************************/ void main() { TimeConfiguration(); //设置定时器0 IntConfiguration(); //设置中断允许,K4键为修改键,K8键为确定键 while(1) {

用51单片机实现HC-SR04超声波测距程序

#include //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Trig = P1^0; //产生脉冲引脚 sbit Echo = P3^2; //回波引脚 sbit test = P1^1; //测试用引脚 uchar code SEG7[10]={~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90};//数码管0-9 uint distance[4]; //测距接收缓冲区 uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器 bit succeed_flag; //测量成功标志 //********函数声明 void conversion(uint temp_data); void delay_20us(); void main(void) // 主程序 { uint distance_data,a,b; uchar CONT_1; i=0; flag=0; test =0; Trig=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 TR0=1; //启动定时器0 IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0 while(1) //程序循环 { EA=0; Trig=1; delay_20us(); Trig=0; //产生一个20us的脉冲,在Trig引脚 while(Echo==0); //等待Echo回波引脚变高电平 succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; //

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

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

基于单片机的超声波测距仪设计 1总体设计方案介绍 1.1超声波测距原理 发射器发出的超声波以速度υ在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t,由s=vt/2即可算出被测物体的距离。由于超声波也是一种声波,其声速v 与温度有关,下表列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。 表1-1 超声波波速与温度的关系表 表1-1 1.2超声波测距仪原理框图如下图 单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED

显示。 图1-1 超声波测距仪原理框图 2 系统的硬件结构设计 硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用AT89C51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。 2.1 51系列单片机的功能特点及测距原理 2.1.1 51系列单片机的功能特点 5l系列单片机中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时/计数器TO和T1,4个8 b的工/O端I:IP0,

超声波测距电路图

超声波测距电路图 超声波测距电路原理和制作 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。 二、超声波测距原理 1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。

2、压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振 来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 3、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 图1 超声波传感器结构 这就是所谓的时间差测距法。 < 三、超声波测距系统的电路设计 图2 超声波测距电路原理图

带温度补偿的超声波测距程序

/**程序:基于HC-SR04得超声波测距系统 *单片机型号:STC90C51612MHz *说明:开始连续进行7次超声波测距,每次测距间隔80ms, *完成后对7次结果排序并将最大得2个数值与最小得2个数值去除,对剩余得 *3个数值取平均值。完成后指示灯灭,输出结果到LCD1602上。测量超出范围则发出报警声、 *使用两个IO端口控制HC-SR04触发信号输入与回响信号输出, *以及一个T0定时器用于时间计数。 * 使用DS18B20测量环境温度,声速公式:V=334。1m/s+Temperature*0、61, *单片机晶振为12Mhz(11、953M),计数时为T=1us *计算公式:S=(334。1m/s+Temperature*0。61)*N*T/2,N为计数值=TH0*256+TL0*/ /*包含头文件*/ #include 〈reg51。h> #include 〈intrins。h> #define Delay4us(){_nop_();_nop_();_nop_();_nop_();} /*宏定义*/ #define uchar unsignedchar?//无符号8位 #define uint?unsigned int//无符号16位 #define ulongunsigned long ?//无符号32位 /*全局变量定义*/ sbit BEEP=P1^5;??//报警测量超出范围 sbit Trig=P3^4; //HC-SR04触发信号输入 sbitEcho=P3^2;?//HC—SR04回响信号输出 float xdataDistanceValue=0。0;?//测量得距离值 float xdata SPEEDSOUND; ??//声速 float xdataXTALTIME; ?//单片机计数周期 uchar xdata stringBuf[6];??//数值转字符串缓冲 //LCD1602提示信息 uchar codePrompts[][16]= { ?{"Measure Distance"}, //测量距离 {"-Out of Range -"}, //超出测量范围 ?{"MAX range400cm "}, //测距最大值400cm {”MIN range 2cm"},?//测距最小值2cm {”"},?//清屏 }; uchar xdata DistanceText[]="Range: ";//测量结果字符串 uchar xdata TemperatureText[]="Temperature:";//测量温度值 /*外部函数声明*/ extern voidLCD_Initialize(); //LCD初始化 extern void LCD_Display_String(uchar*, uchar); externvoid ReadTemperatureFromDS18B20(); extern int xdataCurTempInteger; void DelayMS(uint ms);?//毫秒延时函数 voidDelay20us(); //20微秒延时函数 voidHCSR04_Initialize();//HCSR04初始化 float MeasuringDistance();?//测量距离

超声波模块实验报告

超声波模块编程控制 实验报告 院、系机械与电气工程学院 专业班级机械125班第五组 姓名李泉军同组人赵凯,徐思琪,郭明开,韦耀辰

实验日期2014 年11 月21 日 一、实验原理 通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。这与雷达测距原理相似。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2) 二、超声波工作原理简介 (1) 采用IO口TRIG触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2; 本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值

三、系统硬件电路图及实物照片 超声波测距电路图 显示距离10cm

四、系统软件程序流程图及程序清单

N Y Y Y N N Y Y 程序清单: //晶振9.6MHZ ,默认8分频,计时步距8/9.6=0.833333us #include #include] ‘开始 初始化IO 口,初始化中断(上升沿触发) PB2口激活超声波模块 检测Echo 回响信号 INT0上升沿引发了中断? INT0下降引发了中断? 设为下降沿触发中断,打开定时器(64分频,普通模式) PB1是否为 高电平? PB1是否为低电平? 设为上升沿触发中断, 关闭定时器,读取 TCNT0的值 TCNT0清零 计算距离(单位:厘米) 采用5161BS 数码管串联 显示两位数

超声波测距电路图

超声波测距电路图超声波测距电路原理和制作 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。本文所介绍的三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。 二、超声波测距原理 1、超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 2、压电式超声波发生器原理

压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 3、超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 图1 超声波传感器结构 这就是所谓的时间差测距法。< 三、超声波测距系统的电路设计 图2 超声波测距电路原理图 本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用8751,经济易用,且片内有4K的ROM,便于编程。电路原理图如图2所示。其中只画出前方测距电路的接线图,左侧和右侧测距电路与前方测距电路相同,故省略之。

51单片机实现超声波测距报警系统

目录 1引言 (1) 1.1研究的目的和意义 (1) 1.21 国内外发展的状况以及存在的问题 (2) 1.22 现有的倒车雷达存在的问题 (2) 1.3本文研究的主要内容 (2) 2 超声波原理介绍 (2) 2.1 超声波的基本理论 (2) 2.11 超声波的传播速度 (3) 2.12 超声波的物理性质 (4) 2.13 超声波对声场产生的作用 (5) 2.2 超声波测距系统原理 (6) 2.3 规格参数 (8) 2.31 主要功能 (8) 2.32 基本参数 (8) 3系统硬件设计 (8) 3.1 单片机系统 (10) 3.2 超声波发射接收模块 (11) 3.3 报警电路设计 (12) 3. 4 复位电路 (12) 4系统软件程序 (14) 5计算超声波传播时间 (14) 6结论 (29) 参考文献: (29) 致谢 (30)

基于单片机倒车防撞报警系统设计 张杭 南京信息工程大学滨江学院,南京210044 摘要:对于汽车倒车防撞问题,提出了将超声波测距仪和单片机结合于一体的方案,并给出了一种基于AT89C51单片机的倒车防撞报警系统的设计,对系统中控制部分、发射部分、接收部分、显示部分和报警部分出现的问题进行处理。本文采用一种简单易行的测距原理建立了防撞报警系统,具体分析了倒车防撞系统的设计原理及各部分元件的设计方案,充分描述了超声波测距的原理及应用,并介绍了我国在超声波测距的发展现状,不过还有一些无法避免的测量误差,还需日益俱进的科学发展加以解决。 关键词:A T89C51;超声测距;倒车防撞 1引言 1.1研究的目的和意义 随着社会经济的发展交通运输业飞速发展,汽车的数量在大副攀升。交通拥挤状况也日趋严重,撞车事件屡屡发生,造成了不可避免的人身伤亡和经济损失。针对这种情况,设计一种响应快,可靠性高且较为经济实用的汽车防撞报警系统势在必行。超声波测距法是最常见的一种距离测距方法,应用于汽车停车的前后左右防撞的近距离和低速状况,并且在汽车倒车防撞报警系统中,超声波作为一种特殊的声波,同样具有声波传输的基本物理特性——折射,反射,干涉,衍射,散射。超声波测距即是利用其反射特性,当车辆后退时,超声波距离传感器利用超声波检测车辆后方的障碍物位置,并利用指示灯及蜂鸣器把车辆到障碍物的距离及位置通知驾驶人员,起到安全的作用。 1.2 国内外现状

相关文档
相关文档 最新文档