基于单片机的超声波测距仪本科生毕业论文_第1页
基于单片机的超声波测距仪本科生毕业论文_第2页
基于单片机的超声波测距仪本科生毕业论文_第3页
基于单片机的超声波测距仪本科生毕业论文_第4页
基于单片机的超声波测距仪本科生毕业论文_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXXXXXXXXXX学院本科生毕业论文(设计)题目: 基于单片机的超声波测距仪 专业代码: XXXXXX XXXXXXX 学号: XXXXXXXX单位: XXXXXXX学院指导教师: XXXXXXXXX XX年XX月XX日原创性声明本人重声明:所提交的学位论文是本人在导师指导下,独立进行研究取得的成果。除文中已经注明引用的容外,论文中不含其他人已经发表或撰写过的研究成果,也不包含为获得聊城大学或其他教育机构的学位证书而使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人承担本声明的相应责任。 学位论文作者签名:日期 指 导 教 师 签 名:日期26 / 32目

2、录前言11.国外研究现状11.1国外研究现状:12.总体方案设计与可行性22.1总体方案设计:22.2总体方案可行性:32.2.1理论基础32.2.2现实基础33.硬件与单元电路设计33.1主控模板与电路设计33.2电源设计53.3 HC-SR04超声波测距模块53.4超声波传感器的工作原理53.5测距原理73.6 时钟电路的设计83.7 复位电路的设计93.8 声音报警电路的设计93.9 显示模块104.软件设计104.1主程序工作流程图105.实物制作135.1 单片机引脚135.2 焊接和检查135.3 实物图14结 论16参考文献17致 18附 录19附件1:原理图19附件2:程序20

3、摘 要由于超声波的指向性、抗干扰性较强,在介质中传播的距离较远,以与能量的衰减缓慢,而且超声波测距是一种非接触性检测技术,因而超声波常用于工业现场、车辆导航、水声工程等领域。目前,超声波测距技术已在机器人自主导航、倒车雷达、军事探测等领域得到广泛应用。本课题是对基于单片机的超声波测距技术的探究。在此采用的单片机为STC89C52。STC89C52单片机是STC公司生产的一种低耗高性能的微控制器,其易用性和多用途性受到了广大电子DIY设计者的信赖。本次设计包含硬件系统和软件系统,软件系统为各种程序的总称;硬件系统主要包括STC89C52单片机、输入/输出设备、外围应用电路等。其中以STC89C5

4、2为主控芯片,利用HC-SR04 超声波发射模块产生超声波,利用超声波接收模块接收超声波,同时根据记录的时间,将探测的物体距离探测出来,然后利用单片机进行处理运算,再与设定的报警距离值相比较,当检测距离小于设定值时,单片机发出指令控制蜂鸣器报警。关键词:超声波;单片机;超声波模块AbstractBecause of ultrasonic directivity, strong anti-jamming, spread in the medium distance, and the energy attenuation is slow, and ultrasonic ranging is a n

5、on-contact detection technology, which is commonly used in the industrial field, ultrasonic vehicle navigation, underwater acoustic engineering. At present, ultrasonic technique has been widely used in robot navigation, reversing radar, military detection etc. This paper is to explore the ultrasonic

6、 ranging technology based on SCM. This uses the STC89C52 microcontroller. STC89C52 microcontroller is the microcontroller STC produced by a low cost high performance, the usability and the versatility of the majority of electronic DIY designers trust. The design of the main hardware system, and the

7、hardware system is mainly composed of STC89C52 single chip computer, ultrasonic sensors, to make distance measurement and alarm system, using STC89C52 as the main control chip, using HC-SR04 ultrasonic module of ultrasonic transmitting, receiving ultrasonic receiver, at the same time, according to t

8、he records of the time, the detected object detected distance, then the use of single-chip processing operation, and the distance values compared to set the alarm, when the detecting distance is less than the set value, control buzzer alarm instructions of SCM.Key words:Ultrasonic; SCM; UltrasonicMo

9、dule基于单片机的超声波测距仪前言由于超声波测距技术是一种非接触性的检测技术,且不易受光、被测对象色彩等的干扰。与其它仪器相比更清洁,更耐潮湿、高温、粉尘、腐蚀性气体等恶劣环境,且具备维护少、环保、可靠性高、寿命长等优点1,因而常被广泛用于造纸业、采矿业、发电厂、化工厂、污水处理厂、农牧业、环境监测、食品、防汛、水文观测、空间定位、交通等行业。可进行不同环境条件下的距离准确度在线标定,可用在水位、酒、糖、饮料等液位的精准控制,还可以差值设定,可直观显示各种工业液罐的液位、料位。因此,超声波在特殊环境条件下的测距方面,有较广的应用。此外,超声波检测技术比较迅捷、简便、计算量小、易于控制等,且所

10、测精度能达到工业实际要求,因而在移动式机器人中装备超声波测距系统,使其时时获取距障碍物的位置信息(方向和距离),达到躲避障碍物的目的。因此超声波测距技术在机器人的研究中得到广泛的应用。鉴于超声波的以上特点,本论文将探讨超声波的测距原理,以与基于单片机的超声波测距仪的制作过程,实现原理。1.国外研究现状1.1国外研究现状:近几年来,国研究人员在新型超声波换能器研发、超声波回波信号处理以与超声波脉冲发射的选取等方面做了大量分析、研究工作,并依据研究中遇到的问题提出温度补偿、接收回路串入自动增益调节等解决方案。目前,国超声波测距技术与国外同类技术相比差距很大,且产品功能不完善,集成电路的测量精度只能

11、达到厘米级。但通过提高测量时间差的级别,并使用温度传感器进行温度补偿,测量精度有了很大提高,以可达到毫米级。国主要的研究成果为:超声波回波处理,最小均方自适应时延估计算法2;一体化换能器;专用脉冲发生器。通过采用新技术使得超声波测距的精度和距离有了很大提高。目前,古大、飞鹰、百特等品牌在国超声波测量方面比较出名,技术较为领先,但低端产品还是很多。国外对超声波探测技术的研究比较早,技术领先,产品较为齐全,性能相对稳定,测量精度较高,测量误差较小。其中国外品牌中以西门子、E+H、HAWK的产品较为齐全,而且质量比较稳定,深受业界欢迎。2.总体方案设计与可行性2.1总体方案设计:本次设计包含硬件系统

12、和软件系统,软件系统包括各种程序;硬件系统主要包括STC89C52单片机、输入/输出设备、外围应用电路等。模块划分为数据采集、按键控制、四位数码管显示、报警等子模块(如图1所示)。电路结构可划分为:HC-SR04超声波控制电路、蜂鸣器、STC89C52控制电路。对于本次设计,其核心设计为单片机的设计,故此本次设计也是对单片机的一种应用。单片机系统的设计,包括总体设计、硬件设计、软件设计等几个阶段。其中STC89C52为核心控制单元,是本次设计的重点。其次,本设计的另一个设计重点是对超声波模块的设计,利用HC-SR04 超声波发射模块产生超声波,利用超声波接收模块接收超声波,通过检测HC-SR0

13、4的IO接口ECHO输出的高电平信号持续时间,利用公式(所测距离=高电平信号持续时间*当地声速/2)将探测的物体距离计算出来,然后利用单片机进行处理运算,再与设定值相比较,当检测距离小于设定值时,单片机发出指令控制蜂鸣器报警。系统总体设计方框图如图1所示。电源STC89C52主控制器模块超声波传感器模块按键控制4位数码管显示模块蜂鸣器报警模块图1 系统方框图2.2总体方案可行性:2.2.1理论基础在物理学中,我们已知振动频率高于20khz或低于20hz时,这样的声波不易被我们察觉。物理学中规定,频率大于20khz的声波称之为超声波。这种特殊的声波,同样具有声波应有的物理特性,如折射、反射、干涉

14、、衍射和散射。故此,在理论上,我们对于超声波有一定的了解,对于总体方案实现奠定了理论基础。2.2.2现实基础近几年来,随着导航系统、移动式机器人、机械加工制造自动化等方面的需求,自动测距系统日渐被人们所重视。超声波测距系统与其他测距系统相比有以下几点优势:(1)与声波相比,超声波的定向性比较好,且能量比较集中,传输过程中较不宜衰减,所以有较强的反射能力,易于被探测到回波。(2)与光学测距相比,其波速较小,易于测试近距离目标,且纵向分辨率较好。不易受色彩、光线、电磁场等的影响,抗干扰能力比较强。对于水文观测有较为独特的优势。(3)超声波传感器与其他传感器相比,结构较为简单,且费用比较低,信息易于

15、处理,容易实现集成化和小型化。(4)单片机STC89C52是STC系列中应用较广的一款,集成化较高,易于实现测距系统的小型化。HC-SR04超声波测距模块灵敏度、定位精度较高。鉴于以上优势,对于总体方案的实现奠定了现实基础。3.硬件与单元电路设计3.1主控模板与电路设计主控模板的最小系统电路如图2所示。图2 最小系统电路硬件电路总设计如图3,本设计所用元器件如下: STC89C52、HC-SR04超声波测距模块、四位数码管显示器、按键、蜂鸣器等。其中D1是电源工作指示灯。本电路将用到3个按键:其一是设定键;其二是加键;其三是减键。图3 硬件电路总设计图3.2 电源设计电源部分采用3节5号干电池

16、,提供4.5V直流电。3.3 HC-SR04超声波测距模块超声波测距模块7,该模块具有非接触式距离感测功能,测距围为2cm-400cm ,测距精度可高达到 3mm。该模块包含超声波发生器、接收器以与控制电路。其工作原理8:采用 IO 口 TRIG 触发测距,给大于 10us 的高电平信号;该模块将自动发送 8 个 40000hz 的方波,并自动检测信号有无折返;若有信号折返,记录HC-SR04的IO口ECHO输出的高电平信号持续时间,利用公式(所测距离=高电平信号持续时间*当地声速/2)即可将探测的物体距离计算出来。从定时器0进行定时测量,8分频,TCNTT0预设值为0XCE,若timer0发

17、生2500次溢出中断,则计时为125ms,计算公式(时间单位:ms):T = 定时器0的溢出次数 * (0XFF - 0XCE)/ 1000 其定时器0依据分频不同而使得初值计算有所差异。该模块实物如图4所示。图4 超声波模块实物图3.4超声波传感器的工作原理超声波探头的核心部件是塑料外套或者金属外套中的一块压电晶片。晶片可以采用多种材料构成。晶片的尺寸,可根据实际需要有不同的规格,所以每个探头的性能也是有所不同,在使用前首先看说明书,了解性能。超声波传感器的性能指标主要包括:(1)工作频率9:工作频率是指压电晶片的共振频率。即若所加两端的交流电压的频率与晶片的共振频率一样,此时输出的能量最大

18、,灵敏度也最高。(2)工作温度:在使用中,一般压电材料的居里点比较高,尤其是在诊断用的超声波探头中,因为使用功率较小,所以工作温度也比较低,从而可以长时间地工作而不会失效。而在医疗用的超声探头,其温度则比较高,所以需要单独的制冷设备。(3)灵敏度:主要受晶片本身的影响。机电耦合系数越大,则灵敏度比较高;反之,灵敏度将会越低。如果有电压作用在压电瓷上,压电瓷将随电压和频率的变化而发生机械变形。另一方面,若压电瓷发生震动,则将产生一个电荷。根据这一原理,如果给两片压电瓷或 一片压电瓷和一个金属片构成的振动器,即所谓的双压电晶片元件,施加一个电信脉冲号时,就会引起弯曲振动而发射出超声波。反之,若给双

19、压电晶片元件施加超声振动 时,将会产生一个电信脉冲号。根据以上原理,即可将压电瓷用作超声波传感器。根据常规双压电晶片元件振动器的弯曲振动,在频率高于70kHz的情况下,是不能够实现此目的。因此,在高频率探测中,必须使用垂直厚度振动模式的 压电瓷。在此种情况下,压电瓷的声阻抗和空气的匹配就显得非常重要。压电瓷的声阻抗为2.6×107kg/m2s,而空气的声阻抗为 4.3×102kg/m2s。5个幂的差异会导致在压电瓷振动辐射表面上的大量损失。采用一种特殊材料粘附在压电瓷上,作为声匹配层,可实现与空气的声阻 抗相匹配。这种结构可以使超声波传感器在高达数百kHz频率的情况下,仍然

20、可以正常工作。市场上开放型超声波传感器较为常见,它的部结构如图5所示,复合式振动器被固定在底座。该复合式振动器由谐振器和双压电晶片元件振动器组成,而双压电晶片元件振动器由一个金属片和一个压电瓷片组成。如图,呈喇叭形的为谐振器,其作用是可以有效地将振动产生的超声波辐射出,并使超声波聚集于振动器的中央位置。压电瓷上有电压作用时,其将随电压和频率的变化而发生机械变形。此外,当压电瓷受振动时,将产生一个电荷。根据此原理,若给压电瓷和双压电晶片元件一个电信号时,由于弯曲振动而将发射出超声波。反则,若给双压电晶片元件施加超声波振动时,其将产生一个电信号。根据以上原理,超声波传感器可用压电瓷制作。图5 超声

21、波部结构3.5测距原理计时器与超声波发射器射出超声波同时开始计时,发射的超声波在空气中传播,若遇到障碍物就会立刻折返,当被超声波接收器收到,计时器立即停止。已知超声波在空气中的传播速度为当地声速(约为340m/s),根据计时器显示的时间(t),即可近似计算出发射点与障碍物的距离(s),用公式表示为:s=340t/2已知超声波是一种声波,其速度V与温度有关。工作中,若传播介质的温度近似不变,则可认为传播速度基本不变。若测距精度要求较高,可通过温度补偿来校正数值。一般近似计算中,速度值采用340m/s。再由所测往返的时间,即可求得所测距离。此即为超声波测距仪的基本原理。如图6所示:超声波发射 障碍

22、物S H 超声波接收图6 超声波的测距原理 (3-1) (3-2)式中:L-两探头中心距离的1/2.已知超声波传播的距离为: ( 3-3)式中:v超声波在介质中传播的速度; t超声波往返所需的时间.将(32)、(33)代入(3-1)中得: ( 3-4)已知在一定的温度下,超声波的传播速度v是一个常数(如以海平面为参考平面,温度T=30度时,V=349m/s);当所测距离H远大于L时,则(34)变为: ( 3-5) 由式可知,若知t即可求得H。3.6 时钟电路的设计时钟电路如图7所示,由图可知,反向放大器的输入和输出分别为XTAL1和XTAL2。当配置为片振荡器时,可采用石晶振荡或瓷振荡10。当

23、采用外部时钟源驱动器件时,XTAL2应不接。已知一个机器周期包含6个状态周期,而一个状态周期又包含2个振荡周期,故一个机器周期总包含12个振荡周期。若振荡频率为12MHZ,一个振荡周期为1/12us,则一个机器周期应为1us。如图7所示:图7 时钟电路图3.7 复位电路的设计复位常用上电自动复位和外部按键手动复位。STC89C52在时钟电路工作之后,要完成复位操作,需在RESET端持续给出2个机器周期的高电平信号。例如,当采用晶振频率为12MHz时,则对应的复位信号持续时间应2us。本此设计使用的是自动复位电路。如图8所示为复位电路图:图8 复位电路图3.8 声音报警电路的设计如图9所示,将一

24、个Speaker和三极管、电阻接到STC89C52的P13引脚上,则构成声音报警电路,如图9所示为声音报警电路图:图9 声音报警电路图3.9 显示模块本设计中显示模块采用数码管显示接口电路,如图10所示,图10 数码管电路4.软件设计4.1 主程序工作流程图由以上对工作原理和硬件结构的分析,系统主程序工作流程图可由如下图11所表示;系统初始化报警结束测得距离与设定值比较,小于距离比较,报警是否持续开始启动报警电路开始报警再次检测等待下次报警结束YNNYYN图11主程序工作流程图超声波测距程序流程图:图12 超声波测距程序流程图5.实物制作5.1 单片机引脚本论文采用的为STC89C52单片机,

25、如图13:图13 STC89C52本次设计中单片机主要使用了以下引脚: P0.0: 用于显示输出,控制LED段码显示。P0.1: 用于显示输出,控制LED段码显示。P0.2: 用于显示输出,控制LED段码显示。P0.3: 用于显示输出,控制LED段码显示。 P0.4: 用于显示输出,控制LED段码显示。P0.5: 用于显示输出,控制LED段码显示。 P0.6: 用于显示输出,控制LED段码显示。P0.7: 用于显示输出,控制LED段码显示。P2.0:用于显示输出,控制LED位码。

26、60;P2.1:用于显示输出,控制LED位码。P2.2:用于显示输出,控制LED位码。P2.3:用于显示输出,控制LED位码。P1.0:产生输出一个40KHZ的脉冲信号。INT0: 产生中断请求,接超声波接收电路。T0:用于按键控制,发送超声波。 T1:用于按键控制,停止发送超声波(即停止测距)5.2 焊接和检查从网上购买焊接所需元件。焊接过程中,首先将焊锡点在焊盘上,然后在焊盘与焊盘之间补上焊锡。焊接时,注意焊接速度尽量快,以避免电烙铁氧化形成黑色的氧化物。焊接完,仔细检查所焊接的电路,与焊接用的成品图和安装图、原理图(见附录)相对比。认真检查几次,然后才可通电试验。如果

27、发现试验失败,则认真仔细的检测电路。一、是否有虚焊;二、是否漏焊;三、是否焊接连接错误。图14 焊接图5.3 实物图 实物如下图15: 15 实物图结 论本设计探究了一种以单片机为基础的超声波测距仪的设计制作原理。该设计围绕以STC89C52单片机为核心处理器。本设计采用的是被动式超声波探测器件(HC-SR04),它不需要接触即可测出前方物体距离,并转化为相应的电信号输出.该测距仪报警系统的最大优点是可满足用户自行设定的报警距离,并在超过设定值时可实现连续报警,且易于操作、灵活、安装简洁、智能化高、报错率低。随着科学现代化的发展,人们对于安全有了更高的追求,基于科学技术的快速发展,测距仪报警系

28、统将会有更为广阔的应用前景。参考文献1 吴政江. 单片机控制红外线防盗报警器J. 师学院学报, 2001.2 宋文绪. 传感器与检测技术M. : 高等教育, 2004.3 余锡存. 单片机原理与接口技术M. : 电子科技大学, 2000.4 唐桃波, . 基于AT89C51的智能无线安防报警器 J. 电子设计应用, 2003, 5(6): 4951.5 全利. 单片机原理与接口技术M. : 航空航天大学, 2004.6 薛均义, 彦斌. MCS-51系列单片微型计算机与其应用M. : 交通大学, 2005.7 徐爱钧, 秀华. 单片机高级语言C51应用程序设计M. : 航空航天大学, 2006

29、.8 康华光. 电子技术基础(模拟部分)M. : 高等教育, 2004.9 建树,伟华,涂亚庆. 提高超声液位测量精度的新方法J. 自动化与仪表, 1997,(01): 3-5. 10阮成功,蓝兆辉,硕. 基于单片机的超声波测距系统J. 应用科技, 2004,(07): 8-10. 11童峰,许水源,许天增. 一种高精度超声波测距处理方法J. 大学学报(自然科学版), 1998,(04):810.12育才,华芳,王荣兴. 单片机原理与其应用. :电子工业,2006:1287.13王丰,栾学德. 单片机原理与应用技术. :航空航天大学,2007:254261. 14胡大可,培弘,方路平. 基于单

30、片机8051的嵌入式开发指南. :电子工业,2003:1150. 致 对于本次毕业论文设计,感我的学校,给了我这次学习的机会;感我的指导老师,无论是从选题指导,还是从论文框架到细节修改,都给予了非常细致的指导,并提出了很多独创性的宝贵意见与建议,指导老师以其高度的敬业精神、实事的工作作风、严谨的治学态度和大胆创新的进取精神对我产生了很大的影响,给了我深深的启迪。本次设计是在老师的精心指导和大力支持下才能够顺利完成的;感所有曾经授之以业的老师,若没有这些年知识的积累,我也不会有如此的信心和能力来完成本次设计。此外,感父母、同学、朋友给予的精神支持。感恩之余,诚恳地希望各位老师对我的论文多加批评指

31、正,使我与时完善论文的不足之处。最后,谨以此致,在百忙之中抽出宝贵时间对本论文进行审阅的各位老师。附 录附件1:原理图 附件2:程序#include <reg52.h> /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量围0255#define uint unsigned int /无符号整型 宏定义变量围065535#include <intrins.h>#include "eeprom52.h"uchar code smg_du=0xc0,0xf9,0xa4,0xb0,0x99,0x92

32、,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;/超声波接收sbit beep = P2

33、3; /蜂鸣器IO口定义uchar smg_i = 3; /显示数码管的个位数bit flag_300ms ;long distance; /距离uint set_d; /距离uchar flag_csb_juli; /超声波超出量程uint flag_time0; /用来保存定时器0的时候的uchar menu_1; /菜单设计的变量uchar a_a;#define RdCommand 0x01 /定义ISP的操作命令#define PrgCommand 0x02#define EraseCommand 0x03 #define Error 1#define Ok 0#define Wai

34、tTime 0x01 /定义CPU的等待时间sfr ISP_DATA=0xe2; /寄存器申明sfr ISP_ADDRH=0xe3;sfr ISP_ADDRL=0xe4;sfr ISP_CMD=0xe5;sfr ISP_TRIG=0xe6;sfr ISP_CONTR=0xe7;/* = 打开 ISP,IAP 功能 = */void ISP_IAP_enable(void) EA = 0; /* 关中断 */ ISP_CONTR = ISP_CONTR & 0x18; /* 0001,1000 */ ISP_CONTR = ISP_CONTR | WaitTime; /* 写入硬件延时

35、*/ ISP_CONTR = ISP_CONTR | 0x80; /* ISPEN=1 */* = 关闭 ISP,IAP 功能 = */void ISP_IAP_disable(void) ISP_CONTR = ISP_CONTR & 0x7f; /* ISPEN = 0 */ ISP_TRIG = 0x00; EA = 1; /* 开中断 */* = 公用的触发代码 = */void ISPgoon(void) ISP_IAP_enable(); /* 打开 ISP,IAP 功能 */ ISP_TRIG = 0x46; /* 触发ISP_IAP命令字节1 */ ISP_TRIG =

36、 0xb9; /* 触发ISP_IAP命令字节2 */ _nop_();/* = 字节读 = */unsigned char byte_read(unsigned int byte_addr)EA = 0; ISP_ADDRH = (unsigned char)(byte_addr >> 8);/* 地址赋值 */ ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD & 0xf8; /* 清除低3位 */ ISP_CMD = ISP_CMD | RdCommand; /* 写入读命令

37、*/ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭ISP,IAP功能 */ EA = 1; return (ISP_DATA); /* 返回读到的数据 */* = 扇区擦除 = */void SectorErase(unsigned int sector_addr) unsigned int iSectorAddr; iSectorAddr = (sector_addr & 0xfe00); /* 取扇区地址 */ ISP_ADDRH = (unsigned char)(iSectorAddr >> 8); ISP_ADDRL

38、 = 0x00; ISP_CMD = ISP_CMD & 0xf8; /* 清空低3位 */ ISP_CMD = ISP_CMD | EraseCommand; /* 擦除命令3 */ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭ISP,IAP功能 */* = 字节写 = */void byte_write(unsigned int byte_addr, unsigned char original_data) EA = 0;/ SectorErase(byte_addr); ISP_ADDRH = (unsigned char)(byt

39、e_addr >> 8); /* 取地址 */ ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD & 0xf8; /* 清低3位 */ ISP_CMD = ISP_CMD | PrgCommand; /* 写命令2 */ ISP_DATA = original_data; /* 写入数据准备 */ ISPgoon(); /* 触发执行 */ ISP_IAP_disable(); /* 关闭IAP功能 */ EA =1;/*1ms延时函数*/void delay_1ms(uint q)

40、uint i,j;for(i=0;i<q;i+)for(j=0;j<120;j+);/*处理距离函数*/void smg_display()dis_smg0 = smg_dudistance % 10;dis_smg1 = smg_dudistance / 10 % 10;dis_smg2 = smg_dudistance / 100 % 10 & 0x7f;/*把数据保存到单片机部eeprom中*/void write_eeprom()SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_write(0x2001

41、, set_d / 256);byte_write(0x2058, a_a);/*把数据从单片机部eeprom中读出来*/void read_eeprom()set_d = byte_read(0x2001);set_d <<= 8;set_d |= byte_read(0x2000);a_a = byte_read(0x2058);/*开机自检eeprom初始化*/void init_eeprom()read_eeprom();/先读if(a_a != 1)/新的单片机初始单片机问eepromset_d = 50;a_a = 1;write_eeprom(); /保存数据/*独立

42、按键程序*/uchar key_can; /按键值void key() /独立按键程序static uchar key_new;key_can = 20; /按键值还原P2 |= 0x07;if(P2 & 0x07) != 0x07)/按键按下delay_1ms(1); /按键消抖动if(P2 & 0x07) != 0x07) && (key_new = 1)/确认是按键按下key_new = 0;switch(P2 & 0x07)case 0x06: key_can = 3; break; /得到k2键值case 0x05: key_can = 2;

43、break; /得到k3键值case 0x03: key_can = 1; break; /得到k4键值else key_new = 1;/*按键处理显示函数*/void key_with()if(key_can = 1)/设置键menu_1 +;if(menu_1 >= 2)menu_1 = 0;smg_i = 2;/只显示3位数码管 if(menu_1 = 1)/设置报警if(key_can = 2)set_d + ;/加1if(set_d > 400)set_d = 400;if(key_can = 3)set_d - ;/减1if(set_d <= 1)set_d =

44、 1;dis_smg0 = smg_duset_d % 10; /取小数显示dis_smg1 = smg_duset_d / 10 % 10 ; /取个位显示dis_smg2 = smg_duset_d / 100 % 10 & 0x7f ; /取十位显示dis_smg3 = 0x88; /awrite_eeprom(); /保存数据 /*报警函数*/void clock_h_l()static uchar value;if(distance <= set_d)value +; /消除实际距离在设定距离左右变化时的干扰if(value >= 2)beep = beep; /蜂鸣器报警else value = 0; beep = 1;/取消报警/*数码位选函数*/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; sm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论