文档库 最新最全的文档下载
当前位置:文档库 › 单片机的超声波测距系统的设计

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

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

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

摘要:

这是一种可应用于倒车雷达的超声波测距系统。本系统采用单片机为核心,

结合发射和接受模块构成整个的测距系统。倒车雷达是用来探测车身和周围的障碍物并显示其距离,以帮助驾驶员安全倒车或泊车的辅助电子设备,在纵多的汽车中逐渐普及应用,而且较多的应用了本系统设计采用的无源探头。采用无源探头能够降低整个系统的设计成本,为能够更广泛的应用超声波测距系统打了坚实的基础。因此,本系统的设计具有广泛的运用价值和意义。

关键字:超声波测距;倒车雷达;运用价值

目录

引言 (4)

一、超声波测距系统主要功能的概述 (4)

二、超声波测距系统的主要技术指标 (4)

三、超声波测距系统的原理 (4)

四、超声波测距系统的硬件组成 (5)

五、超声波测距系统的软件设计 (9)

六、超声波测距系统的测试数据和测试结果分析 (10)

七、总结 (11)

谢辞 (11)

参考文献 (12)

附录一——超声波测距系统原理图 (13)

附录二——超声波测距系统的PCB图 (14)

附录三——超声波测距系统的源程序 (15)

引言:

本系统以STC89C52单片机控制为核心、发出40K发波信号,经发射电路升压后驱动超声波换能器,然后再由超声波接收头接受信号,送到单片机处理后,由液晶显示模块显示测量数据。此外,本系统还包括了测温系统,测温工作由DS18B20完成,由本系统构成的超声波测距系统具有测量准确,显示便捷,操作灵活,反应迅速,系统工作稳定,耗电低,报警提示等特点。

一、超声波的主要功能概述:

●实时显示当前测量距离;

●实时显示当前测量温度;

●具有近距离和远距离两种测量模式;

●能够实时报警功能;

●具有开机系统自检功能;

二、超声波测距仪的主要技术指标

测量距离:0.20m-10.00m

测温范围:0℃-125℃

测量距离精度:1cm

实时功率:0.05W

系统发射功率:1mW(max)

工作电流:80mA(min)、90mA(max)

输入电源电压:DC5V

三、超声波测距系统的原理

超声波测距的方法有很多种,如相位检测法,声波幅值检测法和往返时间检测法等。相位检测法虽然精度高,但检测范围有限:声波幅值检测法容易受反射波的映像。本系统采用超声波往返时间检测法,其原理是:检测从超声波发生器发出的超声波,经气体介质的传播到接收器的时间即往返时间。往返时间与气体介质中的声速相乘再除以2就是检测的距离。即有:

L=V*T/2

想要通过时间测量超声波传播的时间的准确性确定距离,声速V就必须要准确测定。实际上声速虽介质的温度,压力等变化而变化。一般条件下,由于大气压力变化很小,因此传播速度就主要受温度的影响。在我们的设计测距系统中采用测量温度的方法来补偿声速,即用测温元件测量实际环境的温度来修正声速。空气中的声速与温度的关系近似用下式表示:

V=331.4+0.607T m/s T-℃

此外,准确的测量目标还要能够精确的计算出超声波传播的时间,显然能够确定的时间的单位越小越好,本系统采用的单片机的定时器0来计算时间,单片机采用12M 的晶振,那么本系统可精确到

1US 的最小时间单位,计算所测量的距离可精确到0.0001M,显然这已经能够完全地满足我们的设计要求。

超声波测距系统的总电路的组成部分有:单片机控制电路,超声波发射电路,超声波接受电路,测温电路,液晶显示电路以及报警电路等共同组成。单片机控制电路负责发生40K的方波信号,经一反向器器后分别送到MAX232的两TTL电平输入端,然后产生+/-9V 的方波信号驱动超声波换能器。再由超声波接受回来,此时,就可利用单片机定时出发射和接收的时间差。那么单片机就可计算出实际的距离,并将其显示出来。具体的硬件原理框图如下:

四、超声波测距系统的硬件组成

4.1单片机控制系统

单片机控制系统以单片机STC89C52为核心,结合其本身的一

些外围器件构成。STC89C52单片机是一款应用很普及的89系列的单片机,该单片机具有四个8位的I/O口,内部集成了8K的程序存储器,两个外部中断,两个定时器,支持串口的程序下载,具有应用简单,操作简便,价格便宜等许多优点。因此我们选用这一型号的单片机作为控制器。单片机的晶振频率为12M,这样有利于我们更准确地计算超声波的往返时间,是后面距离精确计算的基础。

图一:超声波控制电路

4.2超声波发射电路

超声波发射电路采用基于MAX232的方波发射电路,电路的前级用74LS04非门输出正反相的40KHz方波信号驱动MAX232后实现从TTL电平到RS232电平的DC-DC转换,输出+/-9V的电

压方波,驱动超声波换能器,电路图如下图2所示。由于发射到换能器的电压高,波形完整,因此可以达到很高的发射功率与效率,可以测量到比较远的距离,同时用这个电路发射方波,电路工作稳定,电路功耗很小,也适合单电源供电。所以我们采用这个方案作为发射电路。

图2:基于MAX232的超声波发射电路

4.3超声波接受电路

超声波接收电路采用集成接收芯片对超声波回波信号进行放大与整形,在这里我们采用SONY公司生产的红外接收专用芯片CX20106A(电路如图3所示),由于它的接收频率在40KHz左右,而且它的外部电路简单易于实现,同时减少了生产调试的麻烦,因此我们采用这个接收方案。

CX20106A内部集成了前置放大与限幅放大,总增益可达80dB,带通滤波电路,峰值检波,噪声抑制电路,自动增益控制电

路和波形整形电路。可以通过调整外部的电容C2调整它的接收灵敏度,调整外部电阻R6可以的调整它的接收中心频率与增益,它工作稳定,灵敏度高,功耗小,接收回波能力强,所以我们采用这个方案作为接收电路。

图3:基于CX20106A的超声波接受电路

4.4LCD液晶显示电路

LCD液晶显示电路采用LCD1602液晶显示模块,它可以显示2行*16个字符,完全可以满足我们的设计要求。它独有的蓝色背光电路可以在环境光线较弱的条件下应用,显示清晰,颜色靓丽,价格便

宜的特点,是很好的显示设备。同时,还能够根据情况来调节显示的亮度。由于本系统可以不用显示汉字,介于设计成本上的需要,我们采用了这个显示方案。

图4:1602液晶显示模块

4.5温度检测模块

检测模块是以数字温度传感器DS18B20为核心,它是DALLAS 公司生产的

1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。DS18B20 产品的特点(1)、只要求一个I/O 口

即可实现通信。(2)、在DS18B20 中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55 到+125摄氏度之间。(5)、数字温度计的分辨率用户可以从9 位到12 位选择。(6)、内部有温度上、下限告警设置。

DS18B20 详细引脚功能描述1、GND 地信号;2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源;3、VDD可选择的VDD 引脚。当工作于寄生电源时,此引脚必须接地。DS18B20 的使用方法。由于DS18B20 采用的是1-Wire 总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52 单片机来说,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

本系统采用外部电源供电方式,即:DS18B20的1脚和3脚分别接地和VCC电源.2脚接一个5K的上拉电阻到VCC.这样接法的好处是传感器的检测范围更大.

在温度检测时,无需强上拉。

图5:基于DS18B20的温度检测电路

五、超声波测距系统的软件设计

本系统的软件设计采用了目前比较流行的编程语言-C语言,由于C语言是面对使用者的高级语言,它通俗易懂,书写方便,给我们的编程设计带有很大的方便,我们的编程速度与效率与得到了很大的提高。尤其是在数据运算处理方面,C语言显示出了巨大的优越性。

程序首先要初始化要用到的寄存器,内存单元,设置中断触发方式,并初始

DS18B20和1602液晶模块,然后控制P3.1口输出12US的高电平,再输出13US的低电平,循环15次便可发射15个频率为40K的方波信号,此后单片机马上启动定时器计时,经过一段时间的延时后,CPU开放中断。当中断产生后,马上关闭定时器,并由单片机处理数据,并将计算结果显示出来。以下是程序设计的流程图:

程序设计见附录三

六、超声波测距系统的测试数据和测试结果分析

对多种测试物体进行测试:

测试物体一:纸箱48cm*46cm;

测试物体二:木板43cm*35cm

测试物体三:铜板36cm*34cm

测试物体四:硬塑料板40cm*33cm

1、距离测试:

测试一:

测试地点:男生宿舍24#205 测试时间:3月25日10:00-11:00

实际测试距离范围:0.12m—5.15m 测试者:刘振河、王坤

单位:cm

测试二:

测试地点:信息与通信学院创新基地测试时间:3月25日12:00-13:00

实际测试距离范围:0.12m—5.30m 测试者:刘振河、王坤单位:cm

注:1、铜板上分布着许多不规则的小孔;

2、在测试小于40cm距离时,发射头要并接一104瓷片电容;

3、由于接收头在接收到超声波后转化成的电信号极小,幅值在UV级别,因此无法在实验室的示波器上显示。

2、工作电流:100mA

3、LCD显示清晰,亮度高,内容丰富

4、各LED指示灯均能正常工作,指示正常

5、测量温度精度:0.0625℃

以上各项技术指标均满足了设计的要求,电路各种参数设计合理,工作稳定,性能良好。

七、总结

经过十几天的不断设计制作,我们终于完成了我们的设计。总体上讲,这一系统测量结果在一定的误差范围内较为准确,测试数据较稳定,我们觉得这是本系统中最为成功的地方之一,为此我们也十分的满意!

当然,我们这次的设计也存在很多的不足之处,比如我们的这个设计在运动中测试的结果不够准确,测量数据变化很大,而且反应时间较长。我们认为这是本系统中最大的不足之处,同时也是我们在设计制作之初欠缺考虑的地方。为此,我们查阅相关的资料,了解到相关的一些信息。据了解,目前高性能的倒车雷达大都采用有源探头,

接收的回波信号在探头内部放大整形后输出,发射信号也在探头内部耦合驱动传感器,其抗干扰性更强,探头的互换性、一致性也更高。同时采用多个探头以保证测试结果的质量。

总之,虽然我们这次超声波测距系统的制作存在一些不足,但总体上还是取得令人满意的结果!为此,我们会再接再励,在电子制作过程中不断吸收各方面的知识、提高我们的实践能力,让我们再一次感觉到了辛苦忙碌之后收获的喜悦,同时也引起了我们对电子制作的更加广泛的兴趣和热情!

谢辞:

经过本小组所有成员的共同努力,我们终于完成这次设计制作,在设计中我们遇到各种各样的困难,但我们全小组齐心协力,共同攻关,献言献策,凭着严谨认真的科研态度,创新求实的科学精神,克服了种种困难。同时,多得各位老师和同学的耐心分析和指导,尤其是何宁老师给予了我们很大的帮助!为此,我们要向我们的指导老师何宁老师,廖欣老师表示由衷的感谢,在他们的耐心帮助下,我们终于顺利地完成我们的这次设计制作!

参考文献:

[1] 徐爱钧彭秀华.Keil Cx51 V7.0单片机高级语言编程与

uVision2应用实践电子工业出版社2004 [2] 张毅刚彭喜源潭晓昀等.MCS-51单片机应用设计.哈尔滨工

业大学出版社2000

[3] 杨振江杜铁军李群.流行单片机实用子程序及应用实例. 西

安:西安电子科技大学出版社,2002

[4] 李群芳张士军黄建.单片微型计算机与接口技术(第三版)电

子工业出版社2008

[5] 李光飞.单片机C程序设计实例. 北京航空航天大学出版社2002

[6] 广州周立功单片机发展有限公司.DS18B20芯片资料

附录附录一:超声波测距系统原理

附录二:超声波测距PCB

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;

基于51单片机的超声波测距毕业设计(论文)

一设计题目基于51单片机的超声波测距 二设计者 姓名班级学号组号 三、设计思路及框图、原理图 任务:以单片机为核心,设计并制作一超声波测距系统基本要求: 利用时间差测距,不考虑温度变化 用数码管显示测试结果 工作频率:450kHz 测距范围:0.5~10米 测试精度: 10% 发挥部分尽量增大测控范围,提高测试精度 1.系统的硬件结构设计 1.1. 超声波发生电路 发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的450kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。 1.2超声波检测接收电路 采用集成电路CX20106A为超声波接收芯片。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电

容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。 1.3 显示电路 显示电路主要由74ls273芯片驱动,用PNPC8550三级管进行位选,七段共阳极数码管显示。 2.系统的软件结构设计 设计思路 主程序中包括温度补偿子程序,计算子程序,显示子程序。采用汇编编程。首先进行系统初始化。其次利用循环产生4个40KHZ的方波,由输出口进行输出,并开始计时。第三等待中断,若超声波被接收探头捕捉到,那么通过中断可测得

超声波测距程序(详细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;

基于单片机的超声波测距

测控技术与仪器专业课程设计报告 班级姓名学号起始时间 课程设计题目: 测控技术与仪器专业课程设计报告 摘 要:本文介绍了一种基于单片机的超声波测距仪的设计。详细给出了超声波测距仪的工作原理、超 声波发射电路和接受电路、测温电路、显示电路等硬件设计,以及相应的软件设计。设计中采用升压电路,提高了超声换能器的输出能力;采用红外接收芯片,减少了电路间相互干扰,提高了灵敏度;同时,考虑了环境温度对超声波测距的影响,采用温度传感器,提高了测量精度。该设计试验运行良好,系统结构简单、操作方便、价格低廉,具有广阔的推广前景。 关键字:超声波测距仪;超声波换能器;单片机;温度传感器 1 对题目的认识和理解 目前,常用的测距方法主要有毫米波测距、激光测距和超声波测距三种。超声波测距较前两种测距方法而言,具有指向性强、能耗缓慢、受环境因素影响较小等特点,广泛应用于如井深、液位、管道长度、倒车等短距离测量。 超声波测距适用于高精度中长距离测量。因为超声波在标准空气中传播速度为331.45m/s ,由单片机负责计时,单片机使用12.0M 晶振,所以此系统测量精度理论上可以达到毫米级。 目前比较普遍的测距的原理是:通过发射具有特征频率的超声波对被摄目标的探测,通过发射出特征频率的超声波和反射回接受到特征频率的超声波所用的时间,换算出距离,如超声波液位物位传感器,超声波探头,适合需要非接触测量场合,超声波测厚,超声波汽车测距告警装置等。 本设计选用频率为40kHZ 左右的超声波,它在空气中传播的效率最佳。由于超声波测距主要受温度影响较大,所以本设计增加了温度补偿电路。本设计具有电路简单、操作简便工作稳定可靠、测距精确和能耗小、成本低等特点,可实现无接触式测量,应用广泛。 1.1 超声波测距原理 超声波测距是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即反射回来,超声波接收器收到回波就立即停止计时。根据计时器测出发射和接收回波的时间差t ,可以计算出发射点距障碍物的距离s :2 = t c s ,其中t c 为超声波在空气中的传 播速度,它随温度的变化而变化,其变化关系如下:331.50.6=+t c T 式中T 为环境摄氏温度,可由温 度传感器获取。

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

微机原理与单片机系统课程设计 业:专轨道交通信号与控制 级:班1305 交控

姓名:贺云鹏 学号: 201310104 指导教师:建国 交通大学自动化与电气工程学院 30 日 12 2015 年月 超声波测距仪设计设计说明1 设计目的1.1 测量声波在发超声波测距的原理是利用超声波在空气中的传播速度为已知,根据发射和接收的时间差计算出发射点到障碍射后遇到障碍物反射回来的时间,物的实际距离。超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量。 超声波在气体、液体及固体中以不同速度传播,定向性好、能量集中、传输过程中衰减较小、反射能力较强。超声波能以一定速度定向传播、遇障碍物后形成反射,利用这一特性,通过测定超声波往返所用时间就可计算出实际距离,从而实现无接触测量物体距离。超声波测距迅速、方便,且不受光线等因素影响,广泛应用于水文液位测量、建筑施工工地的测量、现场的位置监控、振动仪车辆倒车障碍物的检测、移动机器入探测定位等领域。 1.2 设计方法 本课题包括数据测距模块、显示模块。测距模块包括一个HC-SR04超声波测距模块和一片AT89C51单片机,该设计选用HC-SR04超声波测距模块,通过单片机对超声波进行计时并根据超AT89C51发射和接受超声波,使用HC-SR04.声波在空气中速度为340米每秒的特性计算出距离。显示模块包括一个4位共阳极LED数码管和AT89C51单片机,由AT89C51单片机控制数码管动态显示距离。 1.3 设计要求 采用单片机为核心部件,选用超声波模组,实现对距离的测量,测量距离能够通过显示输出(LED,LCD)。 2 设计方案及原理 2.1超声波测距模块设计

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

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

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

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

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

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

超声波测距仪的设计说明

题目:超声波测距仪的设计 超声波测距仪的设计 一、设计目的: 以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

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

超声波测距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);

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

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

基于单片机的超声波测距仪设计 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,

用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; //

基于51单片机超声波测距

一设计要求 (1)设计一个以单片机为核心的超声波测距仪,可以应用于汽车倒车、工业现场的位置监控; (2)测量范围在0.50~4.00m,测量精度1cm; (3)测量时与被测物无直接接触,能够清晰稳定地显示测量结果。 二超声波测距系统电路总体设计方案 本系统硬件部分由AT89S52控制器、超声波发射电路及接收电路、温度测量电路、声音报警电路和LCD显示电路组成。汽车行进时LCD显示环境温度,当倒车时,发射和接收电路工作,经过AT89S52数据处理将距离也显示到LCD 上,如果距离小于设定值时,报警电路会鸣叫,提醒司机注意车距。超声波测距器的系统框图如下图所示: 图5 系统设计总框图 由单片机AT89S52编程产生10us以上的高电平,由指定引脚输出,就可以在指定接收口等待高电平输出。一旦有高电平输出,即在模块中经过放大电路,驱动超声波发射探头发射超声波。发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的处理,指定接收口即变为低电平,读取单片机中定时器的值。单片机利用声波的传播速度和发射脉冲到接收反射脉冲的

时间间隔计算出障碍物的距离,并由单片机控制显示出来。 由时序图可以看出,超声波测距模块的发射端在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。 图6 时序图 三超声波发射和接收电路的设计 分立元件构成的发射和接收电路容易受到外界的干扰,体积和功耗也比较大。而集成电路构成的发射和接收电路具有调试简单,可靠性好,抗干扰能力强,体积小,功耗低的优点,所以优先采用集成电路来设计收发电路。 3.1 超声波发射电路 超声波发射电路包括超声波产生电路和超声波发射控制电路两部分,可采用软件发生法和硬件方法产生超声波。在超声波的发射电路的设计中,我们采用电路结构简单的集成电路构成发射电路:

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

/**程序:基于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();?//测量距离

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

综合性课程设计报告基于proteus仿真软件的超声波测距报警控制器设计 院系:计算机与通信工程学院 专业:电子信息工程 学号: 姓名: 指导教师: 设计时间:2012/6/27 综合课程设计任务书

专业:电子信息工程班级:4091603: 设计题目:基于proteus仿真软件的超声波测距报警控制器设计 一、设计实验条件 keil C和proteus仿真软件 二、设计任务 1)总体功能设计 2)硬件电路设计 3)软件设计 4)工作总结 三、设计说明书的容 1.设计题目与设计任务(设计任务书) 2.前言(绪论)(设计的目的、意义等) 3.主体设计部分(各部分设计容、总结分析、结论等) 4.结束语 5.参考文献 (答辩时间18周星期日晚7:30,地点:综合楼1313室) 四、设计时间与设计时间安排 1、设计时间:2周 2、设计时间安排: 熟悉实验设备、实验、收集资料:2 天 设计计算、绘制技术图纸:5 天 编写课程设计说明书:2 天 答辩:1 天 目录

一、设计题目 (2) 二、设计任务及要求 (3) 三、设计容 (3) 1.绪论 (3) 2.总体方案 (4) 2.1 总体设计方案 (4) 2.2超声波测距框图 (4) 3.系统硬件设计 (5) 3.1 硬件设计方案 (5) 3.2 各主要模块的硬件设计 (6) 4.系统软件设计 (10) 4.1 程序设计 (10) 4.2 程序流程图 (10) 四、结束语 (13) 五、参考文献 (13) 附录A 系统仿真图 (14) 附录B程序代码 (15) 一、设计题目 基于proteus仿真软件的超声波测距报警控制器设计

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

基于单片机的超声波测距系统的研究与设计 发表时间:2010-05-26T14:50:36.437Z 来源:《赤子》2010年第2期供稿作者:贾岩孙彩英 [导读] 随着汽车的日益普及,停车场越来越拥堵,车辆常常需要在停车场穿行,掉头或倒车 贾岩孙彩英(哈尔滨学院,黑龙江哈尔滨 150000) 摘要:简析超声波测踞原理,探讨基于单片机的超声波测距系统的研究与设计。 关键词:单片机;超声波;测距 随着汽车的日益普及,停车场越来越拥堵,车辆常常需要在停车场穿行,掉头或倒车。由于这些低速行驶的车辆与其他车辆非常的接近,司机的视野也颇受限制,碰撞与拖挂的事故经常发生,在夜间时则更加显著。为了确保汽车的安全,现介绍一种超声波测距离的报警装置,可有效的避免此类事故的发生。 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 系统结构 本系统由超声波发射、回波信号接收、温度测量、显示和报警、电源等硬件电路部分以及相应的软件部分构成。 3 超声波发射电路 在本系统中采用的超声传感器是一种开发型的,固有频率为40Khz。超声波发射电路如。 该电路采用由双非门组成的三点RC振荡电路,频率为40Khz,与非门A是超声波发射控制门,振荡器的振荡信号经4049放大后可直接推动超声波发射探头。二极管D1,D2起限制电压的作用,电容C1用于隔离直流。 4 超声波接收电路 超声波接收电路由以MC3403为核心的三级滤波放大电路和二极管的倍压稳流电路等组成。处理好的回波信号被送到ARM的A/D转换模块进行A/D采样,从而触发得到返回的时间。德州仪器公司的MC3403的具体引脚配置。 5 声光报警电路 声光报警电路AP8821来完成。AP8821是API型21秒一次性编程语音芯片。它具有高质量的录音功能,采用ADPCM制,声音信息存储在512K的EPROM中,6K取样频率能存储21秒的声音数据。AP8821避免采用复杂的电路,但是能录制出不同的声音。它的声音可以根据需要分14段录制,分段组合可达到长时间录音,效果并不是简单的音符曲调。而是极其逼真的话语或模拟声音。AP8821有两个PWM引脚,VOUT1与VOUT2直接驱动喇叭或蜂鸣器,电流输出引脚VOUT。通过一个NPN晶体管来驱动喇叭或蜂鸣器,不需要复杂的滤波和放大电路。具有自动平滑功能,在放音结束时消除噪音。 6 LCD显示部分 本设计显示部分采用字符型TC1602液晶显示所测距离值。TC1602显示的容量为2行16个字。液晶显示屏有微功耗、体积小、显示内容丰富、超薄轻巧、使用方便等诸多优点,与数码管相比,显得更专业、美观。 7 超声波汽车倒车防撞系统的软件设计 超声波传感器安装在汽车的尾部,其接收和发射传感器距离较近,之间容易有较强的干扰信号。为防止误测现象,在软件上采用延迟接收技术,一次提高系统的抗干扰能力。 系统软件设计采用模块化设计,主要包括主程序设计、T1中断服务子程序、INT0外部中断服务子程序、测温子程序、距离计算子程序、显示子程序、延时子程序和报警子程序设计等。 系统软件编制时应考虑相关硬件的连线,同时还要进行存储空间、寄存器以及定时器和外部中断引脚的分配和使用。定时器T1,T0均工作在工作方式1,为16位计数,T1定时器被用来开启一次测距过程以它的溢出为标志开始一个发射测量循环,T0定时器是用来计算脉冲往返时间,它们的初值均设为0。 系统初始化后就启动定时器T1从0开始计数,此时主程序进入等待,当到达65 ms时T1溢出进入T1中断服务子程序;在T1中断服务子程序中将启动一次新的超声波发射,同时开启定时器T0计时,为了避免直射波的绕射,需要延迟1 ms后再开INT0中断允许;INT0中断允许打开后,将提出中断请求进入INT0中断服务子程序,在INT0中断服务子程序中将停止定时器T0计时,读取定时器T0时间值到相应的存储区,同时设置接收成功标志;主程序一旦检测到接收成功标志,将调用测温子程序,采集超声波测距时的环境温度,并换算出准确的声速,存储到RAM存储单元中;单片机再调用距离计算子程序进行计算,计算出传感器到目标物体之间的距离;此后主程序调用显示子程序进行显示;若超过设定的最小报警距离还将启动扬声器报警;当一次发射、接收、显示的过程完成后,系统将延迟100ms重新让T1置初值,再次启动T1以溢出,进入下一次测距。如果由于障碍物过远,超出量程,以致在T0溢出时尚未接收到回波,则显示“ERROR”重新回到

51单片机超声波测距程序

//超声波测距,测距范围2cm-400cm; #include #include #define uint unsigned int #define uchar unsigned char sbit trig=P1^0; sbit echo=P3^2; sbit test=P1^1; //测试灯sbit dula=P2^6; sbit wela=P2^7; sbit BEEP=P2^3; uint timeh,timel,distance; uint ge,shi,bai,xiaoshu,flag,time; /*共阴极数码管不带小数点代码表*/

uchar code list[]={ 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , 0x39 , 0x5e , 0x79 , 0x71 }; /*共阴极数码管带小数点代码表*/ uchar code listtwo[] = { 0xbf,0x86,0xdb,0xcf,0xe6, 0xed,0xfd,0x87,0xff,0xef}; /*长延时函数*/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=100;y>0;y--); }

/*短延时函数*/ void delay20us() { uchar a; for(a=0;a<100;a++); } /*报警函数*/ void beer() { // BEEP=0; delay(10); } /*定时器初始化*/ void initime0() { TMOD=0x01; TH0=0;

stm32超声波测距程序

stm32超声波测距程序 单片机用的是STM32F103VC系列,超声波是淘宝买的一个模块,只有5个引脚,用起来很方便。 用的时候只需要其中4个脚,VCC,GND,TRIG,ECHO。 TRIG接PA8,OUT_PP模式;ECHO接PA9,IN_FLOATING模式。 #include "stm32f10x_heads.h" #include "HelloRobot.h" #include "display.h" void Tim2_Init(void); void TIM2_IRQHandler(void) { if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)==0) GPIO_SetBits(GPIOE,GPIO_Pin_12); else GPIO_ResetBits(GPIOE,GPIO_Pin_12); TIM_ClearFlag(TIM2, TIM_FLAG_Update); } int main(void) { u16 count; float length; BSP_Init(); Tim2_Init();//定时器初始化函数 LCM_Init(); delay_nms(5);

GPIO_ResetBits(GPIOA,GPIO_Pin_8); Display_List_Char(1,0,"distance:"); //PA8:Trig PA0:Echo while (1) { GPIO_SetBits(GPIOA,GPIO_Pin_8); delay_nus(20);//拉高超过10us,发射超声波 GPIO_ResetBits(GPIOA,GPIO_Pin_8); TIM2->CNT=0;//计数器清0 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==0);//等待ECHO脚高电平 TIM_Cmd(TIM2, ENABLE);// TIM2 enable counter [允许tim2计数] while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==1)&&(TIM2->CNTARR-10)); TIM_Cmd(TIM2, DISABLE); count=TIM2->CNT;//ECHO脚低电平后读取计数器的值,从而算出往返时间 length=count/58.0; Display_List_Char(1,9," "); Display_List_Float(1,9,length); delay_nms(200); } } void Tim2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM2);//复位TIM2定时器

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