根据温度补偿的超声波测距设计

上传人:小鹤 文档编号:171520968 上传时间:2022-11-27 格式:DOCX 页数:34 大小:499.84KB
收藏 版权申诉 举报 下载
根据温度补偿的超声波测距设计_第1页
第1页 / 共34页
根据温度补偿的超声波测距设计_第2页
第2页 / 共34页
根据温度补偿的超声波测距设计_第3页
第3页 / 共34页
资源描述:

《根据温度补偿的超声波测距设计》由会员分享,可在线阅读,更多相关《根据温度补偿的超声波测距设计(34页珍藏版)》请在装配图网上搜索。

1、目录1绪论 21.1设计目的 21.2设计意义 21.3系统功能 32设计方案 42.1方案设计 42.2方案论证 43硬件设计 53.1设计方案 53.2 STC89C52外围电路设计63.2.1单片机63.2.2复位电路与震荡电路73.3 LCD显示模块的设计83.3.1字符型液晶显示模块83.3.2 字符型液晶显示模块引脚83.3.3 字符型液晶显示模块内部结构93.4温度传感器DS18B20电路设计 103.4.1温度传感器DS18B20简介 103.4.2 DS18B20的主要特性 113.5数据采集模块123.6 HC-SR04超声波测距模块133.7报警电路设计154 软件设计1

2、74.1系统软件设计说明174.2主程序的设计174.3超声波发射子程序和超声波接收中断子程序设计184.4温度测量子程序设计185 结果与结论215.1结果215.2结论21致谢22参考文献23附录241 绪论1.1 设计目的随着国民经济的迅速发展,超声波在机械制造、石油化工、航空航天等领域发 挥着越来越重要的作用。超声波测距作为一种非接触式距离测量方法,具有不受 外界光及电磁场等因素影响的优点,实现电路简单、成本低;同时,还具有易于 定向发射、方向性好、对人体伤害小等特点。上述优势使得与超声波测距领域相 关的仪器设备在数据处理、检测性能和工程设计系统化等方面有了更大的发展空 间。利用超声波

3、定位技术是蝙蝠等一些无目视能力的生物作为防御天敌及捕获猎 物的生存手段,这些生物体可发射人们听不到的超声波(20KH以上的机械波), 借助空气介质传播, 根据猎物或障碍物反射回来的回波的时间间隔及强弱 ,判断 猎物的性质或障碍物的位置。在影响超声波测距误差的因素中,温度的影响是比 较大的,超声波的传播速度在不同的温度下是不同的,那就要得出其传播速度与 环境温度t的关系式。因此用常温下的超声波速度341m/s来计算不同温度环境下 的超声波测距的距离是有很大误差的。为了提高测距精度,我们必须对超声波的 速度进行温度补偿,用温度传感器测环境温度的数值,从而得到改环境下的超声 波速度1.2 设计意义随

4、着社会经济的快速发展,人们生活水平的不断提高,交通运输业的日益兴 旺,汽车数量的越来越多。交通拥挤的状况也日趋严重,撞车事件也经常的发生, 造成了很严重的人员伤亡和财产损失,针对这一情况,设计一种响应快,可靠性 高且较为经济的汽车防撞报警系统事在必行,最常见的一种测量距离的方法是超 声波测距,应用于汽车的近距离防撞。还有城市的快速发展,排水系统往往落后 于城市建设,经常出现已经建设好建筑设施再重新开挖排水设施的情况,这样经 常会造成城市污水的到处排放,影响城市卫生,针对这一情况,设计污水疏通移 动机器人的自动控制系统是非常必要的,而这个自动控制系统核心就是超声波测 距。以上举得只是超声波应用领

5、域中的一小部分的例子,当今生活中还有很多方款超声面需要用到超声波测距,来解决人们日常生活中遇到的问题,因此设计 波测距仪是非常重要的一件事。1.3 系统功能超声波测距仪的设计要求如下:1) 测量范围小于等于 5 米2) 测量误差小于 0.3cm3) 进行温度补偿4) 以 LCD 显示温度和距离2 设计方案2.1 方案设计利用超声波检测距离,设计比较方便,计算处理也较简单,其测量精度也能 达到使用要求。超声波发生器可以分为两大类:一类是用机械方式产生超声波, 一类是用电气方式产生超声波。电气方式包括压电型、电动型等;机械方式有加 尔统笛、液哨和气流旋笛等。目前在近距离测量方面常用的是压电式超声波

6、换能 器。根据设计要求并综合各方面因素,本设计采用 AT89C51 单片机作为控制器, 用动态扫描法实现LCD数字显示,超声波驱动信号用单片机的定时器。单片机发出 40kHz 的信号经放大后通过超声波发射器输出;超声波接收器将 接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机 中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LCD显示。2.2方案论证方案一:基于单片机的超声波测距方案,基于单片机的超声波测距是以单片 机编程产生40KHZ的频率,经过发射驱动放大,使发射端发射超声波,经被测物 反射回来,通过反射电路,放大,整形,处理,测出距离。方案二:基于CP

7、LD的超声波测距系统。基于CPLD的超声波测距系统采用CPLD 器件控制超声波的发射与接收,从而计算出测量的距离,其运用VHDL编写程序, 并且配合MAX-plus II进行软硬件的仿真与调试。利用CPLD具有性能高、成本低的特点,但是单片机能够准确计时,测距精度 高,而且单片机控制方便,计算简单,所以综合更方面因素本文采用STC89C52单 片机作为控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的 定时器。3硬件设计3.1 设计方案本文介绍了一种采用脉冲回波方式,基于 STC89C52 单片机的超声波测距系统 该系统充分利用单片机的硬件和软件资源,自动实现超声波的发射与接收控

8、制。 该系统充分考虑了环境温度对超声波传播速度的影响,通过单片机中计数器所计 超声波往返所经历的时间,通过公式换算就可以计算出超声波发射器与被测物之 间的距离。其主要包括单片机控制模块,超声波发射模块,超声波接收模块,LCD1602 显示模块,温度补偿模块,报警模块,和扫描驱动模块这几个部分。其可以实现非接触测量物体的距离,并通过LCD1602液晶显示出来,当距离小于1M时 实现报警。图 3.1 超声波测距仪总设计框图3.2 STC89C52 外围电路设计3.2.1 单片机STC89C52是一种低功耗、高性能CM0S8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非

9、易失性存储器技术制造,与工业80C51产 品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常 规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得 STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52 具有以下标准功能:8k字节Flash,256字节RAM, 32位I/O 口线,看门狗定 时器,2 个数据指针,三个16位 定时器/计数器,一个6向量2级中断结构,全 双工串行口,片内晶振及时钟电路。另外,STC89C52可降至OHz静态逻 辑操作, 支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时

10、器/ 计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻 结, 单片机一切工作停止,直到下一个中断或硬件复位为止。 外形及引脚排列 如图3.2所示。图3.2 STC89C52的芯片引脚图STC89C52共有40个引脚,大致可分为4类:电源引脚、时实现单片机的自动 工作,即实现自动化!3.2.2 复位电路与震荡电路单片机STC89C52作为主控芯片,控制整个电路的运行。其需要一个复位电路, 复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位 信号。复位电路的设计图如图3.3所示。复位电路图3. 3复位电路图STC89C52中有一个用于构成内部振荡器的高增

11、益反相放大器,引脚XTAL1和 XTAL2分别为该反向放大器的输入端和输出端。这个反向放大器与作为反馈元件的 片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接12M振荡器及电容Cl、C2接在放大器的反馈回路中构成并联振荡电路。 由于外接电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起 振的难易程度及温度稳定性因此电容选择30pF 10pF。振荡电路图 3.4 振荡电路图3.3 LCD显示模块的设计3.3.1 字符型液晶显示模块80. O75 O4. 5r图 3.5 液晶面板字符型液晶显示模块是一类专门用于显示字母,数字,符号等的点阵式液晶显 示模块。在显示器件上的电极图型设计,它

12、是由若干个5*7 或5*11 等点阵符位组 成。每一个点阵字符位都可以显示一个字符。点阵字符位之间有一空点距的间隔 起到了字符间距和行距的作用,模块见图 3.5。3.3.2 字符型液晶显示模块引脚VSS为地电源,VDD接5V正电源,VL为液晶显示器对比度调整端,接正电源 时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存 器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平 时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为 低电平RW为高电平时可以读忙信

13、号,当RS为高电平RW为低电平时可以写入数据。 E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。DB0DB7为 8位双向数据线,BLK和BLA是背光灯电源。模块引脚如表3.1。表 3.1 字符型液晶显示模块引脚编号符号引脚说明编号符号引脚说明VSS电源地D2Data I/OVDD电源正极10D3Data I/OVL液晶显示偏压信号11D4Data I/ORS数据/命令12D5Data I/OR/W13D6Data I/ODOD1使能信号Data I/OData I/O144516D7BLABLKData I/O背光源正级背光源负级3.3.3 字符型液晶显示模块内部结构液晶显示模块

14、 WM-C1602N 的内部结构如图 3.6 分为三部份:一为 LCD 控制器,二为 LCD 驱动器,三为 LCD 显示装置。与单片机接口见图 3.6图3.6 LCD1602内部结构LcD控制器图 3.7 液晶接口3.4温度传感器DS18B20电路设计3.4.1 温度传感器 DS18B20 简介DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚T0 92小 体积封装形式,温度测量范围为一55C+ 125C,可编程为9位12位A/D转换 精度,测温分辨率可达0.0625C,被测温度用符号扩展的16位数字量方式串行输 出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个

15、 DS18B20 可 以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信(每个温 度传感器的ROM里有不同的识别号码),占用微处理器的端口较少,可节省大量的 引线和逻辑电路。以上特点使 DS18B20 非常适用于远距离多点温度检测系 统。DS18B20内部结构如图3.8所示,主要由4部分组成:64位ROM、温度传感器、 非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图3.9所 示, DQ 为数字信号输入输出端; GND 为电源地; VDD 为外接供电电源输入 端。ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址 序列码

16、,每个DS18B20的64位序列号均不相同,ROM的作用是使每一个DS18B20 都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。LA1.LjS tJS1 dB2nffl 1 M图3.8 DS18B20内部结构图图3.9 DS18B20管脚图3.4.2 DS18B20 的主要特性(1) 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线 供电。(2) 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实 现微处理器与DS18B20的双向通讯。(3) DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现 组网多点

17、测温。(4) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形 如一只三极管的集成电路内。(5) 温范围一55C_ 125C,在-10+85C时精度为土 0.5C。(6) 可编程的分辨率为912位,对应的可分辨温度分别为0.5C、0.25C、0.125C 和0.0625C,可实现高精度测温。(7) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在 750ms内把温度值转换为数字,速度更快。(8) 测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传 送CRC校验码,具有极强的抗干扰纠错能力。(9) 负压特性:电源极性接反时,芯片不

18、会因发热而烧毁,但不能正常工作。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1的预置值减到0时温度寄存器的值将加1,计数器1的预置将重新被装入,重新开始对低温度系数晶振产生的脉冲信号进行计数。如此循环直到计数器2计数到0时,停止 温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.10中的斜率 累加器用于补偿和修正测温过程中振荡器温度特性的非线性 ,以产生高分辨率的 温度测量。其输出用于修正计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。图3.10 DS18B20测温原理图另外,由于DS18B20单总

19、线通信功能是分时完成的,因此他有严格的时隙概念, 因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为: 初始化DS18B20(发复位脉冲)发ROM功能命令 发存储器操作命令处理数据。3.5 数据采集模块DS18B20有4个主要的数据部件:A: 64位激光ROM。64位激光ROM从高位到低位依次为8位CRC、48位序列号 和8位家族代码(28H)组成。B:温度灵敏元件。C:非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。D:配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。其中R0、R1: 温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0

20、、R1置为缺省值: R0=1,R1=1 (即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分 辨率。表3.2分辨率关系表R0 R1分辨率/bit最大转换时间/us后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第 0 和第 1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据 格式如表 3.3 所示。对应的温度计算:当符号位 S=0 时,直接将二进制位转换为 十进制;当 S=1 时,先将补码变为原码,再计算十进制值。表 3.3 DS18B20 存储器温度LSB温度MSBTTL保留保留计数寄存器计数寄存器8 位 CRCH3.6 HC-SR04 超声波测距

21、模块1.概述HC-SR04 超声波测距模块可实现 2cm4.5m 的非接触测距功能,拥有 2.45.5V 的宽 电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具 有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。主要技术参数如下表:表 3.4 主要技术参数电气参数HC-SR04超声波测距模块工作电压DC 2.4V5.5V静态电流2mA工作温度-2070度输出方式电平或UART (跳线帽选择)感应角度小于15度探测距离2cm-450cm探测精度0.3cm+l%UART模式下串口配置波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验,无流控制。本模块实

22、物图及尺寸如图3.10所示图3.10 HC-SR04正反面图本模块的尺寸:45mm*20mm*1.6mm。板上有两个半径为1mm的机械孔2.电平触发测距工作原理 在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式 电平触发测距的时序如图3. 11所示:循环决出10u5 的 TTL模块内部回响电平输出 与检测距离瞪匕例尸于他辭穌冲发岀信号笹出回响 佶号图3.11 HC-SR04测距时序图图3.11表明:只需要在Trig/TX管脚输入一个1OUS以上的高电平,系统便可 发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块 将距离值转化为340m/s时的时间值

23、的2倍,通过Echo端输出一高电平,可根据 此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2。 3.串口触发测距工作原理在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式。 在此模式下只需要在Trig/TX管脚输入0X55 (波特率9600),系统便可发出8个 40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温 度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过 Echo/RX管脚输出。输出的距离值共两个字节,第一个字节是距离的高8位(HDate),第二个字节为 距离的低8位(LData),单位为毫米。即距

24、离值为(HData*256 +LData) mm。4.串口触发测温工作原理 在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式。在此模式下只需要在Trig/TX管脚输入0X50 (波特率9600),系统便启动温度传 感器对当前温度进行测量,然后将温度值通过Echo/RX管脚输出。测量完成温度后,本模块会返回一个字节的温度值(TData),实际的温度值为TData-45。例如通过TX发送完0X50后,在RX端收到0X45,则此时的温度值为69 (0X45 的 10 进制值)-45 = 24 度。3.7 报警电路设计如果距离小于1M,则单片机STC89C52则给P3.7 口一个信

25、号,使得报警电路工作,实现报警。如图3.11所示。图3.11报警电路图*-4 软件设计4.1 系统软件设计说明进行测量控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每 个测量对象的实际需要设计应用程序。因此,软件设计在微机测量控制系统设计 中占重要地位。本软件设计主要是对距离进行测量、显示。因此,整个软件可分 为按照硬件电路对单片机位定义;发射子程序;接收子程序;显示子程序;延时 子程序等。4.2 主程序的设计图4.1主程序流程图主程序首先是对系统环境初始化,设置定时器TO工作模式为16位定时计数 器模式。置位总中断允许位EA并给显示端口 P1和P3清0。然后调用超声波发生 子程序

26、送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的 直射波触发,需要延时约0.1 ms后,才打开外中断0接收返回的超声波信号。由 于采用的是12 MHz的晶振,计数器每计一个数就是1s,当主程序检测到接收 成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式计=( T/2)*V算,即可得被测物体与测距仪之间的距离,设计时取20C时的声速为344 m/s则有:L=(AT/2)*V =172T0/10000cm 其中,TO为计数器TO的计算值。测出距离后结果将以十进制BCD码方式送往LCD显示约0.5s,然后再发超声波脉冲重复测量过程。4.3 超声波发射子程序和超声波接收

27、中断子程序设计超声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波 信号(即INTO引脚出现低电平),立即进入中断程序。进入中断后就立即关闭计 时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到 超声波返回信号,则定时器T0溢出中断将中断0关闭,并将测距成功标志字赋值 2以表示此次测距不成功。图4.2外部中断流程图4.4 温度测量子程序设计DS18B20 对时序和电性参数要求很高 , 所以单片机在通过单总线接口访问DS18B20时,其工作流程必需要遵守严格的操作时序,如果顺序中任意一步缺少 或顺序错乱,DS18B20将不会响应。DS18B20的操作顺序是

28、:第一步:对DS18B20 初始化;第二步:发送ROM命令;第三步:发送功能命令。超声波测距系统上电后, 单片机开始初始化DS18B20,检测现场温度,软件控制DS18B20的具体流程如图 4.3所示。止讐artatosi胡20的画頁图4.3 DS18B20总体操作流程4.5 报警子程序如果距离小于下限或大于上限,则单片机STC89C52则给10 口一个信号,使得报警电路工作,实现报警。图4.4报警子程序4.6 距离计算子程序本段程序中temp是从DS18BB0读取的16位二进制温度数值,在对速度进行温度 补偿的时候需要根据DS18B20协议转换成浮点数tp。void calculater()

29、float v; /声速float tp; /温度time=TH0*256+TL0;TH0=0;TL0=0;if(temp0x8000) /温度为正直tp=temp*0.0625;else /温度为负值tp=temp*(-0.0625);c=331.4+0.61*tp; /温度补偿distance=(time*c/(2*100)/100;5 结果与结论5.1 结果设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接 收,从而实现利用超声波方法测量物体间的距离,以数字的形式显示测量距离。经过实验表明,这套系统软硬件设计合理、抗干扰能力较好、实时性良好, 实验结果比较符合预期要求。5

30、.2 结论采用高精度的温度传感器 DS18B20 可实现对超声波测距系统的温度测量和补 偿,即根据经验公式,对波速进行校正。通过引入DS18B20,使超声波测距系统的测 量精度有了很大的提高, 使得应用领域也有所扩展,其不仅可用于倒车雷达、物位 测量等一般场合, 且在移动机器人领域将会有广泛的应用前景。致谢随着论文的完成,我的大学生活,也得以划下了完美的句点。经过几个月的 查找资料、整理材料、设计方案和写论文,今天终于可以顺利的完成论文的最后 的谢辞了。设计得以完成,要感谢的人实在太多了,在本次毕业设计的过程中非常感谢 周荣生老师的细心指导。导师渊博的专业知识,严谨的治学态度,精益求精的工 作

31、作风,对我影响深远,不仅使我树立了远大的学术目标、掌握了基本的研究方 法,还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在周老师的指导下完成的,倾注了大量的 心血。在此,谨向赵老师表示崇高的敬意和衷心的感谢!赵老师要指导很多同学 的设计,加上本来就有的教学任务,工作量之大可想而知,但在一次次的教导中 使我在设计之外明白了做学问所应有的态度。同时,设计的顺利完成,离不开其它各位老师、同学和朋友的关心和帮助, 感谢徐静、胡燕同学给予我的帮助。在整个的设计中,各位老师、同学和朋友积 极的帮助我查资料,提供有利于论文写作的建议和意见,在他们的帮助下,设计 得以不断的完善,最终

32、帮助我顺利的写完论文。通过此次的设计,我学到了很多知识,在设计过程中,通过查资料和搜集有 关的文献,培养了自学能力和动手能力,由被动的接受知识转换为主动的寻求知 识,这是学习方法上的一个很大的突破。通过毕业设计,我们学会了如何将学到 的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在 设计中被我引用或参考的论著的作者。参考文献1 赵晓安.MCS-51单片机原理及应用.天津:天津大学出版社,2001.32 夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 20013 余锡存、曹国华,单片机原理及接

33、口技术,陕西: 西安电子科技大学出版社,2002.84 李建忠,单片机原理及应用,陕西:西安电子科技大学出版社,2004.15 肖来胜、冯建兰,单片机技术实用教程 ,武汉:华中科技大学出版社,2004.106 蔡美琴、张为民, M S C - 5 1系列单片机系统及其应用,北京:高等教育出版社 (第二版),北京,2005.7v7 李华.MCS -51系列单片机实用接口技术M.北京:北京航空航天大学出版 社,19938 周航慈. 单片机应用程序设计技术 M . 北京:北京航空航天大学出版 社,1991附录附录一:总原理图黑蛊器PI6FITzs亦咯PH m m2rTi .-Ti .-H rj-i

34、rTi .-fl ip rfi Tl SqZi比芒忑iZS芒円BRM飓RJT? RESET JBD Ia DE-335 DE-4 刃 DEJ33 UMV :弗IOKIT01-ir-ij_附录二:程序清单#include#include #define uint unsigned int#define uchar unsigned chartypedef unsigned char Uchar;typedef unsigned int Uint16;#define yh 0x80 /LCD 第一行的初始位置 ,因为 LCD1602 字符地址首位 D7 恒定为 1 (100000000=80)#d

35、efine er 0x80+0x40 /LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)/液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0 口)sbi t en=P0;sbi t rs=Pl;sbit DQ_A=P37;/温度数据线/校时按键与C51的引脚连接定义sbit qh=P20;/切换键sbi t se t=P2l;/设置键sbit add二P22;/加键sbit dec二P23;/减键sbit alarm二P27;/蜂鸣器,通过三极管9012驱动,端口低电平响sbit red二P24;sbi t green二P2飞;sbit RX=P33;sbit TX=P

36、32;uchar code tab1= System loading ;uchar code tab2= Distance system ;uchar code wd= Temp:;uchar code jl= Dis :CM;uchar code yz= SH: CMSL:CM;/阈值固定符uchar code qk= ;uint tempa, temp;/tempa用于读取温度值int sh=400,sl=2;uint time; unsigned long dis;float rate;uchar flag_qh,key_num;bit flag_set=0,flag=0;/延时函数,后

37、面经常调用void delayms(uint xms)/延时函数,有参函数uint x,y;for(x=xms;x0;x-) for(y=110;y0;y-);/*液晶写入指令函数与写入数据函数,以后可调用*/void wri te_com(uchar com)/*液晶写入指令函数*rs=0;/数据/指令选择置为指令/rw=0; /读写选择置为写P0=com;/送入数据 delayms(1);en=1;/拉高使能端,为制造有效的下降沿做准备 delayms(1);en=0;/en由高变低,产生下降沿,液晶执行命令void writ e_da ta(uchar dat )/*液晶写入数据函 数*

38、rs=1;/数据/指令选择置为数据/rw=0; /读写选择置为写P0=da t;/送入数据 delayms(1);en=1; /e n置高电平,为制造下降沿做准备delayms(1);en=O; /en由高变低,产生下降沿,液晶执行命令void Lcd_cls()uchar i;write_com(er);for(i=0;i16;i+)write_data(qki)/*DS18B20 温度采集时序程序 void delay_us(Uintl6 t)/12MHz 晶振while(t-);void Init_18b20_A(void)Uchar n;DQ_A=1;delay_us(8);DQ_A=

39、0;delay_us(80);/600us 左右DQ_A=1;delay_us(8);n=DQ_A;delay_us(4);void write_byte_A(Uchar dat)Uchar i;for(i=0;i=1;delay_us(4);Uchar read_byte_A(void)Uchar i,value;for(i=0;i=1;DQ_A=1; /线与 if(DQ_A)value|=0x80; delay_us(4); return value; void get_temp_A(void) uchar a,b;Init_18b20_A(); write_byte_A(0xcc);wr

40、ite_byte_A(0x44); /启动测量 delay_us(300);Init_18b20_A();write_byte_A(0xcc);write_byte_A(0xbe);a=read_byte_A();/lsbb=read_byte_A();/msbtemp=b*256+a;/26.8tempa=temp*0.625;/268/=两声提示音 = void TwoAlarm(void)green=1; alarm=0;red=0;delayms(50); alarm=1;red=1;delayms(50); alarm=0;red=0;delayms(50); alarm=1;red

41、=1;程序/ 第 一 个 界 面/void fir_disp(void)uchar i;Lcd_cls(); write_com(er); for(i=0;i16;i+)write_data(jli);第二个界面程序void sec_disp() uchar i;alarm=1;red=1;Lcd_cls();write_com(er);for(i=0;i16;i+)write_data(yzi);/第三个界面程序void thi_disp()uchar i;Lcd_cls();write_com(er);for(i=0;i=400)sh=0;write_com(er+3);write_dat

42、a(0x30+sh/100); write_data(0x30+sh%100/10); write_data(0x30+sh%10); write_com(er+5); if(key_num=2)sl+;if(sl=400)sl=0;write_com(er+11);write_data(0x30+sl/100);write_data(0x30+sl%100/10);write_data(0x30+sl%10);write_com(er+13);if(dec=0)delayms(5);if(dec=0)while(dec=0);if(key_num=1)sh-;if(sh-1)sh=400;w

43、rite_com(er+3);write_data(0x30+sh/100); write_data(0x30+sh%100/10); write_data(0x30+sh%10); write_com(er+5); if(key_num=2)sl-;if(sl-1)sl=400;write_com(er+11);write_data(0x30+sl/100);write_data(0x30+sl%100/10);write_data(0x30+sl%10);write_com(er+13);void write_TA(uchar addr,uint dat) write_com(er+add

44、r);write_data(0x30+dat/100); write_data(0x30+dat%100/10);write_data(0x2e); write_data(0x30+dat%10);/ / js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js / void StartModule() /启动模块 TX

45、=1; /启动一次模块 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;/ / js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js js

46、js js js js js js js js js js js js js js js js js js js / void Conut(void)uchar num;time=TH0*256+TL0;TH0=0;TL0=0; /if(100tempa200)/rate=1.7f; /if(200tempa300)/rate=1.8f; /if(300tempa=700)|flag=1) /超出测量范围显示“-” red=1;alarm=1;flag=0;write_com(er+6);for(num=0;numsl&dissh)green=0;red=1;alarm=1;elseTwoAl

47、arm();void delay_80ms() unsigned char ms=80;unsigned char i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);/主程序void main() Uchar i;/TO初始化/TM0D=0x01;/设 T0 为方式 1,GATE=1;THO=O;TLO=O;ET0=1;/允许T0中断EA=1;/开启总中断1602LCD初始化/en=O;write_com(Ox38);write_com(OxOc);write_com(OxO6);write_com(0x01);系统登录 write_com(yh);for

48、(i=0;i16;i+) write_data(tab1i); write_com(er+10); for(i=0;i6;i+)write_data(.);delayms(1000);write_com(0x01); write_com(yh); for(i=0;i16;i+) write_data(tab2i);while(1)fir_disp();doget_temp_A();StartModule();while(!RX);/当RX为零时等待TR0=1;/开启计数while(RX);/当RX为1计数并等待TR0=0;/关闭计数Conut();/计算delay_80ms();/80MSch

49、k();keyscan_qh();while(flag_qh=0);sec_disp();dowrite_com(er+3); write_data(0x30+sh/100); write_data(0x30+sh%100/10);write_data(0x30+sh%10);write_com(er+11);write_data(0x30+sl/100);write_data(0x30+sl%100/10);write_data(0x30+sl%10);dokeyscan_set();while(flag_set);keyscan_qh();while(flag_qh=1);thi_disp();doget_temp_A();write_TA(6,tempa);keyscan_qh();while(flag_qh=2);void t0() interrupt 1/T0中断用来计数器溢出,超过测距范围flag=1;/中断溢出标志

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