还剩40页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
存档日期存档编号本科生毕业设计(论文)论文题目基于单片机的超声波测距仪姓名学号108321015系别机电工程系班级机制专业机械设计制造及其自动化指导教师江苏师范大学科文学院教务处印制江苏师范大学科文学院毕业设计(论文)任务书专业机械设计制造及其自动化班级12机制Z姓名
1、设计题目基于单片机的超声波测距仪
2、设计任务要求及主要原始资料
1、设计制作超声波测距仪模型;
2、编写调试程序;
3、完成实物及程序的调试并使其正确的运行;
4、编写毕业设计说明书;
5、修改毕业设计说明书;
6、准备答辩
三、设计时间2014年3月14日至2014年6月3日指导教师(签名)教学院长(签名)摘要随着科技的发展、自动化程度的提高以及电子产品的普及,电子测距产品也走进了人们的视野相对于普通的测量工具,它具有数字式显示、测距精准以及可智能化控制等优点本系统是利用STC89C52单片机和超声波测距模块进行设计制作的智能化测距仪,主要实现距离的检测、数字式显示,以及超限报警等功能基于单片机的超声波测距仪是以单片机为控制核心,通过超声波测距模块对被测物体发射超声波,利用超声波在空气中的传播速度和发射到接收到超声波所用时间计算得到距离测距原理简单、容易实现,并且在生产生活中可以得到广泛使用和推广,具有实际性意义关键词单片机STC89C52,超声波传感器,基于单片机的超声波测距仪UltrasonicrangingAbstract Withthedevelopmentofscienceandtechnologytheimprovementofautomationandthepopularityofelectronicproductselectronicproductrangealsowentintopeopleshorizons.Comparedwiththecommonmeasuringtoolithasadigitaldisplayrangingprecisionandintelligentcontroletc.ThissystemisusingSTC89C52MCUandultrasonicrangingmoduletodesigntheintelligentrangefindermainlyrealizethedistancedetectiondigitaldisplayandtransfinitealarmandotherfunctions.Basedonsinglechipultrasonicrangefinderbasedonsinglechipmicrocomputerascontrolcoretheobjecttobemeasuredbytheultrasonicrangingmoduleoflaunchultrasonicwaveusingtheultrasonicvelocityinairandlaunchtimetocalculatethedistanceusedtoreceivetheultrasonic.Rangingprincipleissimpleeasytoimplementandcanbewidelyusedinproductionandlifeandthepromotionhaspracticalsignificance.Keywords:microcontrollerSTC89C52ultrasonicsensorsultrasonicrangefinderbasedonsinglechip.目录TOC\o1-3\h\uHYPERLINK\l_Toc11282摘要IUltrasonicrangingII第一章绪论
11.1需求分析
11.2可行性分析2第二章单片机的概述
32.1单片机的含义及组成
32.2单片机的发展
42.3单片机的特点
42.4单片机的应用5第三章基于单片机的超声波测距仪总体设计方案
63.1超声波测距仪的系统设计
63.2主控制器
63.3显示电路
73.4超声波测距模块
83.
4.1HC-SR04超声波测距模块的特性
83.
4.2HC-SR04超声波测距模块的引脚
83.
4.3HC-SR04超声波测距模块的工作原理
93.
4.4超声波时序图
103.
4.5HC-SR04超声波测距模块的电路设计10第四章基于单片机的超声波测距仪的硬件设计
124.1电源指示灯电路
124.2单片机主板电路
124.
2.1时钟电路
124.
2.2复位电路
134.3数码管显示电路
134.4距离测量电路
144.5蜂鸣器电路
154.6系统原理电路16第五章基于单片机的超声波测距仪的软件设计
175.1主程序
175.2距离测量子程序
185.3距离显示子程序
215.4超限距离调节子程序
225.5超限报警子程序25总结27致谢27展望27附录A28附录B29参考文献36第一章绪论本文主要讲解的是基于单片机的超声波测距仪,它是以STC89C52为核心,以超声波测距模块为距离传感器的测距产品,其应用范围广泛,融入到各行各业
1.1需求分析超声波测距仪广泛被用在建筑、工业生产、日常生活、军事、灾难搜救、水文液位测量、现场的位置监控、车辆倒车避障、移动机器人探测定位等领域,是智能化产业中的杰出产品传统的测距仪器是普通的尺子,虽然它的价格十分便宜,但它的局限性很多,使用不方便,并且很多地方无法测量超声波测距仪是以单片机为核心,以超声波测距模块为基础,具有使用方便、操作简单、局限性少、精度高、测量范围大,并且可以数字显示出测量距离等特点,给人们的生产生活,以及灾难搜救,军事等带来了巨大的方便需求报告名称超声波测距仪功能测量并显示距离,也可以作为距离控制器,距离报警器性能3mm距离偏差输入一个是设定键一个加键,一个减键,用来调节报警距离输出距离显示,超限报警基于单片机的超声波测距仪的未来21世纪,单片机已经普遍应用与生产生活各个方面超声波测距仪作为其中产品已经受到广大社会的认可和欢迎超声波测距仪是一种非接触式测距仪,避免了很多测量上的局限,而且受到外界影响很小,在粉尘污染、潮湿、高温、有腐蚀气体等恶劣的环境中也可以正常使用,同时其系统具有高稳定性,高可靠性,以及使用寿命长等优点在科技前沿,不少研究人员利用超声波测距自动化控制使机器人避障行走,这在灾害救援上起着重要的作用;在汽车倒车距离报警上的作用也是举足轻重的基于单片机的超声波测距仪作为自动化控制的产品跟的上科技的步伐,走的进人们的生产生活,称得上是科技发展的必需品并且可以不断完善、不断的突破,可以应用于更广、更前卫的事业中去
1.2可行性分析可行性分析包括元器件的使用和购买是否方便、产品的开发是否存在技术难题和市场需求等
(1)基于单片机的超声波测距仪,由STC89C52单片机、超声波测距模块、LED数码管等部件组成,元器件价格便宜且通用性强,STC89C52是MCS-51系列中的一种较为普遍的一款单片机,它具备了51单片机的优点,又在性能上做了完善和提高超声波测距模块也已经模块化、标准化,使用起来非常方便LED数码管以及其它附件市场上供货畅通
(2)软件使用C语言编写,本设计采用为单片机专门开发了KeilC软件进行编程,程序书写方便便、可行性强研究不存在技术难题
(3)较大市场需求量,效益方面相当可观超声波测距仪除了测量距离以外,还可以应用于各种距离控制电路和限距报警电路应用前景广阔
(4)基于单片机的超声波测距仪的特点1)价格低廉、灵动性好;2)使用、操作简单,可以数字显示;3)自动化控制方便;4)完善很多测量的局限性;5)体积小,重量轻,能耗低;6)可塑性好,可以作为很多大型产品的附件第二章单片机的概述单片机是单片微型计算机http://baike.baidu.com/view/
22503.htm的简称,它是将中央处理器、存储器、定时器/计数器、中断系统、输入/输出端口等工作部件集成在一块集成电路芯片上的微型计算机(单片机)单片机在是一种智能化控制器,现代人类生活中处处都能看到单片机的产品,智能控制、MP
3、交通灯、计算器http://baike.baidu.com/view/
42510.htm、家用电器、电脑http://baike.baidu.com/view/
30816.htm以及手机等都含有单片机http://baike.baidu.com/view/
1012.htm它具有质量轻、使用灵活、体积小、可靠性高、价格便宜等特点它起初应用在工业控制领域现代机电类专业人员必须熟练掌握单片机知识,灵活运用单片机技术
2.1单片机的含义及组成单片机是一个集成化的计算机,是一个小型的控制设备通常我们把中央处理器(CPU,CentralProcessingUnit)、ROM/RAM、定时器/计数器等计算机的主要部件集成在一块电路芯片上,这就形成了单片机,如图2-1所示图2-1单片机逻辑结构从图1-1中可以看出,整个单片机的核心部件是中央处理器(CPU,CentralProcessingUnit)它通过总线和其它部件连接并进行数据交换,时钟电路给它提供系统工作的时间,以使各个部件统一协调工作它内部的工作部件有运算器和控制器两大部分,主要功能是完成算数和逻辑的运算与控制存储器是单片机系统中具有记忆功能的电子部件,它是由数据存储器和程序存储器组成数据存储器主要用于储存程序运行期间所用到的数据信息程序存储器主要用于保存常数、应用程序和表格,同时还可以用于保存程序执行时用到的数据单片机http://baike.baidu.com/view/
1012.htm内部的程序寄存器可以扩展的地址空间为64KB因为内部程序不需要改动,要求稳定性、可靠性要高,通常选用只读存储器http://baike.baidu.com/view/
132973.htm作为单片机内部的程序寄存器的扩充定时器/计数器是单片机中重要的部件,主要用于实现定时/计数,并通过定时或计数结果对所要操作的对象进行控制串行端口的主要作用是实现了单片机与外设进行数据的交换时钟电路主要用于产生单片机工作所需要的时钟信号,它由两个部分组成,分别是振荡器ALE信号和时钟发生器中断控制系统是单片机为了满足各种实时控制需要而设置的,是重要的输入输出方式比如定时器/计数器的溢出、外部接收到中断信号、单片机内部一些突发的事件以及单片机掉电、故障等单片机中断系统进入中断进行处理在51单片机中设有5个中断源,我们可以通过对TCON、SCON、IE和IP的编程实现对中断的控制管理系统总线(BUS)是计算机各个工作部件之间传送信息的公共通道
2.2单片机的发展1970年微处理器研制成功后,随后出现了单片机早期的单片机都是4位或8位的4位单片机广泛应用于生活用品中,比如智能控制电子玩具、家用电器、计算器等领域8位单片机功能性强,价格适中,软硬件资源丰富,被广泛应用在仪器仪表、工业控制、智能接口等领域如今在生活中也随处可以看到51单片机系列的身影20世纪80年代以后,技术水平大力提升,集成电路的集成度有了很大提高,16位单片机http://baike.baidu.com/view/
1012.htm开始问世,在当时高速复杂的控制系统中,通常使用的都是16位单片机,但因为价位过高没有得到很广泛的应用90年代后由于IT技术发展的推动,单片机http://baike.baidu.com/view/
1012.htm技术得到了巨大提高ARM处理器进入主流市场,并且得到广泛应用,32位单片机http://baike.baidu.com/view/
1012.htm迅速取代16位单片机受到了人们的亲赖如今大家所使用的智能手机很多都是使用的ARM单片机
2.3单片机的特点
(1)系统内部结构简单,实现模块化;
(2)体积小、成本低、环境适应能力强;
(3)抗干扰能力强;
(4)控制能力强,速度快;
(5)低功耗,低电压;
(6)外部扩展能力强;
(7)具有高的可靠性;
(8)生产产品易于携带
2.4单片机的应用单片机应用在我们生产生活中的各个领域,主要应用的领域有
(1)仪器仪表;
(2)商业营销领域;
(3)家用电器领域;
(4)办公自动化领域;
(5)航空航天领域;
(6)网络和通信领域;
(7)专用设备的智能化管理及过程控制第三章基于单片机的超声波测距仪总体设计方案
3.1超声波测距仪的系统设计基于单片机的超声波测距仪用STC89C52的单片机,作为整个电路的控制主要控制部件,超声波测距模块为测距传感器,LED数码管显示,蜂鸣器报警,系统设计图框图如图3-1所示图3-1系统设计方框图工作过程通过超声波测距模块获得的从基点到被测物体的距离,并将其传给STC89C52单片机进行处理,经过SCT98C52处理后,再把距离传给LED数码管显示,并根据距离设定值控制距离,必要时还可以控制蜂鸣器报警
3.2主控制器STC89C52单片机片内含有8KB的可编程Flash存储器,是一种8位控制器,它具有读写速度快、低功耗的优点,并且可直接使用串口下载,下载速度一般在几秒到几十秒之间STC89C52采用的是经典的MCS-51内核,在原有的基础上增加、改进了很多51单片机不具备的功能同时该芯片性价比高,故本设计选用的主控制器是STC89C52单片机STC89C52的引脚如图3-2所示图3-2STC89C52的引脚图
3.3显示电路LED数码管是由8个发光二极管组成的数码管可以分为共阴极和共阳极两种,共阳极数码管的公共端口接在高电平上,一般情况下需要通过开关三极管接在+5V电源上,当接通电源时数码管被点亮,共阴极数码管的公共端口接地方能点亮数码管同时因为数码管的字段是由发光二极管组成,所以在数码管的段选端接上限流电阻LED数码管性价比高,使用方便,是应用非常广泛的显示器本设计采用4位共阳极LED数码管,从并口输出段码,LED显示原理图如图3-3所示图3-3LED数码管原理图
3.4超声波测距模块市场上超声波测距模块有很多不同的种类,本系统采用HC-SR04超声波测距模块,此模块由超声波发射器,超声波接收器以及超声波控制电路三部分组成模块的非接触式距离测量范围为10mm-3000mm,测量的精度可达高到3mm超声波模块实物如图3-4图3-4超声波模块实物图
3.
4.1HC-SR04超声波测距模块的特性
(1)工作电流2mA以下;
(2)工作电压
4.5V~
5.5V,但绝对不允许超过
5.5V,以免烧坏元器件;
(3)测量距离范围测量最小距离为4mm,最大距离为3000mm,误差4%,数据连续输出,不需要任何设置;
(4)功耗电流功耗电流的范围是1mA~20mA;
(5)高精度精度可达3mm;
(6)工作温度0~100℃;
(7)存放温度-40~120℃;
(8)外形尺寸45*20*15mm
3.
4.2HC-SR04超声波测距模块的引脚HC-SR04超声波测距模块有4个引脚,如图3-5所示图3-5HC-SR04超声波测距模块的引脚如图3-5所示,其中端口Vcc提供+5V电压,GND为地线,TRIG是触发控制信号输入端,ECHO是回响信号输出端
3.
4.3HC-SR04超声波测距模块的工作原理单片机首先发出触发信号触发超声波测距模块工作,触发后,模块内部发出8个40kHz的脉冲并且检测是否接收到回波,如果接收到回波发射器立即向指定方向发射超声波信号,当信号发出时开始计时,碰到被测物体后就立即返回来,接收头接收到信号后产生毫伏级的微弱电压信号,电压信号传到单片机中定时器立刻停止计时根据计时器http://baike.baidu.com/view/
928508.htm记录的时间t,和超声波在空气中的传播速度,超声波在空气中的传播速度为340m/s,由此就可以计算出发射点距被测物体的距离S,即:S=340t/2图3-6是相应的系统框图图3-6超声波测距原理图框
3.
4.4超声波时序图图3-7超声波时序图如图3-7所示首先要由主控制器提供一个触发信号信号是10μs以上的高电平,当超声波测距模块被触发后,在超声波模块内部就会由4069反相器整合处理主控制器提供的40kHz的脉冲信号,接着循环发出8个这样的高电平周期信号发出并检测回波,只要检测到有回波信号,就会输出回响信号,同时触发主控制器计时并将回响信号置“1”,输出回响信号持续高电平的时间与基点到被测物之间的距离成正比由此通过输出回响信号的脉冲宽度,计算出被测量的距离
3.
4.5HC-SR04超声波测距模块的电路设计
(1)超声波的发射和处理由主控制器产生40kHz的脉冲,利用4069反相器对40kHz频率信号进行调整,使超声波传感器产生谐振,以供超声波模块使用发射电路图如图3-8所示图3-8超声波发射电路图
(2)超声波的接收与处理HC-SR04超声波测距模块的接收头采用UCM40R(与发射头配对),接收头接收到超声波信号之后,通过内部电路,将脉冲信号转变为电压信号,因为获得的电压信号很微弱,故需要经放大器放大,本模块采用带有差动输入的LM324放大器,它比常规运算放大器在各个方面优点都要显著LM324运算放大器将微弱的电压信号进行放大,之后会转变为较强的电压信号,促使信号触发回响信号输出端由“1”变为“0”,送至单片机处理,使得定时器停止计时超声波接收电路图如图3-9所示图3-9超声波接收电路图第四章基于单片机的超声波测距仪的硬件设计超声波测距仪的硬件设计电路包括电源指示电路、主板电路、数码管显示电路、超声波测距电路、蜂鸣器报警电路等
4.1电源指示灯电路电路说明电源开关按下,发光二极管点亮,表明电路处于通电状态,电源开关复位,即电路断电,发光二极管熄灭电路中为硅管发光二极管,它的正常工作电流为3mA~10mA左右,正向压降约为
1.7V,电流过大会烧坏二极管,电流过小二极管的亮度减弱因此在电路中需要连接电阻,电阻阻值不易过大电路中电阻被称为限流电阻,因为发光二极管正向压降为
1.7V,根据欧姆定律I=U/R可以求出电阻的范围为330Ω~
1.1kΩ左右本系统为了使二极管发光强度高,故选用330Ω电阻电源指示灯电路图如图4-1所示图4-1电源指示灯电路图
4.2单片机主板电路主板电路是单片机最基本的电路,又被称作最小系统,它的主要作用是为单片机提供标准的时钟,以及使单片机初始化主板电路包括时钟电路、复位电路等
4.
2.1时钟电路时钟电路为单片机提供时钟信号,使得单片机能够按照一定的时序进行稳定的工作,它是由晶振和电容两部分组成晶振的频率即时钟电路的频率,它决定着定时器的溢出时间电容则在电路中起滤波作用时钟电路有两种震荡方式内部震荡电路和外部震荡电路根据设计需要,采用内部方式;因为本设计用到了定时器,因为单片机输出的震荡脉冲为12分频,故为了减少计算量,故采用频率为12MHz的晶振;由于晶振频率为12MHz,属于高频波,电容在电路中起到滤波作用,高频选用小电容,低频选用大电容,故在本设计中电容选用30pF内部震荡电路如图4-2所示图4-2内部震荡电路
4.
2.2复位电路复位电路是一种用来使电路恢复到起始状态的电路设备,它是单片机的初始化操作它的操作原理与计算机类似,只是启动原理和手段有所不同在单片机在开机和系统出现问题时,可以使用复位键使其恢复到起始状态要使单片机成功复位,需要在单片机的30引脚ALE提供高电平信号,高电平信号必须产生并保持24个晶振周期(两个机器周期)以上,即在30引脚ALE上输入脉冲宽度超过2个机器周期的正脉冲复位信号复位方式一般有上电复位、按键手动复位两种方式,根据设计需要,本系统采用上电复位方式,上电复位电路如图4-3所示图4-3上电复位电路
4.3数码管显示电路电路功能用来显示测量距离、极限距离的十位、个位以及设置状态标志等电路说明本系统显示电路采用4位一体共阳极数码管显示方式,P
0.0~P
0.3口控制数码管的位选信号,P2口控制数码管的段选信号工作原理数码管实际上是由二极管组成的,一位数码管由8个二极管组成,故显示原理和二极管类似当单片机P
0.0~P
0.3口为低电平时,位选端选通,点亮相应的数码管位,当P2口为低电平时,根据段选码显示相应的数字电路原理显示电路由四个上拉电阻、一个4位一体共阳极数码、四个三极管、8个限流电阻组成由于P0口与其他端口不同,是开漏输出,故应接上拉电阻,本系统选用
4.7KΩ上拉电阻数码管是此电路的显示元件,三极管在电路中的作用是开关作用,当P0口输出低电平时,三极管导通,为数码管提供高电平限流电阻是为了限制过大电流烧坏二极管,本电路选用330Ω电阻,既能保证数码管亮度,又不会损坏数码管LED数码管显示电路如图4-4所示图4-4LED数码管显示电路
4.4距离测量电路超声波测距仪设计采用HC-SR04测距模块,超声波测距模块的触发信号口Trig和输出回响信号Echo口分别接在P3口的P
3.2与P
3.3电路功能距离测量电路主要负责测量测量系统到被测物体的距离,并将信号发送至单片机中进行信号的处理电路工作原理超声波测距模块通过发射端向被测物体发射出长约6mm,频率为40kHz的超声波信号,一旦发射超声波信号,立即触发单片机进行计时处理,定时器T0开始计时,超声波在空气中传播,接触到被测物体信号返回,接收头实质上是一种压电效应的换能器它接收到信号后产生毫伏级的微弱电压信号电压信号传到单片机中使得定时器T0停止计时由于超声波在空气中的传播速度为340m/s,根据发射和接收的时间差计算出发射点到被测物体的实际距离S,即S=340t/2距离测量电路图如图4-5所示图4-5距离测量电路图
4.5蜂鸣器电路蜂鸣器分为两种一种是有源蜂鸣器,另一种是无源蜂鸣器,区别在于有源蜂鸣器一般内部含有内部震荡器,无源蜂鸣器中不含内部震荡器触发有源蜂鸣器发声只需给它通入额定电压就可以了;而想要触发无源蜂鸣器发声,必须接在音频输出电路中才能够发声,它的原理和电磁扬声器原理类似本设计的报警系统选用的发声元件是有源蜂鸣器工作原理当测量距离小于设定值时,蜂鸣器接通报警,当测量距离超过设定值时,蜂鸣器关闭,报警停止电路原理本报警系统电路采用一个蜂鸣器、一个三极管、一个电阻实现报警功能因为蜂鸣器在工作时需要较大的工作电流,单片机引脚提供的电流无法直接驱动蜂鸣器工作,所以必须要在电路中增加放大电路,一般采用三极管放大电流就可以了,本系统采用PNP型三极管放大电流蜂鸣器电路图如图4-6所示图4-6蜂鸣器电路图
4.6系统原理电路系统原理电路显示了整个设计的电路原理,它包括了超声波测距模块的数据采集电路、距离显示电路、控制电路和主板电路等电路工作原理系统原理电路综合和各个部分电路,并使其协调统一工作,完成设计要求接通电路电源,电源指示灯点亮,各个部分进入初始化状态,超声波模块首先进行距离的测量,然后送往单片机中进行处理经过单片机处理后送入显示模块显示,并判断是否超限,如果超限,报警系统报警按键模块负责调节超限距离,在设置状态下,显示系统显示设置状态标志和超限值系统原理电路图如图4-7所示图4-7系统原理电路图第五章基于单片机的超声波测距仪的软件设计系统程序主要包括主程序,距离测量子程序,超限距离调节子程序,距离显示子程序,超限报警子程序等
5.1主程序主程序主要的功能是负责距离的测量、距离的显示、超限距离的调节及超限报警等子程序的协调统一运作其流程图如图5-1所示图5-1主程序流程图参考程序如下/******************超声波测距主程序******************/voidmain{P0=P1=P2=P3=0XFF;//P
0、P
1、P
2、P3口置高电平juli_cl;//超声波测距离函数led_display;//超声波测距处理距离显示函数t0_init;//定时器
0、定时器1初始化函数xj_d=20;//设置限距值初始值//超声波测距主循环while1{ifdelay_main==1//判断delay_main是否为“1”,为1时进入循环,每延时300ms扫描一次{delay_main=0;//delay_main清零,以便下次使用baojing;//报警函数juli_cl;//测距离函数led_display;//处理距离显示函数keystroke;//按键调节函数}}}
5.2距离测量子程序距离测量子程序的主要功能是控制超声波测距模块的发射和接收,计算出从信号发出到接收到信号所使用的时间,本系统采用定时器0作为超声波测距的计时器,它工作在工作方式1,所以它的定时时间T为其中,X是定时器装入的初值,是单片机的机器周期因为本系统采用12MHz的晶振,故=1μs,又由于初值为0,故每次溢出时时间T为65536μs单片机通过计算处理得出距离并保存于中间变量中以备调用其程序流程图如图5-2所示·5-2超声波测距程序流程图参考程序如下/**************超声波测距程序**************/voidjuli_cl{cf_xh=1;//单片机P
3.2发出持续10μs的高电平触发delay1;//延时(110x1=110μs)cf_xh=0;TH0=0;//定时器0高八位清零TL0=0;//定时器0低八位清零TR0=0;//定时器0关闭varible=0;while!hx_xh//判断是否接到回波信号{}//为零时等待TR0=1;//检测到回波信号后启动定时器whilehx_xh//当hx_xh接收到信号,P
3.3口置位“1”计数并等待{t0=TH0*256+TL0;//计算定时器所用的时间ifvarible1||t065000//判断超声波超测量的时间是否超出范围,如果超出则显示三个8{TR0=0;//定时器0关闭csjl=2;.//判断是否能够进行距离计算的中间变量csb_juli=888;//显示3个888varible=0;//清零超声波中间变量break;//循环检测作用}else//当检测时间没有超出范围则进行距离的计算{csjl=1;//判断是否能够进行距离计算的中间变量}}ifcsjl==1//假如没有超过测距范围,则定时器停止计时,计算距离{TR0=0;//关定时器0定时csb_juli=TH0;//读出定时器0高八位的时间csb_juli=csb_juli*256+TL0;//读出定时器0低八位的时间并与高八位时间相加求出时间总值csb_juli+=varible*65536;//计算测距时用的时间csb_juli*=
0.017;//因为超声波速度为340m/s,在这里
0.017=340/2*10^3/10^6ifcsb_juli350//如果大于
3.5m就超出超声波的量程就显示三个8{csb_juli=888;//显示三个8}}}
5.3距离显示子程序距离显示函数主要是对测得计算出的距离进行显示,距离显示子程序包括距离的处理、数码管处理、数码管显示和循环扫描四个过程距离处理是将测得计算所得到的距离通过进一步计算分配给每一位数码管所显示的段码值、并且控制数码管显示位数数码管处理是控制数码管位选,数码管显示则是综合距离处理和数码管处理对数码管进行循环扫描显示其流程图如图5-3所示图5-3距离处理子程序参考程序如下/***************超声波测距处理距离函数***************/voidled_display{xs_led
[0]=table_du[csb_juli%10];//数码管小数点前一位段码xs_led
[1]=table_du[csb_juli/10%10];//数码管小数点后弟一位段码xs_led
[2]=table_du[csb_juli/100%10]0x7f;//数码管小数码后第二位段码xs_num=3;//数码管显示位数}/**************超声波测距处理数码管函数**************/voidtable_we_switchunschari{switchi{case0:table_we1=0;table_we2=1;table_we3=1;table_we4=1;break;//显示第一位数码管case1:table_we1=1;table_we2=0;table_we3=1;table_we4=1;break;//显示第二位数码管case2:table_we1=1;table_we2=1;table_we3=0;table_we4=1;break;//显示第三位数码管case3:table_we1=1;table_we2=1;table_we3=1;table_we4=0;break;//显示第四位数码管}}/***************超声波测距数码显示函数**************/voiddisplay{staticunschars;s++;ifs=xs_num//控制显示位数s=0;table_we_switchs;//循环扫描显示P2=xs_led[s];}
5.4超限距离调节子程序超限距离调节子程序主要是对报警值进行按键调节,通过按键调节报警值的增减,报警值的取值范围在1cm~350cm之间该程序还有对设置状态标识设置以及移送显示函数显示的功能,其程序流程图如图5-4所示图5-4超限距离调节子程序参考程序如下/************超声波测距超限距离按键调节函数*************/voidkeystroke{ifk1==0//判断设置键是否按下{delay10;//延时ifk1==0//再次检测设置键是否按下{delay30;//延时k1num++;ifk1num==2//点击两次退出设置状态{k1num=0;}}}ifk1num!=0//是否进入设置状态{xs_led
[0]=table_du[xj_d%10];//设置小数点前一位数码管xs_led
[1]=table_du[xj_d/10%10];//设置小数点后一位数码管xs_led
[2]=table_du[xj_d/100%10]0x7f;//设置小数点后两位数码管xs_led
[3]=0x88;//设置状态标志符xs_num=4;//四位数码管全部显示ifk1num==1{ifk2==0//是否按下设置加键{delay10;//延时ifk2==0//再次检测是否按下设置加键{delay30;//延时xj_d++;//报警值加“1”ifxj_d350//最大报警值不得超过350{xj_d=350;}}}ifk3==0//是否按下设置减键{delay10;//延时ifk3==0//再次检测是否按下设置减键{delay30;//延时xj_d--;//报警值减“1”ifxj_d1//最小报警值不得小于1{xj_d=1;}}}}}}
5.5超限报警子程序超限报警子程序主要功能是超限报警,当距离小于设定值的时候,蜂鸣器接通报警,当距离大于设定值时,蜂鸣器停止报警其流程图如图5-5所示图5-5超限报警子程序流程图参考程序如下/****************超声波测距报警程序****************/voidbaojing{ifcsb_juli=xj_d//判断距离是否小于设定值{delay5;//延时(110x5=550μs)ifcsb_juli=xj_d//消除实际距离在设定距离左右变化时的干扰{fmq=~fmq;//P
3.4端口取反,蜂鸣器断续报警}}else//如果距离超过设定值,那么取消报警{fmq=1;//P
3.5置位高电平,报警停止}}总结致谢对于本次毕业设计,从课题的选定到设计的执行以及论文的书写,每一个阶段都离不开分析、计算和思考对于毕业设计这一严峻的任务,我必须尽心尽力去完成在单片机这一领域,我们课程中仅仅是大致了解,很多单片机的精髓内容并没有涉及,出于爱好,我决定选择“基于单片机的超声波测距仪”这一课题,这对我来说是一次挑战的确,在执行设计的过程中遇到了诸多难题,由于知识缺乏,必须通过自学来解决这些问题因此在这个过程中学到了很多东西在此我要感谢我的导师范晖老师我们老师工作繁重,却依然兢兢业业的为我们指导论文书写的格式、结构以及设计的优化而且对我的论文做了深入的了解,帮助我认识并解决了设计过程中遇到的诸多问题展望由于时间和精力有限,本设计还有很多地方没有完善,比如在作距离测量装置的时候可以在超声波探测头处添加一个激光装置,这样就可以明确看出测量的位置在测量距离方面,超声波测距仪的测量距离太短,这一局限性问题和传感器本身有关,所以可以采用激光测距传感器替换掉超声波测距传感器解决这一问题,通过学习我已经可以利用传感器去设计产品了,只是现在时间有限,以及无法控制的外界因素,所以只能再此提一下可行性的方法论,具体实施过程只能等到以后去实践当然,在单片机这个领域,也还有大量的知识值得我去学习在这次毕业设计时,我已经对单片机提起了浓厚的兴趣,将来我会勤勤恳恳的丰富相关知识,努力在这个领域立足附录A元件清单元件名称描述符号脚注数量10K电阻R10805110uF电解电容C4CAPPR
1.27-
1.7x
2.8112M晶振X1CY1D指示灯D1LED-RED1四位共阳数码管DS1SMA4105641USB电源接口sip21电源开关SW1sw_自锁1U1单片机STC89C52U1DIP40/11蜂鸣器LS1FMQ19012三极管放大三极管Q69012130pF电容电容C1C208052超声波测距模块超声波测距模块HC-SR041SW-P独立按键SwitchS1S2S3S4KEYS49012三极管开关三极管Q1Q2Q3Q490124330Ω电阻R2R7~R
150805104.7K电阻R3R4R5R608054附录B基于单片机的超声波测距仪源程序#includereg
52.h//STC89C52的头文件#includeintrins.h#defineunscharunsignedchar//宏定义,将unsignedchar定义为unschar#defineunsintunsignedint//宏定义,将unsignedint定义为unsint//七段LED共阳极数码管0~16段选定义unscharcodetable_du[]={//01230xc00xf90xa40xb0//45670x990x920x820xf8//89AB0x800x900x880x83//CDEF0xc60xa10x860x8e//
8.0xff};//七段LED共阳极数码管位选定义unscharcodetable_we[]={0x700xb00xd00xe0};//七段LED共阳极数码管显示调用表格unscharxs_led
[8]={0xc00xf90xa40xb00x990x920x820xf8};//数码管位选定义sbittable_we1=P0^3;sbittable_we2=P0^2;sbittable_we3=P0^1;sbittable_we4=P0^0;//数码管变量unscharxs_num=3;//显示数码管的个位数//超声波测距模块IO口的定义sbitcf_xh=P3^2;//超声波发射sbithx_xh=P3^3;//超声波接收unscharvarible;//超声波中间变量//定义超声波变量longcsb_juli;//距离变量unsintxj_d;//设置距离变量bitcsjl;//超声波超超限标志unsintt0;//保存定时器0的时间的中间值//按键的IO变量的定义sbitk1=P1^0;sbitk2=P1^1;sbitk3=P1^4;unschark1num;//蜂鸣器IO口的定义sbitfmq=P3^4;//蜂鸣器IO口定义,接在P
3.4口bitdelay_main;//主循环延时//声明函数voiddelayunsintz;//延时函数声明voidjuli_cl;//超声波测距函数声明voidled_display;//处理距离函数声明voidtable_we_switchunschari;//处理数码管函数声明voiddisplay;//数码显示函数声明voidkeystroke;//独立按键函数声明voidbaojing;//报警函数声明voidt0_init;//定时器0初始化函数声明/******************超声波测距主程序******************/voidmain{P0=P1=P2=P3=0XFF;//P
0、P
1、P
2、P3口置高电平juli_cl;//超声波测距离函数led_display;//超声波测距处理距离显示函数t0_init;//定时器
0、定时器1初始化函数xj_d=20;//设置限距值初始值//超声波测距主循环while1{ifdelay_main==1//判断delay_main是否为“1”,为1时进入循环,每延时300ms扫描一次{baojing;//报警函数juli_cl;//测距离函数led_display;//处理距离显示函数keystroke;//按键调节函数delay_main=0;//delay_main清零,以便下次使用}}}/*****************delay延时程序*****************/voiddelayunsintz{unsintij;//定义i、j为无符号整型fori=z;i0;i--//for循环,其延时时间为j*i=110*zμsforj=110;j0;j--;}/**************超声波测距程序**************/voidjuli_cl{cf_xh=1;//单片机P
3.2发出持续10μs的高电平触发delay1;//延时(110x1=110μs)cf_xh=0;TH0=0;//定时器0高八位清零TL0=0;//定时器0低八位清零TR0=0;//定时器0关闭varible=0;while!hx_xh//判断是否接到回波信号{}//为零时等待TR0=1;//检测到回波信号后启动定时器whilehx_xh//当hx_xh接收到信号,P
3.3口置位“1”计数并等待{t0=TH0*256+TL0;//计算定时器所用的时间ifvarible1||t065000//判断超声波超测量的时间是否超出范围,如果超出则显示三个8{TR0=0;//定时器0关闭csjl=2;//判断是否能够进行距离计算的中间变量csb_juli=888;//显示3个888varible=0;//清零超声波中间变量break;//循环检测作用}else//当检测时间没有超出范围则进行距离的计算{csjl=1;//判断是否能够进行距离计算的中间变量}}ifcsjl==1//假如没有超过测距范围,则定时器停止计时,计算距离{TR0=0;//关定时器0定时csb_juli=TH0;//读出定时器0高八位的时间csb_juli=csb_juli*256+TL0;//读出定时器0低八位的时间并与高八位时间相加求出时间总值csb_juli+=varible*65536;//计算测距时用的时间csb_juli*=
0.017;//因为超声波速度为340m/s,在这里
0.017=340/2*10^3/10^6ifcsb_juli300//如果大于
3.5m就超出超声波的量程就显示三个8{csb_juli=888;//显示三个8}}}/***************超声波测距处理距离函数***************/voidled_display{xs_led
[0]=table_du[csb_juli%10];//数码管小数点前一位段码xs_led
[1]=table_du[csb_juli/10%10];//数码管小数点后弟一位段码xs_led
[2]=table_du[csb_juli/100%10]0x7f;//数码管小数码后第二位段码xs_num=3;//数码管显示位数}/**************超声波测距处理数码管函数**************/voidtable_we_switchunschari{switchi{case0:table_we1=0;table_we2=1;table_we3=1;table_we4=1;break;//显示第一位数码管case1:table_we1=1;table_we2=0;table_we3=1;table_we4=1;break;//显示第二位数码管case2:table_we1=1;table_we2=1;table_we3=0;table_we4=1;break;//显示第三位数码管case3:table_we1=1;table_we2=1;table_we3=1;table_we4=0;break;//显示第四位数码管}}/***************超声波测距数码显示函数**************/voiddisplay{staticunschars;s++;ifs=xs_num//控制显示位数s=0;table_we_switchs;//循环扫描显示P2=xs_led[s];}/************超声波测距超限距离按键调节函数*************/voidkeystroke{ifk1==0//判断设置键是否按下{delay10;//延时ifk1==0//再次检测设置键是否按下{delay30;//延时k1num++;ifk1num==2//点击两次退出设置状态{k1num=0;}}}ifk1num!=0//是否进入设置状态{xs_led
[0]=table_du[xj_d%10];//设置小数点前一位数码管xs_led
[1]=table_du[xj_d/10%10];//设置小数点后一位数码管xs_led
[2]=table_du[xj_d/100%10]0x7f;//设置小数点后两位数码管xs_led
[3]=0x88;//设置状态标志符xs_num=4;//四位数码管全部显示ifk1num==1{ifk2==0//是否按下设置加键{delay10;//延时ifk2==0//再次检测是否按下设置加键{delay30;//延时xj_d++;//报警值加“1”ifxj_d300//最大报警值不得超过350{xj_d=300;}}}ifk3==0//是否按下设置减键{delay10;//延时ifk3==0//再次检测是否按下设置减键{delay30;//延时xj_d--;//报警值减“1”ifxj_d1//最小报警值不得小于1{xj_d=1;}}}}}}/****************超声波测距报警程序****************/voidbaojing{ifcsb_juli=xj_d//判断距离是否小于设定值{delay5;//延时ifcsb_juli=xj_d//消除实际距离在设定距离左右变化时的干扰{fmq=~fmq;//P
3.4端口取反,蜂鸣器断续报警}}else//如果距离超过设定值,那么取消报警{fmq=1;//P
3.5置位高电平,报警停止}}/*********T0/T1初始化程序*********/voidt0_init{EA=1;//总中断打开TMOD=0X11;//T
0、T1的工作方式设定为工作方式1ET0=1;//T0中断打开TR0=1;//启动TR0ET1=1;//T1中断打开TR1=1;//启动TR1}/***超声波测距的T0中断服务程序***/voidtime0interrupt1{varible++;//当定时器溢出发出中断,中间变量加“1”}/**********超声波测距T1中断服务程序**********/voidtime1interrupt3{staticunschari;//定时2ms中断一次TH1=0xf4;//设定高八位初始值TL1=0x48;//设定低八位初始值display;//数码管显示函数i++;ifi=100{i=0;delay_main=1;}}参考文献
[1]彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009年.
[2]吴运昌.模拟电子线路基础.广州华南理工大学出版社,2004年.
[3]阎石.数字电子技术基础.北京高等教育出版社,1997年.
[4]张晓丽等.数据结构与算法.北京机械工业出版社,2002年.
[5]马忠梅ARMLinux嵌入式系统教程.北京北京航空航天大学出版社,2004年.
[6]李建忠.单片机原理及应用.西安西安电子科技大学,2002年.
[7]韩志军等.单片机应用系统设计[M].机械工业出版社,
2004.
[8]周润景等.Proteus在MCS-51ARM7系统中的应用百例[M].电子工业出版社,
2006.
[9]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2006
[10]刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,
2007.
[11]喻萍,郭文川.单片机原理与接口技术[M].北京化学工业出版社,
2006.
[12]张大明.单片机微机控制应用技术[M].北京机械工业出版社,
2006.
[13]张义和,陈敌北.例如8051[M].北京人民邮电出版社,
2006.
[14]TexasInstrumentsMSP430x1xxfamilyUser’sGuide200033-
40.
[15]TexasInstrumentsMSP430ArchitectureandlibraryUser’sGuide200022-
40.
[16]TexasInstrumentsMSP-FET430X110FlashEmulationToolUser’sGuide20001-
10.
[17]MaximIntegratedProducts5V/
3.3VorAdjustableLow-DropoutLowIQ200MaLinearRegulators
1999.1-
15.
[18]TexasInstrumentsTLV2211TLV2211YAdvancedLinCMOSRAIL-TO-RAILMicropowersingeroperationalAmplifiers1-
5.。