《基于单片机的超声波测距仪设计(共46页).doc》由会员分享,可在线阅读,更多相关《基于单片机的超声波测距仪设计(共46页).doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上存档日期: 存档编号: 本科生毕业设计(论文) 论 文 题 目: 基于单片机的超声波测距仪 姓 名: 学 号: 系 别: 机电工程系 班 级: 机制 专 业 : 机械设计制造及其自动化 指 导 教 师: 江苏师范大学科文学院教务处印制江苏师范大学科文学院毕业设计(论文)任务书专业 机械设计制造及其自动化 班级 12机制Z 姓名 1、 设计题目:基于单片机的超声波测距仪2、 设计任务要求及主要原始资料:1、 设计制作超声波测距仪模型;2、 编写调试程序;3、 完成实物及程序的调试并使其正确的运行;4、 编写毕业设计说明书;5、 修改毕业设计说明书;6、 准备答辩。三、设
2、计时间:2014年 3月14日 至 2014年 6月3日指导教师: (签名)教学院长: (签名)专心-专注-专业摘 要随着科技的发展、自动化程度的提高以及电子产品的普及,电子测距产品也走进了人们的视野。相对于普通的测量工具,它具有数字式显示、测距精准以及可智能化控制等优点。本系统是利用STC89C52单片机和超声波测距模块进行设计制作的智能化测距仪,主要实现距离的检测、数字式显示,以及超限报警等功能。基于单片机的超声波测距仪是以单片机为控制核心,通过超声波测距模块对被测物体发射超声波,利用超声波在空气中的传播速度和发射到接收到超声波所用时间计算得到距离。测距原理简单、容易实现,并且在生产生活中
3、可以得到广泛使用和推广,具有实际性意义。关键词:单片机STC89C52,超声波传感器,基于单片机的超声波测距仪。Ultrasonic ranging Abstract: With the development of science and technology, the improvement of automation and the popularity of electronic products, electronic product range also went into people's horizons. Compared with the common measur
4、ing tool, it has a digital display, ranging precision and intelligent control, etc.This system is using STC89C52 MCU and ultrasonic ranging module to design the intelligent range finder, mainly realize the distance detection, digital display, and transfinite alarm and other functions. Based on singl
5、e chip ultrasonic range finder based on single chip microcomputer as control core, the object to be measured by the ultrasonic ranging module of launch ultrasonic wave, using the ultrasonic velocity in air and launch time to calculate the distance used to receive the ultrasonic. Ranging principle is
6、 simple, easy to implement, and can be widely used in production and life and the promotion, has practical significance.Key words: microcontroller STC89C52, ultrasonic sensors, ultrasonic range finder based on singlechip. 目 录第一章 绪论本文主要讲解的是基于单片机的超声波测距仪,它是以STC89C52为核心,以超声波测距模块为距离传感器的测距产品,其应用范围广泛,融入到各行
7、各业。1.1 需求分析超声波测距仪广泛被用在建筑、工业生产、日常生活、军事、灾难搜救、水文液位测量、现场的位置监控、车辆倒车避障、移动机器人探测定位等领域,是智能化产业中的杰出产品。传统的测距仪器是普通的尺子,虽然它的价格十分便宜,但它的局限性很多,使用不方便,并且很多地方无法测量。超声波测距仪是以单片机为核心,以超声波测距模块为基础,具有使用方便、操作简单、局限性少、精度高、测量范围大,并且可以数字显示出测量距离等特点,给人们的生产生活,以及灾难搜救,军事等带来了巨大的方便。需求报告:l 名称:超声波测距仪l 功能:测量并显示距离,也可以作为距离控制器,距离报警器。l 性能:3mm距离偏差。
8、l 输入:一个是设定键, 一个加键,一个减键,用来调节报警距离。l 输出:距离显示,超限报警。基于单片机的超声波测距仪的未来21世纪,单片机已经普遍应用与生产生活各个方面。超声波测距仪作为其中产品已经受到广大社会的认可和欢迎。超声波测距仪是一种非接触式测距仪,避免了很多测量上的局限,而且受到外界影响很小,在粉尘污染、潮湿、高温、有腐蚀气体等恶劣的环境中也可以正常使用,同时其系统具有高稳定性,高可靠性,以及使用寿命长等优点。在科技前沿,不少研究人员利用超声波测距自动化控制使机器人避障行走,这在灾害救援上起着重要的作用;在汽车倒车距离报警上的作用也是举足轻重的。基于单片机的超声波测距仪作为自动化控
9、制的产品跟的上科技的步伐,走的进人们的生产生活,称得上是科技发展的必需品。并且可以不断完善、不断的突破,可以应用于更广、更前卫的事业中去。 1.2可行性分析可行性分析包括元器件的使用和购买是否方便、产品的开发是否存在技术难题和市场需求等。(1)基于单片机的超声波测距仪,由STC89C52单片机、超声波测距模块、LED数码管等部件组成,元器件价格便宜且通用性强,STC89C52是MCS-51系列中的一种较为普遍的一款单片机,它具备了51单片机的优点,又在性能上做了完善和提高。超声波测距模块也已经模块化、标准化,使用起来非常方便。LED数码管以及其它附件市场上供货畅通。(2)软件使用C语言编写,本
10、设计采用为单片机专门开发了Keil C软件进行编程,程序书写方便便、可行性强。研究不存在技术难题。(3)较大市场需求量,效益方面相当可观。超声波测距仪除了测量距离以外,还可以应用于各种距离控制电路和限距报警电路。应用前景广阔。(4)基于单片机的超声波测距仪的特点: 1)价格低廉、灵动性好; 2)使用、操作简单,可以数字显示; 3)自动化控制方便; 4)完善很多测量的局限性; 5)体积小,重量轻,能耗低; 6)可塑性好,可以作为很多大型产品的附件。第二章 单片机的概述单片机是单片的简称,它是将中央处理器、存储器、定时器/计数器、中断系统、输入/输出端口等工作部件集成在一块集成电路芯片上的微型计算
11、机(单片机)。单片机在是一种智能化控制器,现代人类生活中处处都能看到单片机的产品,智能控制、MP3、交通灯、家用电器、以及手机等都含有。它具有质量轻、使用灵活、体积小、可靠性高、价格便宜等特点。它起初应用在工业控制领域。现代机电类专业人员必须熟练掌握单片机知识,灵活运用单片机技术。2.1单片机的含义及组成单片机是一个集成化的计算机,是一个小型的控制设备。通常我们把中央处理器(CPU,Central Processing Unit)、ROM/RAM、定时器/计数器等计算机的主要部件集成在一块电路芯片上,这就形成了单片机,如图2-1所示。图2-1 单片机逻辑结构从图1-1中可以看出,整个单片机的核
12、心部件是中央处理器(CPU,Central Processing Unit)。它通过总线和其它部件连接并进行数据交换,时钟电路给它提供系统工作的时间,以使各个部件统一协调工作。它内部的工作部件有运算器和控制器两大部分,主要功能是完成算数和逻辑的运算与控制。存储器是单片机系统中具有记忆功能的电子部件,它是由数据存储器和程序存储器组成。数据存储器主要用于储存程序运行期间所用到的数据信息。程序存储器主要用于保存常数、应用程序和表格,同时还可以用于保存程序执行时用到的数据。内部的程序寄存器可以扩展的地址空间为64KB。因为内部程序不需要改动,要求稳定性、可靠性要高,通常选用作为单片机内部的程序寄存器的
13、扩充。定时器/计数器是单片机中重要的部件,主要用于实现定时/计数,并通过定时或计数结果对所要操作的对象进行控制。串行端口的主要作用是实现了单片机与外设进行数据的交换。时钟电路主要用于产生单片机工作所需要的时钟信号,它由两个部分组成,分别是振荡器ALE信号和时钟发生器。中断控制系统是单片机为了满足各种实时控制需要而设置的,是重要的输入输出方式。比如定时器/计数器的溢出、外部接收到中断信号、单片机内部一些突发的事件以及单片机掉电、故障等单片机中断系统进入中断进行处理。在51单片机中设有5个中断源,我们可以通过对TCON、SCON、IE和IP的编程实现对中断的控制管理。系统总线(BUS)是计算机各个
14、工作部件之间传送信息的公共通道。2.2单片机的发展1970年微处理器研制成功后,随后出现了单片机。早期的单片机都是4位或8位的。4位单片机广泛应用于生活用品中,比如智能控制电子玩具、家用电器、计算器等领域。8位单片机功能性强,价格适中,软硬件资源丰富,被广泛应用在仪器仪表、工业控制、智能接口等领域。如今在生活中也随处可以看到51单片机系列的身影。20世纪80年代以后,技术水平大力提升,集成电路的集成度有了很大提高,16位开始问世,在当时高速复杂的控制系统中,通常使用的都是16位单片机,但因为价位过高没有得到很广泛的应用。90年代后由于IT技术发展的推动,技术得到了巨大提高。ARM处理器进入主流
15、市场,并且得到广泛应用,32位迅速取代16位单片机受到了人们的亲赖。如今大家所使用的智能手机很多都是使用的ARM单片机。2.3单片机的特点(1)系统内部结构简单,实现模块化;(2)体积小、成本低、环境适应能力强;(3)抗干扰能力强;(4)控制能力强,速度快;(5)低功耗,低电压;(6)外部扩展能力强;(7)具有高的可靠性;(8)生产产品易于携带。2.4单片机的应用单片机应用在我们生产生活中的各个领域,主要应用的领域有:(1)仪器仪表;(2)商业营销领域;(3)家用电器领域;(4)办公自动化领域;(5)航空航天领域;(6)网络和通信领域;(7)专用设备的智能化管理及过程控制。第三章 基于单片机的
16、超声波测距仪总体设计方案3.1超声波测距仪的系统设计基于单片机的超声波测距仪用STC89C52的单片机,作为整个电路的控制主要控制部件,超声波测距模块为测距传感器,LED数码管显示,蜂鸣器报警,系统设计图框图如图3-1所示。 图3-1 系统设计方框图工作过程:通过超声波测距模块获得的从基点到被测物体的距离,并将其传给STC89C52单片机进行处理,经过SCT98C52处理后,再把距离传给LED数码管显示,并根据距离设定值控制距离,必要时还可以控制蜂鸣器报警。3.2主控制器STC89C52单片机片内含有 8KB 的可编程Flash存储器,是一种8位控制器,它具有读写速度快、低功耗的优点,并且可直
17、接使用串口下载,下载速度一般在几秒到几十秒之间。STC89C52采用的是经典的MCS-51内核,在原有的基础上增加、改进了很多51单片机不具备的功能。同时该芯片性价比高,故本设计选用的主控制器是STC89C52单片机。STC89C52的引脚如图3-2所示。 图3-2 STC89C52的引脚图3.3 显示电路LED数码管是由8个发光二极管组成的。数码管可以分为共阴极和共阳极两种,共阳极数码管的公共端口接在高电平上,一般情况下需要通过开关三极管接在+5V电源上,当接通电源时数码管被点亮,共阴极数码管的公共端口接地方能点亮数码管。同时因为数码管的字段是由发光二极管组成,所以在数码管的段选端接上限流电
18、阻。 LED数码管性价比高,使用方便,是应用非常广泛的显示器。本设计采用4位共阳极LED数码管,从并口输出段码,LED显示原理图如图3-3所示。图3-3 LED数码管原理图3.4 超声波测距模块市场上超声波测距模块有很多不同的种类,本系统采用HC-SR04超声波测距模块,此模块由超声波发射器,超声波接收器以及超声波控制电路三部分组成。模块的非接触式距离测量范围为10mm-3000mm ,测量的精度可达高到 3mm。超声波模块实物如图3-4。 图3-4 超声波模块实物图3.4.1 HC-SR04超声波测距模块的特性(1)工作电流:2mA以下;(2)工作电压:4.5V5.5V,但绝对不允许超过5.
19、5V,以免烧坏元器件 ;(3)测量距离范围:测量最小距离为4mm,最大距离为3000mm,误差:4%,数据连续输出,不需要任何设置; (4)功耗电流:功耗电流的范围是1mA20mA ;(5)高精度:精度可达3mm;(6)工作温度:0100 ;(7)存放温度:-40120 ;(8)外形尺寸:45*20*15mm。3.4.2 HC-SR04超声波测距模块的引脚HC-SR04超声波测距模块有4个引脚,如图3-5所示。 图3-5 HC-SR04超声波测距模块的引脚如图3-5所示,其中端口Vcc提供+5V电压,GND 为地线,TRIG 是触发控制信号输入端,ECHO 是回响信号输出端。3.4.3 HC-
20、SR04超声波测距模块的工作原理单片机首先发出触发信号触发超声波测距模块工作,触发后,模块内部发出8个40kHz的脉冲并且检测是否接收到回波,如果接收到回波发射器立即向指定方向发射超声波信号,当信号发出时开始计时,碰到被测物体后就立即返回来,接收头接收到信号后产生毫伏级的微弱电压信号,电压信号传到单片机中定时器立刻停止计时。根据记录的时间t,和超声波在空气中的传播速度,超声波在空气中的传播速度为340m/s,由此就可以计算出发射点距被测物体的距离S,即:S=340t/2 。图3-6是相应的系统框图 。图3-6 超声波测距原理图框 3.4.4 超声波时序图图3-7 超声波时序图如图3-7所示首先
21、要由主控制器提供一个触发信号,信号是10s以上的高电平,当超声波测距模块被触发后,在超声波模块内部就会由4069反相器整合处理主控制器提供的40kHz的脉冲信号,接着循环发出8个这样的高电平周期信号发出并检测回波,只要检测到有回波信号,就会输出回响信号,同时触发主控制器计时并将回响信号置“1”,输出回响信号持续高电平的时间与基点到被测物之间的距离成正比。由此通过输出回响信号的脉冲宽度,计算出被测量的距离。3.4.5 HC-SR04超声波测距模块的电路设计(1)超声波的发射和处理由主控制器产生40kHz的脉冲,利用4069反相器对40kHz频率信号进行调整,使超声波传感器产生谐振,以供超声波模块
22、使用。发射电路图如图3-8所示。图3-8 超声波发射电路图(2) 超声波的接收与处理HC-SR04超声波测距模块的接收头采用UCM40R(与发射头配对),接收头接收到超声波信号之后,通过内部电路,将脉冲信号转变为电压信号,因为获得的电压信号很微弱,故需要经放大器放大,本模块采用带有差动输入的LM324放大器,它比常规运算放大器在各个方面优点都要显著。LM324运算放大器将微弱的电压信号进行放大,之后会转变为较强的电压信号,促使信号触发回响信号输出端由“1”变为“0”,送至单片机处理,使得定时器停止计时。超声波接收电路图如图3-9所示。 图3-9 超声波接收电路图第四章 基于单片机的超声波测距仪
23、的硬件设计超声波测距仪的硬件设计电路包括:电源指示电路、主板电路、数码管显示电路、超声波测距电路、蜂鸣器报警电路等。4.1电源指示灯电路电路说明:电源开关按下,发光二极管点亮,表明电路处于通电状态,电源开关复位,即电路断电,发光二极管熄灭。电路中为硅管发光二极管,它的正常工作电流为3mA10mA左右,正向压降约为1.7V,电流过大会烧坏二极管,电流过小二极管的亮度减弱。因此在电路中需要连接电阻,电阻阻值不易过大。电路中电阻被称为限流电阻,因为发光二极管正向压降为1.7V,根据欧姆定律(I=U/R)可以求出电阻的范围为3301.1k左右。本系统为了使二极管发光强度高,故选用330电阻。电源指示灯
24、电路图如图4-1所示。图4-1 电源指示灯电路图4.2 单片机主板电路主板电路是单片机最基本的电路,又被称作最小系统,它的主要作用是为单片机提供标准的时钟,以及使单片机初始化。主板电路包括:时钟电路、复位电路等。4.2.1时钟电路时钟电路为单片机提供时钟信号,使得单片机能够按照一定的时序进行稳定的工作,它是由晶振和电容两部分组成。晶振的频率即时钟电路的频率,它决定着定时器的溢出时间。电容则在电路中起滤波作用。时钟电路有两种震荡方式:内部震荡电路和外部震荡电路。根据设计需要,采用内部方式;因为本设计用到了定时器,因为单片机输出的震荡脉冲为12分频,故为了减少计算量,故采用频率为12MHz的晶振;
25、由于晶振频率为12MHz,属于高频波,电容在电路中起到滤波作用,高频选用小电容,低频选用大电容,故在本设计中电容选用30pF。内部震荡电路如图4-2所示。 图4-2 内部震荡电路4.2.2复位电路复位电路是一种用来使电路恢复到起始状态的电路设备,它是单片机的初始化操作。它的操作原理与计算机类似,只是启动原理和手段有所不同。在单片机在开机和系统出现问题时,可以使用复位键使其恢复到起始状态。要使单片机成功复位,需要在单片机的30引脚(ALE)提供高电平信号,高电平信号必须产生并保持24个晶振周期(两个机器周期)以上,即在30引脚(ALE)上输入脉冲宽度超过2个机器周期的正脉冲复位信号。复位方式一般
26、有上电复位、按键手动复位两种方式,根据设计需要,本系统采用上电复位方式,上电复位电路如图4-3所示。 图4-3 上电复位电路4.3数码管显示电路电路功能:用来显示测量距离、极限距离的十位、个位以及设置状态标志等。电路说明:本系统显示电路采用4位一体共阳极数码管显示方式,P0.0P0.3口控制数码管的位选信号,P2口控制数码管的段选信号。工作原理:数码管实际上是由二极管组成的,一位数码管由8个二极管组成,故显示原理和二极管类似。当单片机P0.0P0.3口为低电平时,位选端选通,点亮相应的数码管位,当P2口为低电平时,根据段选码显示相应的数字。电路原理:显示电路由四个上拉电阻、一个4位一体共阳极数
27、码、四个三极管、8个限流电阻组成。由于P0口与其他端口不同,是开漏输出,故应接上拉电阻,本系统选用4.7K上拉电阻。数码管是此电路的显示元件,三极管在电路中的作用是开关作用,当P0口输出低电平时,三极管导通,为数码管提供高电平。限流电阻是为了限制过大电流烧坏二极管,本电路选用330电阻,既能保证数码管亮度,又不会损坏数码管。LED数码管显示电路如图4-4所示。图4-4 LED数码管显示电路4.4距离测量电路超声波测距仪设计采用HC-SR04测距模块,超声波测距模块的触发信号口Trig和输出回响信号Echo口分别接在P3口的P3.2与P3.3。电路功能:距离测量电路主要负责测量测量系统到被测物体
28、的距离,并将信号发送至单片机中进行信号的处理。电路工作原理:超声波测距模块通过发射端向被测物体发射出长约6mm,频率为40kHz的超声波信号,一旦发射超声波信号,立即触发单片机进行计时处理,定时器T0开始计时,超声波在空气中传播,接触到被测物体信号返回,接收头实质上是一种压电效应的换能器。它接收到信号后产生毫伏级的微弱电压信号。电压信号传到单片机中使得定时器T0停止计时。由于超声波在空气中的传播速度为340m/s,根据发射和接收的时间差计算出发射点到被测物体的实际距离S,即:S=340t/2 。距离测量电路图如图4-5所示。图4-5 距离测量电路图4.5蜂鸣器电路蜂鸣器分为两种:一种是有源蜂鸣
29、器,另一种是无源蜂鸣器,区别在于有源蜂鸣器一般内部含有内部震荡器,无源蜂鸣器中不含内部震荡器。触发有源蜂鸣器发声只需给它通入额定电压就可以了;而想要触发无源蜂鸣器发声,必须接在音频输出电路中才能够发声,它的原理和电磁扬声器原理类似。本设计的报警系统选用的发声元件是有源蜂鸣器。工作原理:当测量距离小于设定值时,蜂鸣器接通报警,当测量距离超过设定值时,蜂鸣器关闭,报警停止。电路原理:本报警系统电路采用一个蜂鸣器、一个三极管、一个电阻实现报警功能。因为蜂鸣器在工作时需要较大的工作电流,单片机引脚提供的电流无法直接驱动蜂鸣器工作,所以必须要在电路中增加放大电路,一般采用三极管放大电流就可以了,本系统采
30、用PNP型三极管放大电流。蜂鸣器电路图如图4-6所示。图4-6 蜂鸣器电路图4.6系统原理电路系统原理电路显示了整个设计的电路原理,它包括了超声波测距模块的数据采集电路、距离显示电路、控制电路和主板电路等。电路工作原理:系统原理电路综合和各个部分电路,并使其协调统一工作,完成设计要求。接通电路电源,电源指示灯点亮,各个部分进入初始化状态,超声波模块首先进行距离的测量,然后送往单片机中进行处理。经过单片机处理后送入显示模块显示,并判断是否超限,如果超限,报警系统报警。按键模块负责调节超限距离,在设置状态下,显示系统显示设置状态标志和超限值。系统原理电路图如图4-7所示。图4-7 系统原理电路图第
31、五章 基于单片机的超声波测距仪的软件设计系统程序主要包括主程序,距离测量子程序,超限距离调节子程序,距离显示子程序,超限报警子程序等。5.1主程序主程序主要的功能是负责距离的测量、距离的显示、超限距离的调节及超限报警等子程序的协调统一运作。其流程图如图5-1所示。 图5-1 主程序流程图参考程序如下:/*超声波测距主程序*/void main()P0 = P1 = P2 = P3 = 0XFF; /P0、P1、P2、P3口置高电平juli_cl(); /超声波测距离函数led_display(); /超声波测距处理距离显示函数t0_init(); /定时器0、定时器1初始化函数xj_d=20;
32、 /设置限距值初始值/ 超声波测距主循环while(1)if(delay_main=1) /判断delay_main是否为“1”,为1时进入循环,每延时300ms扫描一次 delay_main=0; /delay_main清零,以便下次使用baojing(); /报警函数juli_cl(); /测距离函数led_display(); /处理距离显示函数keystroke(); /按键调节函数 5.2距离测量子程序距离测量子程序的主要功能是控制超声波测距模块的发射和接收,计算出从信号发出到接收到信号所使用的时间,本系统采用定时器0作为超声波测距的计时器,它工作在工作方式1,所以它的定时时间T为:
33、其中,X是定时器装入的初值,是单片机的机器周期。因为本系统采用12MHz的晶振,故=1s,又由于初值为0,故每次溢出时时间T为65536s。单片机通过计算处理得出距离并保存于中间变量中以备调用。其程序流程图如图5-2所示。 ·5-2 超声波测距程序流程图参考程序如下:/*超声波测距程序*/void juli_cl()cf_xh = 1; / 单片机P3.2发出持续10s的高电平触发 delay(1); / 延时(110x1=110s)cf_xh = 0; TH0 = 0; / 定时器0高八位清零TL0 = 0; / 定时器0低八位清零TR0 = 0; / 定时器0关闭varible
34、= 0;while(!hx_xh) / 判断是否接到回波信号 / 为零时等待TR0=1; / 检测到回波信号后启动定时器 while(hx_xh) / 当hx_xh接收到信号,P3.3口置位“1”计数并等待 t0 = TH0 * 256 + TL0; / 计算定时器所用的时间if(varible > 1) | (t0 > 65000) / 判断超声波超测量的时间是否超出范围,如果超出则显示三个8TR0 = 0; / 定时器0关闭csjl = 2; ./ 判断是否能够进行距离计算的中间变量csb_juli = 888; / 显示3个888varible = 0; / 清零超声波中间变
35、量break ; / 循环检测作用else / 当检测时间没有超出范围则进行距离的计算csjl = 1; / 判断是否能够进行距离计算的中间变量if(csjl = 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,在这里
36、0.017=340/2*103/106 if(csb_juli > 350)/ 如果大于3.5m就超出超声波的量程就显示三个8csb_juli = 888; /显示三个8 5.3距离显示子程序距离显示函数主要是对测得计算出的距离进行显示,距离显示子程序包括距离的处理、数码管处理、数码管显示和循环扫描四个过程。距离处理是将测得计算所得到的距离通过进一步计算分配给每一位数码管所显示的段码值、并且控制数码管显示位数。数码管处理是控制数码管位选,数码管显示则是综合距离处理和数码管处理对数码管进行循环扫描显示。其流程图如图5-3所示。图5-3 距离处理子程序参考程序如下:/*超声波测距处理距离函数
37、*/void led_display()xs_led0 = table_ducsb_juli % 10; / 数码管小数点前一位段码xs_led1 = table_ducsb_juli / 10 % 10; / 数码管小数点后弟一位段码xs_led2 = table_ducsb_juli / 100 % 10 & 0x7f; /数码管小数码后第二位段码xs_num = 3;/ 数码管显示位数/*超声波测距处理数码管函数*/void table_we_switch(unschar i)switch(i)case 0: table_we1 = 0; table_we2 = 1; table
38、_we3 = 1; table_we4 = 1; break; / 显示第一位数码管case 1: table_we1 = 1; table_we2 = 0; table_we3 = 1; table_we4 = 1; break; / 显示第二位数码管case 2: table_we1 = 1; table_we2 = 1; table_we3 = 0; table_we4 = 1; break; / 显示第三位数码管case 3: table_we1 = 1; table_we2 = 1; table_we3 = 1; table_we4 = 0; break; / 显示第四位数码管/*超
39、声波测距数码显示函数*/void display()static unschar s;s+;if(s>= xs_num) / 控制显示位数s = 0;table_we_switch(s); / 循环扫描显示P2 = xs_leds;5.4超限距离调节子程序超限距离调节子程序主要是对报警值进行按键调节,通过按键调节报警值的增减,报警值的取值范围在1cm350cm之间。该程序还有对设置状态标识设置以及移送显示函数显示的功能,其程序流程图如图5-4所示。图5-4 超限距离调节子程序参考程序如下:/*超声波测距超限距离按键调节函数*/void keystroke() if(k1=0) / 判断设
40、置键是否按下 delay(10); / 延时if(k1=0) / 再次检测设置键是否按下 delay(30); / 延时 k1num+; if(k1num=2) / 点击两次退出设置状态 k1num=0; if(k1num!=0) / 是否进入设置状态 xs_led0 = table_duxj_d % 10;/ 设置小数点前一位数码管 xs_led1 = table_duxj_d / 10 % 10; / 设置小数点后一位数码管 xs_led2 = table_duxj_d / 100 % 10 & 0x7f; / 设置小数点后两位数码管 xs_led3 = 0x88; / 设置状态标
41、志符 xs_num = 4; / 四位数码管全部显示 if(k1num=1) if(k2=0)/ 是否按下设置加键 delay(10);/ 延时 if(k2=0)/ 再次检测是否按下设置加键 delay(30);/ 延时 xj_d+;/ 报警值加“1” if(xj_d>350)/ 最大报警值不得超过350 xj_d=350; if(k3=0)/ 是否按下设置减键delay(10);/ 延时if(k3=0)/ 再次检测是否按下设置减键 delay(30); / 延时 xj_d-; / 报警值减“1” if(xj_d<1) / 最小报警值不得小于1 xj_d=1; 5.5 超限报警子程序超限报警子程序主要功能是超限报警,当距离小于设定值的时候,蜂鸣器接通报警,当距离大于设定值时,蜂鸣器停止报警。其流程图如图5-5所示。图5-5 超限报警子程序流程图参考程序如下:/*超声波测距报警程序*/void baojing() if(csb_juli <= xj_d) / 判断距离是否小于设定值delay(5); / 延时(110x5=550s)if(csb_juli <= xj_d)