《基于51单片机的超声波测距系统设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的超声波测距系统设计.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、完美 WORD 格式整理1 设计任务本文采用超声波传感器,IAP15 单片机以及 LCD 显示模块设计了一种超声波测距显示器, 可以实现测量物体到仪器距离以及显示等功能。是一种结构简单、性能稳定、使用方便、 价格低廉的超声波距离测量器,具有一定的实用价值。2 设计思路2.1 超声波测距2.1.1 超声波超声波是指频率在 20kHz 以上的声波,它属于机械波的范畴。近年来,随着电子测量 技术的发展,运用超声波作出精确测量已成可能。随着经济发展,电子测量技术应用越来越广泛,而超声 波测量精确高,成本低,性能稳定则备受青睐。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折
2、射现象,在进入介质后被介质吸收而发生衰减等。正是因为 具有这些性质,使得超声波可以用于距离的测量中。随着科技水平的不断提高,超声波测距技术被广泛应用于人们日常工作和生活之中。一般的超声波测距仪可用于固定物位或液位的测量,适用于建筑物内部、液位高度的测量等。超声 在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易 于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自 动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。 因此超声波测距在移动机器人的研究上得到了广泛的 应用。同时由于超声波测距系
3、统具有以上的这些优点,因此在汽车倒车雷达的研制方面也 得到了广泛的应用。2.1.2 超声波测距原理最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。超声波在空气中的传播速度为 340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离 s,即:s=340t/2 由于超声波也是一种声波,其声速V 与温度有关。在使用时,如果传播介质温度变化不大, 则可近似认为超声波速度在传播的过程中是专业资料分享基本不变的。如果对测距精度要求很高,
4、则应通过温度补偿的方法对测量结果加以数值校正。 声速确定后,只要测得超声波往返的时间, 即可求得距离。距离计算公式:S ?x?d = 2 =2()其中d 为被测物与测距器的距离,s 为声波的来回路程,c 为声波,t 为声波来回所用 的时间。其中声速c 与温度有关。C= 331.5+ 0.607T(2-2 )如果要提高测距精确度,则必须考虑温度的影响,也可取室温简化电路设计,将温度传感器作 为扩展电路,在力所能及的情况下完成。2.1.3 超声波测距模块HC-SR04HC-SR04 超声波测距模块可提供 2cm 至 400cm 的非接触式距离感测功能,测距精度可达 3mm 模块自身包括超声波发射器
5、、接收器与控制电路。实物如图2-1 所示:HC-SR04T 作原理及说明:图 2-1 HC-SR04 模块实物图1、给 Trig 触发控制信号 10 端口至少 10us 的高电平信号。2、模块自动发送 8 个 40khz 的方波,并自动检测是否有信号返回。3、有信号返回时,Echo 回响信号输出端口输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。4、两次测距时间间隔最少在 60ms 以上,以防止发射信号对回响信号的影响。如图 2-2 所示:lOuS 旳 TTLmtft号 睛坏发出 3 个 40KHZ 豚碑 m n n nm *IPI FI梗块内部 发岀佶号输岀口响佶号2.2 LC
6、D1602 显示屏回晌电平输出2 检测距藹威比例图 2-2 HC-SR04 工作原理LCD1602 显示屏实物如图 2-3 所示:图 2-3 LCD1602 显示屏LCD1602 电路原理图如图 2-4 所示:亠 丄o HrF中灯厂勺乂SUOs:?OCHHHUmcCCC 一 I U2QlslPMITI 锐 gumIrjr匸)o一Id.u.FrM IglpclIHIIrll驾dL*01Ecd 匕尹g三孑寸L|GNDONDivccvccR3 10Ki) 40P4.5igP2 7I) J8 P2.6 37P2?5址i呻n)d4 氏.2i)拆 12 V厂“)31 F44P2,7K P2.6 7 P2.
7、5SFTi7PM4呛 1 丄FvH:30)29o)P4.24AP3?1UK26 KUi)25PT?图 2-4 LCD1602 电路原理图2.3 IAP 单片机IAP15F2K61S2 单片机为增强型 8051CPU 具有 1 个单时钟/机器周期,其工作电压为 4.2V5.5V,速度比普通的 8051 快 812 倍;61K 字节片内 FLASH?序存储器,片内大容 量 2048 字节的SRAM 大容量的片内 EEPPOJM 擦写次数在 10 万次以上;一共有 8 道 10 位 高速 ADC 速度高达 30 万次/s , 3 路 PWM 还可当 3 路 DA 使用;共有 3 通道比较单元,内 部
8、高可靠复位,8 级可选复位门槛电压,彻底省掉外部复位电路;内部高精度 RC 时钟,内 部时钟从 5MH35MHz 可选,相当于普通8051 的 60MH420MHz 两组高速异步串行通信 端口,可以在 5 组管脚之间进行切换,分时复用可图 2-6 IAP 单片机引脚图当 5 组串口使用;各种接口扩展齐全, 一根 USB 线实现系统供电、程序下载及通信功能。单片机实物图及引脚图如图 2-5、图 2-6 所示:图 2-5 IAP 单片机实物图40 P4.5/ALE鹃 P2.7A15.-GGP2_3AO/PO.O 1AHF0.1 238 P2.$/A14/CCP1._337 P2.5/A13/CCP
9、0_336 P24/A12/ECL3.SS.2A2/P0.23A3/F0.34A4/PO.45A5/P0.56A6/P0.67A7/P0,78AXD2CCP1 ADCC/Pt.O 9TXD2/CCPO/ADC1 P1J 10ECI/SS AOC2/P1.2 11M0SI/A0C3/P1J 12 MISO ADC4 P1.4 13 ADC5/P1.5 14XTAL2/RX0 A0C6/P1.6 15XTALVTXD ADC7/P1.7 16SS3/MCLK0R5bP5 -4 17VCC 1?35 P2.3/M1/M0SL234 F2.2/AWMrSO_233 P2.1/A9 SCLK.232 P
10、2.D/AarRSTOUT_LOW31 卩 4.削 HD30 P4,2/WR29 P4J/M1S0_328 P3.7/INT3/TXD_2/CCP2fCCP2_227 P3.6/INT2;RXD2rCCPl_226 P/TirrOCLKQQCPQ-25 P3.4/TaniClK0ECI_2AP15F2K2641PS3.23/INT123 P3.2;INT022 P3.1/TXDrT221 P3.0/RX01NT4ZT2CLKO单屮图 2-6 IAP 单片机引脚图完美 WORD 格式整理2.4 单片机最小系统对于一个单片机系统,能够工作的前提是具有最小系统模块,最小系统一般包括单片PO O I
11、P0.12 P02 3P03 4 P0.45Pi5 6 P0.67 P0.7SPl.i4 XT1.E2,XTAtl RSH7vg P5.39GNDTUlPO.O(AO)PC) l(A1) PO2(A2) 卩 G3(A3) P0.4(A4)PO.5(A5) PO6(A6) P O,7(A7)Pl.O(ADCO) PlJ(ADCl) P1.2(ADC2) P1.3(ADC3) P1.4(AD4) Pl 5(AD P3.7(INT3 P3.6(NT2)P3.5(T1) P14(T0) P3.3(INTI i P3,2(INTD)P3J(TXDtP3.O(RXDJ1030P2.738i7 363534
12、33323130P”GNDRETPl.110 PT 1Pl.12P25P 工 4 P2.3pr r P2J卩 工P4.4P4229 P4J28P3.727625 PJ.426P35XTALJGNDXTAL224 INTI23 INTO22 TXDRXDGND机、晶振电路、复位电路。单片机的复位及晶振电路都是常见的接法,电源用一个按键控 制接通与断开,使得程序下载变得方便电路如图 2-7 所示:专业资料分享2.4.2电源电路图 2-7 单片机最小系统此最小系统中的电源供电模块的电源可以通过计算机的 供电模块供给。2.4.1时钟电路USB 口供给,也可使用外部稳定的5V 电源单片机晶振的作用是为系
13、统提供基本的时钟信号。内部时钟电路的晶振频率一般选择 在 4MHZ12MH 之间(本设计选用 12MHZ,外接两个谐振电容,该电容的典型值为如图 2-8 所示:30pF。ClXIA30L pF |rZh-CRYSTALC2J nJI1XIAJii珈卜GN1|243 复位电路图 2-8 时钟电路按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、6高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。如图RST 也被拉到2-9 :2.4系统整体设计图 2-9 复位电路系统主要由三部分组成:单片机,超声波测距模块和LCD1602 显示屏构成。单片机在控制中作为控制器,用于对超
14、声波模块的控制和计时,显示电路主要实时显示测量数值。 系统框图如图 2-10 所示:图 2-10 系统框图3原理图根据前面对设计的各个相关模块的分别讲述,再结合单片机的引脚功能,从而得到系统整体电 路图,如图 3-1 所示:rr二rMIBIZ.m| -门 TCAd lKX.7PCU0 Ir .l:叫;打l*DJ4用 10 出刖Pfl 1HI)r4 rM Fl rP2.7FT 啊乱踊?LIU户 ll IM 1; PL43丨-P 询小费PI HACl|丁P5.44.Mi2 IR3(AII惟説冉 M r卍 IS 町|比附 3P41 RO JJE |PliJbtDCit-1 r *. T hP|3R|
15、 AElCllAd XL 1 PI Aj VTAl 林r.7|INT1) r P.NIN 1 5 Fl TI | LFMT 町 rn.2llNT p R.hTKC)-p 讪艮 g -!-FMT F= 1,wP| XTAlrl)VCC P3Jm3T=H.XDINTO TXT1盘匸I* PI 6 IS1图 3-1 原理图在图 3-1 中,LCD1602 的 D0 到 D7 连接 10K 上拉排阻并外接到单片机的 P2.0 至U P2.7 端口, 用于显示所测量距离,超声波 HC-SR04 的 trig 端、echo 端分别接在单片机的 P0.0、 P3.2 这两个端口,利用单片机的计时器将时间计算
16、出来。最后通过程序设计将计算出的距离显示到 LCD1602 液晶显示屏上。4 PCB图生成 PCB 如图 4-1、4-2 所示:U2SIP1 冷打审B口心耶轻 QC3R1 $C1URYSi IALQC2(O图 4-1 PCB 原理图图 4-2 PCB 图完美 WORD 格式整理5程序流程图5.1 主程序设计这次软件设计使用的软件是 Keil uVision4 。Keil 4 集成开发环境是一个窗口化的软 件开发平台,它集成了功能强大的编辑器、工程管理器以及各种编译工具Keil 4 使用简单、功能强大,是设计者完成设计任务的重要保证,还能加速单片机应用程序的开发过程。主程序首先是对系统环境初始化
17、,设定定时器TO 工作模式为 6 位定时计数器模式,置位总中断允许位 EA 并给显示端口 P2 清 0。然后调用超声波发生子程序送出一个超声波 脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距器会有一个最小测距离的原因)后,才打开外中断 0 接收返回的超 声波信 号。由于采用的是 12MHZ 的晶振,计算器每计一个数就是 1us,,当主程序检测到接 收成功的标志位后,将计数器 T0 中的数(即超声波来回所用的时间)按计算公式计算, 即可得被测物体与测距器之专业资料分享间的距离,设计时取声速为超声波测距程序见附录。5.2 程序流程图主程序流程
18、图如图 5-1 所示:开始340m/s。系统初始化Lr ri发射超声波脉冲等待反射超声波计算距离显示结果 0.5s图 5-1 主程序流程图测距程序流程图如图 5-2所示:图 5-2 测距程序流程图完美 WORD 格式整理6设计感想在本次实训中,我们首先第一周进行了 FPGA 的学习,由老师带领我们学习 FPGA 的基 本操作以及简单电路的设计,其中我认为最为主要的就是让我们认识到了FPGA 的发展现状以及发展前景。通过了解,我们知道了FPGA 的方便,可以用语言来实现我们需要的功能,进而自动实现其电路的设计,帮助我们简化了很多步骤,在这一周的学习当中,我们首先学会了 如何用语言来实现流水灯的设
19、计,以及其基本的设计思路和方法还有 quartus2 软件的使用方法,继而学会了如何捕捉上升沿,这个很重要,对于以后我们工作能够起很大的作用,最主要的是我们学到 了很多电路设计方面的经验,这些是我们平常在书本上学不到的,能够帮助我们在以后的工作当中节 省很多的时间,创造了很多捷径,能够提高我 们的效率。在第二周的时间里,我设计了超声波测距电路,首先当我拿到这个题目时,对于这个课题只有一些初步的想法,通过理论课的学习对此有一个初始的印象, 然后就是去找资料, 了解到了我们要设计的这个电路具体的实现原理、所需模块等方面,以及他的组成部分, 基于这个单片机,我们首先就要设计它的最小系统,然后我们还需
20、要超声波传感器。并且还需要对于测完的距离进行显示,这时 就需要显示装置,这里我们用的是LCD 1602A 显示屏。拿到这些装置以后,我并不会连接,所以就需要认识每个器件的引脚功能,工作原理, 引脚的定义以及接法等等,然后我们就要进行绘制原理图,然后生成PCB 板,在确认无误之后才能进行焊接,在焊接过程当中我们要注意的是焊点是否焊严,焊锡不能过多,走线要符合布局,在开始这次的设计工程当中,没有安排好布局,把LCD1602 勺数据口和单片机引脚接反,这是一个失误的地方,在老师指导下纠正过来。我在焊接完板子之后,要进行测试,首 先测试显示装置,由于没有电位器,我们就要计算电阻,使显示器能够正常工作,
21、有适当的对比度, 亮度等等,在我们进行测试的时候,换了好几个电阻才调整到了适当的亮度。在各模块都工作正常后,我们要进行程序的编写,要考虑很多方面,例如接口, 语法,逻辑等有没有错误,这些是很必要的,然后进行调试,更改程序等等。本次设计的 超声波测距电路经过测试,误差在 1CM 左右是 0- 2CM 里可以接受的范围。经过本次实训,使我收获良多,首先我们认识到了FPGA 的发展现状,然后我们了解了电路设计制作的基本流程,让我对这方面的工作有了一定的认识,帮助我们规划以后的工作,这些 是我们本次实训的最大收获。而且,在设计超声波测距电路过程中我查阅了很多的资料,自主的学习 了很多以前没有注意但是实
22、际需要的东西,帮助我们完善了知识储备,也在一定程度上增强了了我们专业资料分享实际的工作能力,这些是我们在课堂学习当中没办法实 践的方面,然而在以后我们走上工作岗位上这些却是很重要的东西,所以很感谢这次生产 实习让我学到了这么多的东西,做出了实物也使我很有成就感,对这方面的内容有了更大 的兴趣以及了解,能够在我走上工作岗位之前给自己提个醒,未雨绸缪,提早做好工作之 前的准备。参考文献1 张岩,张鑫单片机原理及应用.机械工业出版社,201562 范立南.单片机原理及应用教程.北京大学出版社,2013.3 楼然苗,李光飞单片机课程设计指导北京航空航天大学出版社,4 俞国亮.MCS-51 单片机原理及
23、应用.清华大学出版社,2008. 瞿金辉,周蓉生超声波测距系统的设计中国仪器仪表,2007. 8. 谭浩强.C 语言程序设计(第四版).清华大学出版社,2011. 11 7周凯,赵望达,赵迪.高精度超声波测距系统.测试技术卷,20072012.完美 WORD 格式整理附录A器件清单:器件清单如表 A-1 所示:元件说明数量IAP15F2K61S2单片机1HC-SR04超声波模块1LCD1602液晶显示屏1CH340GUSB 转 TTL 下载器1按键开关四脚1自锁开关六脚1瓷片电容30pF2电解电容10uF1滑动变阻器 10310KQ1排阻 A102J10KQ 上拉电阻1电阻10KQ1电阻300
24、 Q1晶振12MHz1导线若干表 A-1 器件清单专业资料分享附录B程序代码:#in elude #i ncludevi ntri ns.h#defi ne uint un sig ned int #defi ne uchar un sig ned char uint s,time,a,b,c,d;Asbit RS=P36;sbit RW=P3A5; sbit EN=P3A7; sbit Trig=P0A1;sbit Ecoh=P0A。;uchar code dis_code1=Dista nee Test: uchar dis_code2=0.00M; uchar cache3=0,0,0;
25、void delay_ms(uint timer)uchar i=0; while (timer-)for(i=600;i0;i-);void Delay15us( un sig ned char i)12.000MHz_nop_();_nop_(); i = 42;完美 WORD 格式整理while (-i);void wait()RS=O; RW=1; EN=O;_nop_();_nop_();_nop_();EN=1;P2=0XFF;while(P2&0X80);EN=O;void write_lcd_com(uchar com)wait(); RS=0; RW=0; EN=0;_nop
26、_();EN=1;P2=com; delay_ms(5); EN=0;专业资料分享void write_lcd_data(uchar dat)wait(); RS=1; RW=0; EN=0;_nop_();EN=1; delay_ms(5);P2=dat;EN=0;void led n it()EN=0;write_lcd_com(0x38); delay_ms(1); write_lcd_com(0x06); delay_ms(1); write_lcd_com(0x0C); delay_ms(1);write_lcd_com(0x01); delay_ms(1);void chaoshe
27、 ngbo(void)time=TH0*256+TL0;TH0=0;TL0=0;s=time*0.17; ?CM cache0=s/1000; cache1=s/100%10; cache2=s/10%10; dis_code20=cache0+0; dis_code22=cache1+0; dis_code23=cache2+0;write_lcd_com(0x80+0x40);write_lcd_data(dis_code20); write_lcd_data(dis_code22); write_lcd_data(dis_code23);void main()uchar i=0;lcdn
28、i t();AUXR &= 0x7F;/定时器时钟 12T 模式TMOD &= 0x00;TMOD |= 0x11;/ 设置定时器模式/ 定时器工作方式 1ET0=1;/定时器 0 中断允许EA=1;/开总中断write_lcd_com(0x80);for(i=0;i15;i+)write_lcd_data(dis_code1i); delay_ms(1);write_lcd_com(0x80+0x40); for(i=0;i16;i+)write_lcd_data(dis_code2i); delay_ms(1);delay_ms(2000); i=0;while(1)while(1)Trig=1;Delay15us();Trig=0; while(!Ecoh);TR0=1;while(Ecoh);TR0=0;chaoshe ngbo(); delay_ms(1000);void timer0() in terrupt 1 /外部中断 1 函数time=TH0*256+TL0;TH0=0;TL0=0;