收藏 分享(赏)

基于单片机基础的超声波测距  .doc

上传人:ddeeee 文档编号:16095435 上传时间:2023-09-15 格式:DOC 页数:40 大小:2.15MB
下载 相关 举报
基于单片机基础的超声波测距  .doc_第1页
第1页 / 共40页
基于单片机基础的超声波测距  .doc_第2页
第2页 / 共40页
基于单片机基础的超声波测距  .doc_第3页
第3页 / 共40页
基于单片机基础的超声波测距  .doc_第4页
第4页 / 共40页
基于单片机基础的超声波测距  .doc_第5页
第5页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、设计(论文)题目: 超声波测距仪系 别:电子工程学院专 业:应用电子技术班 级:姓 名:学 号:指导教师:完成时间:目录第一章绪论11.1课题研究的背景11.2课题研究的意义1第二章超声波测距原理32.1超声波简介32.2超声波测距原理3第三章硬件实现及单元电路设计53.1主控制模块53.2超声波测试模块63.2.1显示模块83.2.2超声波的特性83.3超声波换能器9第四章超声波收发电路与调试114.1超声波发射电路114.2超声波接收电路124.3系统的调试144.4硬件调试15第五章软件设计175.1主程序工作流程17第六章总结21致谢22参考文献24附 录25附件1:原理图25附件2:

2、程序26附件3:元件清单35附录4:实物图36超声波测距仪摘要:本文中的设计采用以STC89C52RC单片机为控制核心并且有着以精度比较高、成本低廉、体积小相对微型化的超声波测距仪。有着环保的硬件电路以软件设计。由主程序:控制和管理所有程序的运行、中断程序:关闭计时器T0、发射子程序:发出一个超生脉冲、接收子程序:接收有物体反射回来的脉冲、和显示子程序以及其他的简单电路等模块组成。最后探头将会以得到的信号通过单片机的分析和处理功能,就能实现我们本次设计的最初理念以及各种功能。在我们这个最基本的设计的总体方案,通过硬件与软件合作来完成操作。关键词:STC89C52RC,超声波,测距第一章绪论1.

3、1课题研究的背景随着我们现在的生活所有人的生活水平提高,以及现在的城市发展建设飞快的速度,所有人的生活状况不断改善。可是,由于历史以及其他的原因综合成了许多不可预因素,基本上所有城市中的地下给排水系统,还有一些城市发展落后所导致残留下来的问题解决起来相当的费劲。此刻我们经常可以看到城市建设好后还要再继续挖开以前的排水系统。在这个时候城市里面的污水没有啥招能赶紧的排除,给城里的人们整了好多的麻烦事。此时呢有一种机器人能疏通排水管,这种方法叫做箱涵的排污疏通方法,使得人们生活舒适状态显得非常重要。此种机器人能够疏通排水管道那就必须有它自己自动控制系统,使得机器人能过则管道中自由的行走不会被垃圾啥的

4、挡住去路。这中机器人排污的核心核心部分就是控制系统,而控制系统的核心就是这个超声波测距仪的研制。就目前的科学发展的状态与其他技术来说,超声波与其周边传感器应用的变得及其广泛。可是对于我们现在的水平来讲,能利用到具体的生活中还比较有限,所以,此时此刻此项技术也就会是一个飞速发展与相当美好的前景。让我们继续的向长远的来看超声波传感器肯定是一项非常重要且还是一个新型的产品,将会在我们日常生活中必然存在。所以此项技术必定会定位在高精度、低污染更加的环保,来满足人们生活以及社会需求。可以说在未来的某一天此项技术肯定会往智能化和自动化的方向靠拢并且接轨。那是肯定会和其他的微型传感器合体传感器,以更多的形式

5、存在着。随着时间和社会需要的推动此类传感器会有跟好的技术和进步,像我们现在看到那些笨笨的传感器以后肯定会简单的判断能力和智能处理范围内的工作事情,并且还会有简单的学习共能。1.2课题研究的意义在我们平时的生活中,能看到好多在需要测量时所遇到的尴尬事情,当我们测量距离时候尺子的长度不够了这多尴尬哈,所以现在的测量工具或多或少有些令我们满意。例如:距离测量中液面测量就是一个比较尴尬的存在,现在的方法是电极法,此方法经过脉冲或者通过给电检测液面,此时电极浸泡在水中或其他的液体中容易失去灵敏性,原因是电极非常容易被腐蚀和发生电解从而失去灵性还浪费资源。但是利用了超声波测距仪来测量,就能完全解决这个问题

6、了。目前市面上我们经常能看到的测距仪器或者系统都老贵了买了比较肉疼,而且体型那是非常不满意了而且呢精度也不咋地,这样会使得在中小规模的应用领域中很难得到广泛的应用。为解决这一系列难题,本文的设计是本着具有高精度,而且低成本易于开发,并且要有微型化的趋势的测距仪,所以选择以STC89C52RC单片机为核心。第二章超声波测距原理2.1超声波简介物体震动时都会发出声音,而我们知道物体每一秒钟震动的次数我们就把那个叫做声音的频率单位就是赫兹(Hz)。我们平时生活中能听到声音的频率是在20-20000Hz,所不在这个频率中的波段我们就听不到。大于20000Hz我们称之为“超声波”,反之为“次声波”。通常

7、医院用作诊断的超声波的频率在1-5兆Hz。由于超声波的方向比其他的声波好,且穿透效果强,在水中的传播距离比较远,并且此声能易于获得和集中。于是可以用于测量距离、清洗牙齿、焊接等功能。而且还在很多的领域上有明显的作用,医学上B超、军事上雷达、工业焊接等等等2.2超声波测距原理本原理是利用反射原理测距,被测的物体必一定得有反射的能力。在平时测量的时候,将这个本仪器对准那个测量的目标,并且在发射超声波时候就开始计时,当超声波接触碰到有东西挡住的时候就会有反射,而反射回来的超声波被测距仪接收后,此时计时就结束了,然后就根据这个超声波在空气中的传播速度与这个计时所用的时间,就能算出来与被测物体之间距离。

8、测量距离D为 式中 c超声波的传播速度; 此时所用的时间为距离的两倍。计时精度以及传播速度决定了距离测量的精度。单片机定时器这个就决定了计时的精度,计数的次数和那个机器周期相乘就是定时的时间,则以6MHz的晶振,和能精确到为1s时间的机器周期,才不会产生错误此错误就是累积误差,使得定时时间能达到2s。超声波的速度c是不会改变的能影响到速度的因素有温度、空气的密度以及气体分子成分,关系式为 (2.2)式中 气体定压热容与定容热容的比值,空气为1.40。 R气体普适常数,为8.314kg/mol。T气体势力学温度,与摄氏温度的关系是T=273K+t。M气体相对分子质量,空气为28.810-3kg/

9、mol。c00时的声波速度,为331.4m/s。超声波在空气中的传播速度,取决于温度,和温度之间的关系示意图咱们是可以通过计算得出来,如表2-1所示。这个空气中温度越高,它的扩散速就会越度快,传播速度在不同温度下,有很多地差别呢,当速度为0C的3332m/s。350米/秒的速度时候温度在30,在30度C和S,M和S是不同的,需要一个高精度温度补偿最有效,测量精度不高,在空气中,速度是每秒340米。项目数值温度-30-20-100102030405060100声速/( ms)313319325332338344350356361367388表2-1 超声波播速度与温度关系表第三章硬件实现及单元电

10、路设计3.1主控制模块主控制最小系统电路如图3-1所示。 图3-1 最小系统硬件电路总设计见图3-2,从以上的分析可知在本设计中要用到如下器件: STC89C52RC、一件超声波传感器、若干按键、一个四位数码管、一个蜂鸣器等一些单片机外围应用电路比如导线之类的。其中D1就是电源工的灯。电路中用到3个小按键,一个就是是设定键, 其中一个“加键”,一个“减键”。图3-2 总设计电路图3.2超声波测试模块我们使用的超声波模块是HC-SRO4为核心,此种模块的测试距离是2cm-400cm,该精度是3mm。并且这里头有三个部件超声波发射其、超声波接收器、控制电路。工作原理:至少要有10us高点平信号是用

11、IO口出发测距;这个时候模块就会发出8个40KHZ的方波信号,侧模块还能自动的检测方波信号是否返回;此时的返回信号就会通过高电平对回波输出口IO。超声波发射返回高电平的持续时间是从输出口得来的。测出的距离为高电平时间乘以声音的速度两者乘积的一般在如图3-3种。对于5V电源,TRIG是触发控制信号触发时,此时的回波信号的输出为ECHO图3-3超声波模块实物图超声波探测模块HC-SR04的使用方法:当Trig这个口收到不少于10us的高电平,测量就开始启动;此模块就会很自觉的法出了8个40Khz的方型波,这个时候呢我们就会查看自动检测有没有信号返回;要是有信号返回,那就会通过IO口Echo整出来一

12、个高电平,而那个高电平一直持续的时间就是之前说的超声波从发射到返回的时间,我们的测试远近就跟这个是一样的(高电平时间*340)/ 2,单位为m(米)。程序测试功能的时候最主要的就是这俩函数整完的。现实中能用定时器0来定时测量,此时TCNT0和预测值0XCE,有8分频,所以呢当这个timer0溢出来那个时候就会有2500多此的是为125ms计算公式为(单位:ms):T = (定时器0溢出次数 * (0XFF - 0XCE)/ 1000 其中定时器0初值为:0XCE。3.2.1显示模块 显示模块采用数码管显示接口电路下图3-4图3-4数码管显示接口电路 3.2.2超声波的特性超声波为支线传播方式,

13、反射能力强,容易控制,受环境影响小,在空气中传播速度大约为340m/s。和我们人类生活密不可分的自然现象有老鼻子了,其中就有声音那是可重要了。有时候我们听不到的声音但是一些小动物们就能听见,其中就有超声波,所以科学家做了个实验,结果呢我们人类的能听到声音的上限是20K赫兹,这个声音的波段就是我们所说的超声波。超声波的基本特性:超声波测距仪有两个部件组成一个是发射器一个是接收器。其中向外发射固定信号的声波为发射器,有物体阻碍超声波传播时这个波就会反射回去,然后会被接收器接收。这个由压电晶片所制成的超声波探头,这个探头它有两种功能一个是接收超声波、另一种就是发射超声波。所以不同的结构就会有不同的功

14、能,一般做探测器的一种很多都是功率比较小的超声波探头。目前为止我们知道有很多种材料可以作为晶片做成超声波探头。并且以晶片形状的大小、晶片的直径、厚度的不同,所以很多的探头功能和性能很少有一样的,一个参数不一样都有不同的作用。超声波传感器的主要性能指标包括以下几项:a工作频率以共振频率为基础就是压电晶片的工作频率,以相等的交流电源加到晶片的两端时,能量输出的越大,也就有很高的灵敏度。b工作温度因为压电晶片有着相当高的居里点,医院用的仪器超声波诊断器使用的功率和别的工业用途比较小,工作状态下的温度也低,可以能用很长时间并且工作运行流畅不会很快的报废。c灵敏度灵敏度很多的情况是要取决于制造晶片的本身

15、。在机电耦合系数低的情况,有较高的灵敏度;反之灵敏度相对较低。3.3超声波换能器超声波传感器功能与作用:就是产生超声波和接收超声波。我们称之为超能转换器,或者也可以说这个东西是超声波探头。这个探头能发射超声波和接收超声波俩功能,其主要是由压电晶片组成的。功率相对较小的探头一般很多情况都用做探测,存在着很多的结构,分为了很多的探头例如:直探头、斜探头、表面波探头以及双探头等等等压电晶片存在塑料外套或者金属外套中并且以此为超声波探头的核心。我们在使用之前一定要认真的了解此种探头的参数以及各方面性能,因为构成此类晶片的材料有相当多的的种类,晶片类型的大小,直径与厚度的任何一种参数都不会有所相同,所以

16、说各个探头的性能都是不一样的。这种探头一般用的材料很多都是压电陶瓷和压电晶体之类的材料。利用这种材料压电效应工作。压电效应能将高频机械震动与高频电震动之间抓换,就能以这两种准换的能力产生超声波,利用正压电效应可以作为发射探头。那声波震动转换成电信号,这样就能以接收探头的功能存在。第四章超声波收发电路与调试4.1超声波发射电路MAX232是西方美利坚合众国MAXIM公司以这种串口路通信设计的芯片。它的功耗较低,所以就会将TTL的一种电平和另一种RS232电平之间的相互转换。此时用一个+5V来提供用电需要,并且电流为5mA。RS-232C驱动器在内部集成2个,由于此高集成度,在片外就只需要4个相同

17、的电容器C就能正常工作。我们以MAX232为此超声波发射电路。超声波发射探头T和反响芯片74LS04合体而成的电路前级。反相器这种东西在74LS04内部有足足有6个。以外部的发射探头里面的激励信号放大处理过将外部管脚的组合连接来实现。一路通过74LS04内部一级反向器后送到超声波发射探头T的一个电极。能送到另一个超声波换能转换器的必须要经过令一类两级反相器。此时反相叠加到转换器的两端时,这就是所谓的方波信号推挽形式,然后将超辐射强度增加一倍。在一个平行的两个反向器为同时输出端两路信号,这样救恩能够把这种具有驱动能力的超声波脉冲提高。上拉式电阻中R10、R11一端接上+5V电源。能增加超声波的自

18、身阻尼效果的方法:另一头的探头必须连到超声波另一极中的探头T,如果要得到这种非常完美的超声波脉冲的波形那么我们必须要缩短这个自由振荡的时间,这样我们就可以驱动它MAX232实现从这个位置TTL电平到另一个位置RS232电平的转换,具体电平转换图4-1所示图4-1 MAX232电平转换图因为波形相对比较完整,此时电压高因为发射器的原因。则可以提高可观的发射功率与效率,就能测出的距离比较远。电路工作需要稳定则必须同时用测电路发射的方波,而且要得到合适的供电的电源。此时此刻功率消耗小我们就会选择测方案的发射电路4.2超声波接收电路超声波接收电路我们用的这种芯片,采用SONY公司生产的红外接收专用芯片

19、CX20106A(内部结构如图4-2所示),这个电路用的是集成接收芯片,可以对此声波信号整形和放大,测距超声波的频率为40MKz与红外线的频率非常的相似,这个时候此芯片一定要具有灵敏度高的和抗干扰的属性才可以。此时我们可以把作为超声波接收电路。相对里面的电路外边的电路就比较简单实现,同样也能减少产品调试的麻烦事情了,这么看来我就会选择这个接收方案。图4-2 CX20106内部结构通过CX20106进行放大之前一定要由超声波接头能接收到发射信号、而此时它拥有限制幅度和自带放大功能、还能带通滤波与峰值建波的比较。经过积分和施密特触发的比较就能够得到信号是经过解调后。此时的7号管脚为信号输出,若此时

20、收到的信号则为的电平。如果没有收到磁石的信号则为高电平,之后就会恢复到高电平(a)为接收信号,(b)为有源峰值检波,如下图4-3所示。图4-3 信号图在这个CX20106A中内部集成了前置放大与限制幅放大的装置,所能达到的总增益为80dB,通过峰值的检波个噪声限制电路,以及带通率脖子滤波器电路,调整外部的电容器C2或者是增大电阻R,都能是负反馈能量变大,并且这个放大的倍数就会下降,不然放大的倍数就会相反。这个时候我们能以调节超生波的接收探头R的接收频率灵敏度。如果此时电容C改变了就会影响到这个频率的特性了,此时所有的参数在实际操作中不会有很大的改动,推荐使用的参数值R=4.7,C=3.3F。因

21、为此时的它工作相当的稳定,灵敏异常的度高,功耗非常的小,并且有着接收回波能力强的特殊性质,所以我采用这个方案作为接收电路。4.3系统的调试计算机内部零件的测试人耳所不能听到的声音来衡量远近的器件的问世和便捷测量,有人耳所不能听到的声音传出和对它的信号收取,装让去的时候看所需来转变,衡量的大小能够改变和信号收入并转换的器件和允许通过电容的限制,就是想达到及时接到信号并能很好的避免周围的影响的目的。内部器件形成的路径的诞生和屡次监测,完全可以把弄好的程序拉下来去翻译好来完成机器的监测并运转起来。看情况能够修改供随时调用的程序非人耳所能听到的声音,它所送出去的脉冲的大小,运行所需要的分钟,最合适衡量

22、远近的需求。按照电的路径和程序的编写,衡量远近的仪器为7厘米到7分米之间,最大的偏差不能不大于0.1分米。内部器件的测试通过衡量偏差的重合度和是否希望来进行比较解析,并通过多次实验来改善衡量所应达到的需要。4.4硬件调试下图为原始状态下图手指上的按键为设置按键(调节报警距离) 经过这两个按键就可以调节预设报警距离的大小最后按设置键就是确定此预设的报警距离 第五章软件设计5.1主程序工作流程如下图5-1所示程序中的软件部分分为两部分,主程序和中断服务程序。主要的程序管理最初的运行,每条电的路径的非人耳所能听到的声波发出信号和信号的收取的次序的操控任务。还有设定的中间需要停止的程序实现三个方位的非

23、人耳所能听到的声波交替把信号发送出去的任务。非内部的中间断开的程序负责记录时间长短的任务,远近的衡量还有显示出最终数据的目的。起主要作用的程序先把计算机恢复最初状态,并把规定的时间弄到16位的次数记录仪器的状态。把统一中间可以断开的所能承受的EA和P0港口和P1是零,接着借用非人耳所能听到的声波的供随时调用的程序送出一个脉冲,以防避免非人耳所能听到的声波从发送仪器到信号回收仪器间的接触之间直接传输直接波触发,需要延迟大约0.1 ms(超声波测距仪将最小可探测距离),若此时接收到返回的超声波信号那么此时必须打开外部的中断0。由于采用12 MHz水晶振动,每秒计数器数字是1us.当测试距离小于或者

24、等于预设的距离是都会报警提示,反之则不会。系统初始化报警结束测得距离与设定值比较,小于距离比较,报警是否持续开始启动报警电路开始报警再次检测等待下次报警结束YNNYYN图5-1 主程序工作流程图图5-2是超声波探测程序流程:当Trig这个口收到不少于10us的高电平,测量就开始启动;此模块就会很自觉的法出了8个40Khz的方型波,这个时候呢我们就会查看自动检测有没有信号返回;要是有信号返回,那就会通过IO口Echo整出来一个高电平,而那个高电平一直持续的时间就是之前说的超声波从发射到返回的时间,我们的测试远近就跟这个是一样的(高电平时间*340)/ 2,单位为m(米)。程序测试功能的时候最主要

25、的就是这俩函数整完的。现实中能用定时器0来定时测量,此时TCNT0和预测值0XCE,有8分频,所以呢当这个timer0溢出来那个时候就会有2500多此的是为125ms计算公式为(单位:ms):T = (定时器0溢出次数 * (0XFF - 0XCE)/ 1000 其中定时器0初值为:0XCE。图5-2 超声波探测程序流程图第六章总结本设计是一种基于单片机技术上的超声波智能测距报警系统。该系统通过以STC89C52RC单片机为处理系统核心,以超声波传感器为测量与物体之间距离的工具,它是一种被动式超声波探测器件,能够以非接触任何物体就测出与前方物体距离,并将此信号转换为电信号并且输出。该报测距报警

26、系统的最大特点就是用户能够以最短的时间学会并且使用,了解其功能,简单适用;而且安装方便、智能相对性高、误报很率低。随着现代人们的生活节奏变快同时对安全看待也十分重要,比如汽车倒车雷达系统就是利用这一点。并且随着现代科学技术的飞速发展,我们可以相信这种报警器必将在应用更广阔的领域并且得到更深层次的应用。致谢从开始做论文到论文基本完成,经历了很长一段时间,从开始的只知道一些皮毛到现在的相对全面了解单片机与超声波测距仪的工作原理。在这个过程中有无数人给了我莫大的帮助。从上学期的院系里说我们要开始做毕业设计了,当时我的心里是特别的慌张。当时我想以我现在的状态只是对我所学的东西只是一知半解的状态,之后过

27、了几天已经彻底的确定下来关于我们毕业设计的工作日程了。我的心里面更加慌张了,我还不知道我能做些什么东西,更何况这个毕业设计了因为需要我们自己来定课题,然后通过自己所学的只是来完成我们的目标。经过我和我们组的同伴武汝成的近半个多月的努力,我们决定做超声波测距仪这个设计,说实话我们心里也相当的忐忑毕竟没有经验也不知道从哪里下手来做这个毕业设计。后来我们找了我们的指导老师陶老师,她细心的教导我们遇到困难要有信心去面对和冷静的心态,现在的互联网相当的发达你们完全可以通过网上的资粮来丰富自己,还有学校的图书馆查资料。当时我们俩就像发现了新大陆一样的,顿时茅塞顿开我们之前的状态就像是无头的苍蝇一样乱撞。当

28、然老师也给了我们很大的帮助。教会了我们如何在网上查自己需要的资源和之前学长和学姐的论文格式。后来我们就像打了鸡血一样,白天去图书馆,晚上在宿舍上网查资料,终于我们的付出没有白费得到了相应的成果,得到了我们想要的资料以及前辈们的经验加上老师一直的指导。论文以及毕业设计的实物都已经有了雏形,这对我们来说是一个非常好的开始。在那之后老师有牺牲了她自己的休息时间来指导我们的毕业设计,从开始的懵懵懂懂到了现在的全面了解。完全离不开老师的指导与耐心的讲解,还有同学们的帮助以及舍友的关怀,他们给我提供了相当多的思维方式。我觉得在这次毕业设计里最难的地方是在程序的编写上,由于本身学的就比较低浅,很难独立的编写

29、程序,无奈只好借助于网络,已经查阅书籍资料,几经修改,终于完成了程序的编写。在编写交通灯控制程序的过程中,出现了一些不可避免的小问题,虽然问题不大,但是如果不解决的话毕业设计就不太好进行下去了。比方说:程序中双引号的使用,并不是在英语书写状态下。最低级的错误就是字母打错了等等。有些小失误连我自己都感觉很莫名其妙,完全可以避免的,竟然净犯些低级的错误。然后开始设计电路图,进行仿真,完成以后,就去银河电子城购买相关的元器件,由于购买的时候,检查不够仔细,有几个元件是坏的,后来麻烦的跑了一趟。为了做这个实物花费了我整整一天的时间,还好是下雨天,好多人都在宿舍,有问题的时候,请教别人也比较方便。元件按

30、照电路图摆好之后,焊接起来还是蛮快的。只是电路板背后还需要电线将各个元件连接在一起,焊接的时候比较费事。因为电烙铁已经用了很久的缘故,氧化的比较严重,焊的时候焊锡弄的不均匀,使得焊点有点难看,也有虚焊漏焊的现象发生。所以,最后我把所有的焊点又重新的加工了一遍,尽量使其更加完美。在最后调试的时候,出现了异常情况,不过是些很小的错误。经过检查修改最后都逐一解决,程序顺利实现,并实现了其功用。 这次的毕业设计我又重新翻看了以前上课的书本和老师的笔记,显然我们又可以把老师讲的上课内容和重点又重新的巩固了一便,之前肯定有不少学生上课并没有好好听讲,正好可以借这次的机会提高自己的专业知识,进行进一步的理解

31、和巩固,也为我们以后毕业应聘打下一定坚实的基础。当然,我在毕业设计的过程中也遇到了很多问题,有的是我去跟老师求教,有的跟同学研究讨论,我更多的还是去藏书楼查阅书籍或是上网查阅相关资料,大多数的问题都解决了,还有一些问题实在找不到答案我就放一放,暂时不做这个课题的研究。 然后,我要感谢和我一起做的毕业设计的同学武汝成。给了我很多帮助和支持我的工作,也真诚的谢谢你。最后我要感谢我的家人,正是他们的困难使我、给我无尽的爱在生活和学习,理解和支持,让我总是充满了信心和勇气克服日益困难的道路上,顺利完成大学。有很多很多的朋友给我的鼓励和帮助在学校,不能列出,在这个还说谢谢你忠实!参考文献1基于DSP超声

32、波测距系统的设计与研究,电子产品世界,朱高中2超声波测距仪的设计,华南理工大学硕士论文,牟海荣3电子熄火器可靠性验证设备的设计,内燃机与动力装置,李升建;陈淑敏;李文广4电子熄火器可靠性验证设备的设计,内燃机与动力装置,李升建;陈淑敏;李文广5全国大学生电子设计竞赛,电子工业出版社,2010.66串口通信技术实例,北京航空航天大学出版社2005.2附件1:原理图附件2:程序#include #include #include eepom52.h#define uchar unsigned char #define uint unsigned intuchar code smg_du=0xc0,

33、0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff; uchar code smg_we=0xe0,0xd0,0xb0,0x70;uchar dis_smg8 =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;sbit smg_we1 = P34; sbit smg_we2 = P35;sbit smg_we3 = P36;sbit smg_we4 = P37;sbit c_send = P32;sbit c_recive = P33;uchar fla

34、g_hc_value; sbit beep = P23; bit flag_key_b_en,flag_key_set_en; uchar smg_i = 3; bit flag_300ms ;bit key_500ms ;long distance; uint set_d; bit flag_csb_juli; uint flag_time0; uchar key_can; uchar zd_break_en,zd_break_value; uchar menu_shudu = 10; bit flag_lj_en;bit flag_lj_3_en; uchar key_time,flag_

35、value; uchar menu_1; uchar a_a;void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);void smg_display()dis_smg0 = smg_dudistance % 10;dis_smg1 = smg_dudistance / 10 % 10;dis_smg2 = smg_dudistance / 100 % 10 & 0x7f;void write_eepom()SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_wri

36、te(0x2001, set_d / 256);byte_write(0x2058, a_a);void read_eepom()set_d = byte_read(0x2001);set_d = 5)key_value = 0;key_new = 1;flag_lj_en = 0;flag_lj_3_en = 0;flag_value = 0;key_time = 0;write_eepom();else if(P2 & 0x07) != 0x07)key_value +; else key_value = 0;if(key_value = 5)key_value = 0;key_new =

37、 0;flag_lj_en = 1; zd_break_en = 1; zd_break_value = 0; flag_key_b_en = 1; key_can = 20;if(key_500ms = 1)key_500ms = 0;key_new = 0;key_old = 1;zd_break_value = 0;if(key_new = 0) & (key_old = 1)switch(P2 & 0x07)case 0x06: key_can = 3; break; case 0x05: key_can = 2; break; case 0x03: key_can = 1; brea

38、k; /dis_smg3 = smg_dukey_can % 10; key_old = key_new; void smg_we_switch(uchar i)switch(i)case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_

39、we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;void display()static uchar i; i+;if(i = smg_i)i = 0;/P1 = 0xff; /P3 = 0xf0 | (P3 & 0x0f); /P3 = smg_wei | (P3 & 0x0f); smg_we_switch(i);P1 = dis_smgi; void delay()_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void send_wave()c_se

40、nd = 1; delay();c_send = 0; TH0 = 0; TL0 = 0;TR0 = 0; flag_hc_value = 0;while(!c_recive); TR0=1;while(c_recive) flag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) | (flag_time0 65000) TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;break ;else flag_csb_juli = 1;if(flag_csb_juli = 1)TR0=0; d

41、istance = TH0; distance = distance * 256 + TL0;distance +=( flag_hc_value * 65536);distance *= 0.017; if(distance 350)distance = 888; void time_init() EA = 1; TMOD = 0X11; ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; void key_with()if(key_can = 1)menu_1 +;if(menu_1 = 2)menu_1 = 0;if(menu_1 = 0)menu_shudu = 20;dis_smg0 = smg_dudistance % 10; dis_smg1 = smg_dudistance / 10 % 10 ; dis_smg2 = smg_dudistance / 100 % 10 & 0x7f; smg_i = 3;if(menu_1 = 1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报