传感器与检测技术课程设计报告超声波测距系统的设计

上传人:沈*** 文档编号:79420760 上传时间:2022-04-23 格式:DOC 页数:28 大小:496KB
收藏 版权申诉 举报 下载
传感器与检测技术课程设计报告超声波测距系统的设计_第1页
第1页 / 共28页
传感器与检测技术课程设计报告超声波测距系统的设计_第2页
第2页 / 共28页
传感器与检测技术课程设计报告超声波测距系统的设计_第3页
第3页 / 共28页
资源描述:

《传感器与检测技术课程设计报告超声波测距系统的设计》由会员分享,可在线阅读,更多相关《传感器与检测技术课程设计报告超声波测距系统的设计(28页珍藏版)》请在装配图网上搜索。

1、吉林建筑大学电气与电子信息工程学院传感器与检测技术课程设计报告设计题目: 超声波测距系统的设计 专业班级: 学生姓名: 学 号 100312114 指导教师: 设计时间: 2015.6.152014.6.26 教师评语:成绩 评阅教师 日期 目录第一章 绪论31.1 项目研究背景及意义3第二章 设计方案与论证42.1 设计方案选择42.2 方案论证42.2.1测距传感器的选择52.2.2 超声波测试模块的选择52.2.3 超声波的特性52.2.4 超声波传感器原理62.2.5 电源选择62.2.6 显示器的选择62.2.7 单片机的选择7第三章 硬件电路设计83.1 主控制模块93.2 电源接

2、口电路103.3 超声波测试模块113.3.1 超声波发射模块113.3.2 超声波接收电路113.3.3 测距分析123.4 时钟电路的设计133.5 复位(RST)电路的设计133.6 声音报警电路的设计143.7 显示模块14第四章 软件设计144.1 系统软件设计144.2 主程序15第五章 总结16第六章 参考文献17附 录18附件1:原理图18附件2:程序19第一章 绪论1.1项目研究及背景意义因为超声波在介质中传播不易受干扰,方向性好,能量集中度高,不受光线、被测对象颜色等的影响,传播距离比较远等许多特性,因此经常被用于距离的非接触测量,如测距仪等。为此,深入研究超声波的产生与传

3、播特性;研发高效率收发电路,对于超声波检测技术的应用和发展具有十分重要的现实意义。随着人们生活水平和科学技术的提高,越来越多的人拥有了汽车。随着城市化的加快,道路显得很拥挤。尤其是很多新手驾车,特别是倒车时经常发生擦碰。经常因为一些小问题,造成车尾的损坏,车身被刮花等损失。如果有可以测距的设备,提示车尾或车头与障碍的距离,让新手摆脱倒车的危险,同时超声波测距仪较其它仪器更卫生,因而水处理厂、食品、环保检测等场合;更耐潮湿、耐高温,从而被广泛应用于纸业和防汛灰等。可在不同环境中(电厂、化工业、水处理厂、污水处理厂等)进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直

4、接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,因此为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。因此超声波测距在移动机器人的研究上得到了广泛的应用。同时由于超声波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用。1.2主要设计内容内容: 采用40KHz的超声波发射和接收传感器测量距离。可采用发射和接收之间的距离,也可将发射和接收平行放在一起,通过反射测量距离。功能:

5、(1)LED数码管显示测量距离,精确到小数点后一位(单位:cm)。(2)测量方式可通过硬件开关预置。(3)测量范围:30cm200cm,(4)误差0.5cm。(5)其它。1.3课程设计要求及目的要求:(1)掌握传感器的工作原理及相应的辅助电路设计方法。(2)独立设计原理图及相应的硬件电路。(3)设计说明书格式规范,层次合理,重点突出。并附上详细的原理图。目的:通过传感器与检测技术课程设计,使学生掌握传感器及检测系统设计的方法和设计原则及相应的硬件调试的方法。进一步理解传感器及检测系统的设计和应用。 第二章 设计方案与论证2.1 设计方案选择此设计总体上包括硬件电路和软件程序设计两个部分。主要划

6、分为数据采集、按键设置、四位数码管实时距离显示、报警等模块。硬件电路结构可划分为:超声波传感器、蜂鸣器、单片机(AT89S51)控制电路。本设计的核心是单片机和超声波传感器,此系统通过三节1.5V电池供电,通过开关控制整个电路的通电与断电;此系统也是单片机的一种应用。单片机应用系统也是由硬件和软件组成。硬件包括单片机最小系统,输入/输出设备以及外部应用电路。该软件Keil是一个各种工作程序综合。应用系统的开发过程,包括整体设计,硬件设计,软件设计阶段。该系统采用AT89S51单片机为核心的控制单元,当所测量的距离小于所设定的距离时,主控制芯片将测量值与设定值进行比较。然后控制蜂鸣器报警。电源A

7、T89S51主控制器模块按键控制超声波传感器模块4位数码管显示模块 蜂鸣器报警模块 LED数码管 蜂鸣器模块 图2.1 系统方框图 2.2方案论证2.2.1测距传感器的选择超声波传感器:超声波是一种超出人类听觉极限的声波的振动频率超过20 kHz的机械波。在超声波传感器每次工作是要转换的电压和超声波时,超声波传感器发射超声波,该超声波探头发送超声波发射电压的转换,接收到的超声波,超声波探头接收超声波回波电压变换到时单片机控制芯片。高频率的超声振动,波长短,绕射小的现象,而且也为反射线等良好的方向性双向通信和超声波传感器的能量消耗缓慢利于测距。2.2.2 超声波的特性声音是一种与人类生活密切相关

8、的自然现象。声音其实就是物体振动频率;科学家把每秒的振动次数称为声音的频率,它的单位为赫兹。科学家通过测试证明我们人类耳朵能听到20至20000赫兹的声音频率。我们不能听见振动频率大于20000(赫兹)或小于20赫兹的(声波)。“超声波”其实就是频率低于20000赫兹的声波,而高于20000赫兹的声波则称为次声波。当一个高频率的声音超过人耳听觉频率范围时(据统计并得到国际认同,取整数为20000赫兹),人们会注意不到周围的声音的存在,因此人们把这种高频率的声称为“超”声。2.2.3 超声波传感器原理市面上常见的超声波传感器多为开放型,一个复合式振动器被灵活地固定在底座上。该复合式振动器是由谐振

9、器以及一个金属片和一个压电陶瓷片组成的双压电晶片元件振动器。谐振器呈喇叭形,目的是能有效地辐射由于振动而产生的超声波,并且可以有效地使超声波聚集在振动器的中央部位。当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。基于以上作用,便可以将压电陶瓷用作超声波传感器。2.2.4 电源选择(1)USB供电通过USB串口线连接到电脑后其他USB供电设备

10、,接一个降压电路就可以得到电路所要的电压。(2) 电池供电用3节1.5V的电池供电,方便简单,便也携带。本设计电路相对来说简单,如果用USB供电,需要携带有USB接口的电源十分不方便,而且本设计对电压的要求并不高,3节1.5V电池共4.5V足以给电路供电而且携带方便使用便捷,所以本设计选择用电池供电。2.2.5 显示器的选择在单片机的显示电路中,常用的显示模块有液晶显示屏、发光管、LED数码管等。在本设计中可以选择液晶显示屏或者LED数码管。(1) LCD液晶屏液晶的物理性能使得液晶显示得以实现,简要地讲,液晶显示屏就是在两个平行的板之间填充有液晶材料,通过改变液晶分子上的电压来改变列行位置的

11、材料内,以实现着色和照明的目的从而显示出色调错落有致的图像,通过在其显示区域中的电压控制中,有一个电显示,从而使该图形可以显示出来。液晶显示具有显示质量高、体积小、重量轻、功耗低等优点。(2) LED数码管LED数码管实质上是由多个发光二极管排列组合而成的,数码管的显示通过单片机的输入输出口来进行位选和片选。常用的LED数码管一位数码管、三位数码管和四位数码管;当需要显示更多位的数时,可以用多个数码管进行组合。LED数码管具有防紫外线、耐压、耐破裂、耐高低温、耐燃、超强抗冲击老化等优点。本设计只需四位数显示就足够了,本设计有一个很大的优点就是便于携带使用方便,而液晶显示屏易碎不耐摔,不方便携带

12、且价格相对来说较高,综合安全和性价比等方面的考虑,本设计选择4位的LED数码管作为显示器。数码管有很多种,从其组合方式上主要分为共阳数码管和共阴数码管两种,这两种在工作中并没有太大的区别。4位数码管其实是由4个1位数码管组合在一起而成,每个数码管由8个发光二极管组成,其中七个分别为a、b、c、d、e、f、g排列组合成8字行,用来显示数字09,还有一个作为小数点DP。当需要显示某个数字时,只需将其分为按8字形将其分为七段,然后选择相应段位的数码管通电就可以显示需要的数字。所有的发光二极管的阴极连在一起的称为共阴数码管如图2.6(a)所示;发光二极管的阳极连在一起的称为共阳,如图2.6(b)所示。

13、 图2.6 (a)共阴数码管 (b)共阳数码管2.2.6 单片机的选择2.2.6.1 方案选择方案一:采用51系列单片机,它从内部的硬件到软件有一套完整的按位操作的系统,称作位处理器,能够进行位传送,置位,清零,测试,逻辑运算等,功能完备。51系列的另外一个优点是乘法和除法指令,给编程带来方便。 方案二:采用PIC系列单片机,它采用Harvard双总线结构,运行速度快,指令流水线结构,程序存储器的访问和数据存储器的访问并行处理,PIC系列单片机相对其他单片机采用精简指令集,哈佛总线结构,流水线取指方式,抗干扰能力强,高速度。本设计系统依据单片机的选用原则,成本的考虑,本次课题选择了适合本系统的

14、51系列单片机。2.2.6.2 AT89S51功能特性概述目前市面上使用的比较普遍的51系列单片机是AT89S51。AT89S51是使用生产的低电压,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。其主要性能参数如下:(a) 32个可编程IO口线(b) 6个中断源(c) 2个16位定时计数器(d) 三级加密程序存储器(e)全静态操作:0Hz24MHz(f) 低功耗空闲和掉电模式(g) 与MCS-51产品指令系统完全兼容 图2.8 STC89C52的引脚排列图第三章 硬件

15、电路设计3.1 主控制模块主控制最小系统电路如图3.1所示。 图3.1 最小系统硬件电路总设计见附录,通过3节1.5V电池给整个电路供电,电路中用到4个按键,一个是设定键, 一个加键,一个减键和一个复位键,通过按键设置最小报警距离,此电路带有断电保护功能,即使突然断电也会保持原有的设置,当复位键按下时默认设置值为50厘米;超声波传感器通过发射声波遇到障碍物及时返回接受计算处理的处距离在数码管上实时显示,当测得的距离小于设定值时蜂鸣器报警,同时发光二极管闪烁,此处通过声音和灯报警实现双重保险;其中D1为电源工作指示灯,D2为小于设定值报警指示灯;外接口J1为主控芯片的程序下载口。单片机AT89S

16、51的P1口是一个8位双向I/O口,内部自带上拉电阻;而P1口只有通用I/O接口一种功能;另外P1口能驱动4个LSTTL负载;在使用时通常可以不外接上拉电阻就能够驱动发光二极管工作;其P1.0P1.6分别接数码管的管脚A-G作为4位共阳数码管的断码选择控制端,端口P1.7连接数码管的DP口作为数码管显示的小数点选择端口。P3口类似于P1口是一个8位双向I/O口并且内部自带上拉电阻;P3口同样能驱动4个LSTTL负载;不同于P1口的是这8个引脚还有其特有的的第二功能。P3口的第二功能如表3.1所示。本实验中P3.4-P3.7接PNP三极管S8550三极管驱动数码管的1H-4H作为片选端;单片机A

17、T89S51的P3.2端口连接超声波模块的TRIG口用来输出超声波模块发射电路所需要的40kHz的方波信号,其P3.3端口连接超声波模块的Echo口用来读取超声波接收电路输出的返回信号。P3引脚兼用功能P3.0串行通讯输入口(RXD)P3.1串行通讯输出口(TXD)P3.2外部中断0请求输入端( INT0)P3.3外部中断1请求输入端(INT1)P3.4定时器0输入端(T0P3.5定时器1输入端(T1)P3.6外部数据存储器写选通信号输出端(/WR)P3.7外部数据存储器写选通信号输出端(/RD) 表3.1 P3口第二功能表3.2 电源接口电路 电源选择3节1.5V电池供电,接口电路如图3.2

18、所示。图 3.2 电源接口电路3.3 超声波测试模块3.3.1 超声波发射模块超声波模块通过端口Trig从单片机AT89S51获得40K赫兹的方波信号通过单电源电平转换芯片MAX323由超声波探头将电信号转换为机械波发射出去;可是单片机所产生的40 kHz的方波信号需要进行放大才能由超声波探头将超声波发射出去,所以本设计选用MAX323芯片进行信号放大,再由超声波探头将电信号转为机械波发射出去而构成一个完整的超声波发射电路。如图3.3所示。图3.3 超声波发射电路3.3.2 超声波接收电路由于超声波在空气中的传播过程是不断衰减的,也就是说超声波发射模块发射出的机械波在传播的过程中会越来越弱,且

19、当传播的距离越远时衰减得就越厉害,所以一般情况下超声波接收电路所接收的超声波信号都是比较薄弱的,所以需要将接收到的信号进行放大,本设计中选用放大器TL074将超声波接收探头所接受到的信号进行放大。如下图3.4所示。图3.4 超声波接收电路3.3.3 测距分析由一个发射电路和接收电路共同构成超声波传感器,对于超声波发射探头发射机械波的同时开始定时的方向上的超声波发射器电路的时就立即返回的方式在空气中的超声波传播遇到障碍时,接收器接收反射的超声波波立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2超声波回波测距

20、方法是检测中最常见的方法中,超声波发射器发射超声波到一定的方向,而在传输计数器开始计数时,在空气中的超声波的传播,在途中到阻挡遇到的障碍立即反射回表面,超声波接收器接收超声波反射回和基于定时器的记录时间停止定时为t时,在空气中的超声波传播速度340米/秒,由此发射机能够从间距s的障碍物表面的计算即:s=340t/2。 因为超声波的本质依旧是声波,其速度V和温度T。在使用中,如果传输介质是非法的温度变化,该过程可以是类似于在超声波传播速度基本上是恒定的。高精度距离测量,温度补偿方法应该是通过测量结果的数值修正。确定声音的速度后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的基本原理

21、。如图3.5所示: 超声波发射 障碍物 S H 超声波接收图3.5 超声波的测距原理 (3- 1) (3-2)式中:L-两探头之间中心距离的一半.又知道超声波传播的距离为: ( 3-3)式中:v超声波在介质中的传播速度; t超声波从发射到接收所需要的时间.将(32)、(33)代入(3-1)中得: ( 3-4)其中,超声波的传播速度v在一定的温度下是一个常数(例如在温度T=30度时,V=349m/s);当需要测量的距离H远远大于L时,则(34)变为: ( 3-5) 所以,只要需要测量出超声波传播的时间t,就可以得出测量的距离H.3.4时钟电路的设计AT89S51单片机内部自带反向放大器,其输入和

22、输出端分别为引脚XTAL1和引脚XTAL2。可以用片内振荡器作为该反向放大器的配置。可以采用石晶振荡或者采用陶瓷振荡,两者均可。如果采用外部时钟源驱动器件,XTAL2应悬空。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期。本设计中XTAL1引脚和XTAL2引脚外接的是频率为12 MHz的石英晶振,可以产生一1us的机器周期,从而就可以产生时钟信号。如图3.6所示为时钟电路。图3.6 时钟电路图3.5 复位(RST)电路的设计 用到的是单片机的9号引脚,本设计中用到两种复位方法,一种是上电自动复位,即每当初次给电路供电时有一个复位,报警值复位为

23、50cm;另一种是外部按键手动复位,即在工作构成中当按下复位键是,报警值恢复为初始值50cm,所谓的按键复位其实就是当按键按下时给单片机的RST(9脚)一个高电平信号。图3.7 复位电路图3.6 声音报警电路的设计 如下图所示,用一个Speaker和三极管、电阻接到单片机的P13引脚上,构成声音报警电路,测量值小于设定值时蜂鸣器会发音报警,同事发光二极管会闪烁报警,如图3.8示为声音和指示灯报警电路。图3.8 声音报警电路图37显示模块数码管动态显示原理:在编程时,单片机通过I/O口输出段选和位选信号,首先位选信号选中其中一个数码管,然后输出段码,利用人的视觉暂留的特点,使该数码管显示所需要的

24、内容,延时一段非常短的时间后,再选中另一个数码管,再输出对应的段码,高速交替。本设计的数码管显示电路如下图3.9所示。图3.9 数码管电路第四章软件设计4.1系统软件设计本系统软件设计的思路是:当电路通电时,首先让给P2.3端口一个低电平让蜂鸣器响一声来提示正式通电;然后调用测距函数,通过单片机的P3.2口输出一个方波电信号驱动超声波发射模块发射超声波,通过超声波的Echo口读取超声波接收模块接收到的信号得出距离障碍物的距离通过P1.7口输送给数码管通过数码管实时显示。单片机的P2.2脚接按键4作为设置键,当检测到按键4按下时数码管显示三位数(如0.51,单位是m)为要设置的报警值并判断是否有

25、其他按键按下,如果P2.1口的按键3按下则数码管显示的数减1cm,如果P2.0口的按键2按下则加1cm,设置完成后再按按键4 确认。在程序中定义一个变量value(初值为0),作为是否报警的判断标志位,当测得的实际距离distance小于等于设定值set_d时,中间量value加1,否则保持不变,为了消除实际距离在设定距离左右变化时的干扰,当value等于2时给P2.3扣一个低电平蜂鸣器报警,报警结束时给value赋初值0等待下次报警。4.2主程序完整的程序主要由数码管段选定义、1ms延时函数 、处理距离函数 、把数据传到单片机和从单片机中读取数据程序、独立按键程序、按键处理显示函数、报警函数

26、、数码位选和数码显示函数、超声波测距程序以及定时器中断服务程序等其他一些小程序组成。主函数如下:void main()beep = 0; /开机叫一声 delay_1ms(150);P0 = P1 = P2 = P3 = 0xff; /初始化单片机IO口为高电平send_wave();/测距离函数smg_display();/处理距离显示函数time_init();/定时器初始化程序init_eeprom(); /开始初始化保存的数据send_wave();/测距离函数send_wave();/测距离函数while(1) if(flag_300ms = 1)flag_300ms = 0;clo

27、ck_h_l(); /报警函数if(beep = 1)send_wave();/测距离函数if(menu_1 = 0)smg_display(); /处理距离显示函数key(); /按键函数if(key_can 10)key_with(); /按键处理函数第五章总结课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。 通过这次接口设计,本人在多方面都有所提高。通过这次模具设计,综合

28、运用本专业所学课程的理论和生产实际知识进行一次接口设计设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了AT89S51芯片设计等课程所学的内容,以及8AT89S51芯片设计的内容。 在这次设计过程中,体现出自己单独设计接口的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。我们的王老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次接口设计的每个实验细节和每个数据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了

29、这次课程设计。同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 本实验是基于超声波测距的智能报警系统的单片机技术。通过本系统的工作核心处理器单片机AT89S51,超声波传感器,它是一种新型的片被动超声波探头,可以测量前面的非接触距离的物体,并把它转换成相应的电信号输出,并进行适当的报警。该报警器的最大特点是使用户操作简单,易懂,灵活;且易于安装,高智能,低误报率。此系统的设计由于条件限制存在一定的误差,如果是用于精度要求更高的场合一定需要加上温度补偿电路,可以减小很大的误差。随着现代人的快速发展,增强科技安全意识,我相信警报将在更广阔的领域,特别是获得在汽车和交通运

30、输领域的应用有更深层次。参考文献:1 李光飞,楼然苗,胡佳文等.单片机课程设计实例指导M.北京:北京航空航天大学出版社,20042 刘文涛.单片机语言C51典型应用设计M.北京:人民邮电出版社,20013 姚建栓,于意仲 光电子技术 北京:高等教育出版社,20064 张毅刚 单片机原理及应用 哈尔滨:高等教育出版社,2012 5 梁森,欧阳三泰 自动检测技术及应用 浙江:机械工业出版社,2006附录1:附录2:#include #include #include eepom52.h#define uchar unsigned char #define uint unsigned int/数码管

31、段选定义 0 1 2 3 4 56 7 8 9uchar code smg_du=0xc0,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;s

32、bit smg_we4 = P37;sbit c_send = P32;/超声波发射sbit c_recive = P33;/超声波接收uchar flag_hc_value; /超声波中间变量sbit beep = P23; /蜂鸣器IO口定义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;

33、 /用来保存定时器0的时候的/ 按键的IO变量的定义uchar key_can; /按键值的变量uchar zd_break_en,zd_break_value; /自动退出设置界面uchar menu_shudu = 10; /用来控制连加的速度bit flag_lj_en; /按键连加使能bit flag_lj_3_en; /按键连3次连加后使能 加的数就越大了 uchar key_time,flag_value; /用做连加的中间变量uchar menu_1; /菜单设计的变量uchar a_a;/*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(

34、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;/*把数据保存到单片机内部eepom中*/void write_eepom()SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_write(0x2001, set_d / 256);byte_write(

35、0x2058, a_a);/*把数据从单片机内部eepom中读出来*/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;/关闭3秒后使能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

36、= 0;key_new = 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; /得到k2键值c

37、ase 0x05: key_can = 2; break; /得到k3键值case 0x03: key_can = 1; break; /得到k4键值/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

38、: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_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; /段选

39、 void delay()_nop_(); /执行一条_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超声波测距程序*/void send_wave()c_send = 1; /10us的高电平触发 delay();c_send = 0; TH0 = 0; /给定时器0清零TL0 = 0;TR0 = 0; /关定时器0定时flag_hc_value = 0;while(!c_recive); /当c_recive为零时等待TR0=1;while(c_recive) /当c_recive为1计数并等待fl

40、ag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) | (flag_time0 65000) /当超声波超过测量范围时,显示3个888TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;break ;else flag_csb_juli = 1;if(flag_csb_juli = 1)TR0=0; /关定时器0定时distance = TH0; /读出定时器0的时间distance = distance * 256 + TL0;distance +=( flag_hc_value *

41、65536);/算出超声波测距的时间 得到单位是msdistance *= 0.017; / 0.017 = 340M / 2 = 170M = 0.017M 算出来是米if(distance 350) /距离 = 速度 * 时间distance = 888; /如果大于3.8m就超出超声波的量程 /*定时器0、定时器1初始化*/void time_init() EA = 1; /开总中断TMOD = 0X11; /定时器0、定时器1工作方式1ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时ET1 = 1; /开定时器1中断 TR1 = 1; /允许定时器1定时/*按键

42、处理数码管显示函数*/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)menu_shudu = 1;dis_smg0 = smg_duset_d % 10; dis_smg1 = s

43、mg_duset_d / 10 % 10; dis_smg2 = smg_duset_d / 100 % 10 & 0x7f ; dis_smg3 = 0x88;smg_i = 4;if(menu_1 = 1)/设置高温报警if(flag_lj_3_en = 0) /三次连加之后速度加快menu_shudu = 10 ; /500ms 加减一次else menu_shudu = 1; /250ms 加减一次if(key_can = 2)set_d + ;/按键按下未松开自动加三次if(set_d 350)set_d = 350;dis_smg0 = smg_duset_d % 10; /取小数

44、显示dis_smg1 = smg_duset_d / 10 % 10 ; /取个位显示dis_smg2 = smg_duset_d / 100 % 10 & 0x7f; /取十位显示dis_smg3 = 0x88; /aif(key_can = 3)set_d - ;/按键按下未松开自动加三次if(set_d = 1)set_d = 1;dis_smg0 = smg_duset_d % 10; /取小数显示dis_smg1 = smg_duset_d / 10 % 10 ; /取个位显示dis_smg2 = smg_duset_d / 100 % 10 & 0x7f ; /取十位显示dis_s

45、mg3 = 0x88; /a/write_eepom(); /*报警函数*/void clock_h_l()static uchar value;if(distance = 5)beep = beep; /蜂鸣器报警else value = 0; beep = 1;/取消报警/*按键按下蜂鸣器响下*/ void key_beep()static uint value;if(flag_key_b_en = 1) & (flag_key_set_en = 1)beep = 0; /打开蜂鸣器 value +;if(value 800)value = 0;flag_key_b_en = 0;beep

46、 = 1;/关闭蜂鸣器void main()send_wave();/测距离函数smg_display(); /处理距离显示函数time_init();init_eepom(); /读eepom数据while(1)if(flag_300ms = 1)flag_300ms = 0;clock_h_l(); /报警函数send_wave();/测距离函数if(menu_1 = 0)smg_display(); /处理距离显示函数if(zd_break_en = 1)/自动退出设置界面程序zd_break_value +; /每300ms加一次if(zd_break_value 100) /30秒后

47、自动退出设置界面menu_1 = 0; /smg_i = 3;zd_break_en = 0;zd_break_value = 0; key(); /按键函数if(key_can = 150)value = 0;flag_300ms = 1;if(value % 25 = 0)if(flag_lj_en = 1) /按下按键使能 50mskey_time +;if(key_time = menu_shudu) /500mskey_time = 0;key_500ms = 1; /500msflag_value +;if(flag_value = 3)flag_value = 10;flag_lj_3_en = 1; /3次后1.5秒后连加大些28

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!