毕业设计论文基于单片机的超声波测距系统实现

上传人:痛*** 文档编号:142497294 上传时间:2022-08-25 格式:DOC 页数:69 大小:106.50KB
返回 下载 相关 举报
毕业设计论文基于单片机的超声波测距系统实现_第1页
第1页 / 共69页
毕业设计论文基于单片机的超声波测距系统实现_第2页
第2页 / 共69页
毕业设计论文基于单片机的超声波测距系统实现_第3页
第3页 / 共69页
点击查看更多>>
资源描述
毕业设计论文-基于单片机的超声波测距系统实现 基于单片机的超声波测距系统实现【摘要】:基于传统的方法在很多特殊场合:如带腐蚀的液体,强电磁干扰,有毒等恶劣条件下,测量距离存在不可克服的缺陷,超声波测距能很好的解决此类的问题。本论文主要对单片机超声波测距系统的原理,单片机的应用等进行了分析;对超声波的发生电路和接收电路,DS18B20温度采集电路,LCD显示电路,硬件制作和软件设计;对系统进行误差分析。【关键词】:超声波测距,单片机,DS18B20温度补偿,LCD显示,软件设计,误差分析。Abstract: In many special occasions, traditional methods based on the existence of insurmountable distance measuring defects, such as the measurement of corrosion in the liquid with strong electromagnetic interference, toxic and other adverse conditions, the ultrasonic range can be a very good solution to the problem of such . In this paper, focused on single-chip microcomputer-based ultrasonic ranging system, namely the principle of ultrasonic distance measurement, the occurrence of ultrasonic circuit, echo receiver, data acquisition, LCD data show the principle of single-chip applications, system hardware, DS18B20 the temperature compensation ,software design and production were discussed.Key words: ultrasonic ranging, single-chip, DS18B20 the temperature compensation, LCD display, software design, error analysis.目录第一章 引言. 5 1.1 单片机应用系统概述.5 1.2 超声波测距系统概述. 6 1.3 本设计任务主要内容. 6第二章 超声波测距的原理. 7 2.1 超声波的根本理论. 7 2.2 超声波测距系统原理.10第三章 系统主要硬件设计.12 3.1 方案论证与比拟.12 3.2 单片机主机系统电路.15 单片机电路.15 复位电路.16 时钟电路.16 按键电路.17 蜂鸣器电路.17 3.3 超声波发送电路.18 3.4 超声波接收电路.18 3.5 温度采集DS18B20电路.20 3.6 LCD显示电路.20 3.7 电源电路.22第四章 系统软件设计.25 4.1 系统程序结构.25 4.2 系统主程序.25 4.3 40KHz超声波发送程序.29 4.4 超声波的接收和处理.30 4.5 DS18B20温度采集程序.30 4.6 距离计算程序.35 4.7 数据转换程序.36 4.8 LCD显示程序.37 4.9 基于Proteus的软件仿真.42第五章 PCB设计.44 5.1 元件选择.44 5.2 Altium designer原理图的绘制.45 5.3 元件封装制作.45 5.4 PCB的电磁兼容性设计.46 5.5 布局布线.48 5.6 制造文件输出.51第六章 元件采购.52 6.1 BOM文件导出.52 6.2 元件采购.53第七章 样机制作.54 7.1 装配图.54 7.2 焊接和检查.55 7.3 样机图.56 7.4 单片机学习板的使用.56第八章 实验分析.57 8.1 实验测试.57 8.2 实验数据.58 8.3 误差分析.58 8.4 改良.59第九章 总结.60致谢.61附录.62 A 系统原理图.62B C源程序.63参考文献.73 第一章 引言 单片机应用系统概述 单片机是一个单芯片形态、面向控制对象的嵌入式应用计算机系统。它的出现及开展使计算机技术从通用型数值计算领域进入到智能化的控制领域。从此,计算机技术在两个重要领域通用计算机领域和嵌入式计算机领域都得到了极其重要的开展,并正在深深地改变着我们的社会。 嵌入式系统无疑是当前最热门、最具有开展前景的IT应用之一。嵌入式系统的应用可以使传统的电子系统升级成为智能化的电子产品,使其成为具有“生命的现代化智能系统。嵌入式系统一般应用于对实时响应要求较高的设备中,单片机作为嵌入式系统的核心部件,其应用使电子系统的智能化出现了意想不到的效果,常常无需对硬件资源做任何改动,只需更新系统软件就能使系统功能升级。现代社会中嵌入式系统无处不在,早已被应用在国防、国民经济、以及人们日常生活的各个领域,主要可以归纳为以下几个方面。 1军事装备:各种武器控制火炮控制、弹道控制、炮弹引信等,坦克、舰船、轰炸等各种电子装备,雷达、电子对抗、军事通讯装备等。 2家用电器:各种家电产品,如数字电视、机顶盒、数码相机、VCD、DVD、可视 、洗衣机、电冰箱、 、智能玩具等。 3工业控制:各种智能仪器仪表、数控装置、可编程控制器、分布式控制系统、工业机器人、机电一体化设备、汽车电子设备等。 4商用设备:各种收款机、POS系统、电子秤、条形码阅读器、商务终端、IC卡输入设备、自动柜员机、防盗系统等。 5办公用品:复印机、打印机、 机、扫描仪、 、个人数字助理PDA、变频空调设备、通信终端、程控变换机、网络设备等。 6医疗电子设备:各种医疗电子仪器,如X光机、超声诊断仪、心脏起搏器、监护仪器等,以及辅助诊断系统、专家系统等。 单片机应用系统的设计包括单片机根本扩展、外围电路设计和程序设计、单片机应用系统开发环境、系统可靠性设计、电磁兼容性设计等内容。通常开发一个单片机系统的步骤如下: 图 设计步骤 超声波测距系统概述在基于传统的测力距离存在不可克服的缺陷。例如,液面测量就是一种距离测量,传统的电极法是采用差位分布电极,通过给电或脉冲来检测液面,电极长期浸泡于水中或其他液体中,极易被腐蚀、电解,失去灵敏性。由于超声波具有强度大,方向性好等特点,利用超声波测量距离就可以解决这些问题,因此超声波测量距离技术在工业控制、勘探测量、机器人定位和平安防范等领域得到了广泛的应用。超声波测距电路可以由传统的模拟或者数字电路构建,但是基于这些传统电路构建的系统往往可靠性差,调试困难,可扩展性差,所以基于单片机的超声波测距系统被广泛的应用。通过简单的外围电路发生和接收超声波,单片机通过采样获取到超声波的传播时间,用软件来计算出距离,并且可以采集环境温度进行测距补偿,其测量电路小巧,精度高,反映速度快,可靠性好。 1超声波测距仪设计要求如下: 1 测量距离 6m; 2 精度优于1%; 3 进行温度补偿; 4 显示方式采样LCD; 5 具有抗干扰能量; 6 体积小、功耗低、便于嵌入到其他系统。2 硬件电路的设计 1 方案的论证; 2 元件的选择; 3 用Altium designer绘制原理图。 3 系统的PCB制作 1 PCB布局布线; 2 PCB实验板的焊接。 4 系统软件的编写 1 软件的编写和编译检查; 2 基于Proteus的软件仿真。 5 样机实验测试 1 实验检查; 2 测试数据。6 误差分析 1误差的分析; 2改良。 超声波测距的原理2.1 超声波的根本理论 超声波是一门以物理、电子、机械、以及材料科学为根底的、各行各业都要使用的通用技术之一。该技术在国民经济中,对提高产品质量,保障生产平安和设备平安运作,降低生产本钱,提高生产效率特别具有潜在能力。因此,我国对超声波的研究特别活泼。超声技术是通过超声波的产生、传播以及接收的物理过程完成的。超声波具有聚束、定向及反射、投射等特性。按超声波振动辐射大小不同大致可以分为:用超声波使物体或物性变化的功率应用,称之为功率超声;用超声波获取信息,称为检测超声。超声波是听觉阈值之外的振动,其频率范围在1010Hz,其中通常的频率大约在103之间。超声波在超声场被超声波充满的范围传播时,如果超声波的波长与超声场相比,超声场很大,超声波就像处在一种无限的介质中,超声波自由地向外扩散;反之,如果超声波的波长与相邻介质的尺寸相近,那么超声波受到界面限制不能自由的向外扩散。于是超声波在传播过程中有如下的特性和作用:1 超声波的传播速度超声波在介质中可以产生三中形式的振荡波:横波质点振动方向垂直于传播方向的波;纵波质点振动方向与传播方向一致的波;外表波质点振动介于纵波和横波之间,沿外表传播的波。横波只能在固体中传播,纵波能在固体液体中和气体中传播,外表波随深度的增加其衰减很快。为了测量各种状态下的物理量多采用纵波形式的超声波。超声波的频率越高,越与光波某些特性相似。 超声波与气其他声波一样,其传播速度与介质密度和弹性特性有关。 超声波在气体和液体中,其传播速度C 式中 介质的密度; 绝对压缩系数。 可以推导出超声波在空气种传播速度。T为环境温度。 超声波在固体中的传播速度分两种情况: 1 纵波在固体介质中的传播速度 其传播与介质的形状有关。 细棒 薄板 无限介质式中 E杨氏模具; 泊松系数; K体积弹性模具; G剪片弹性模。 2 横波声速公式为 无限介质 在固体中,介于05之间,因此一般可视为横波声速为纵波的一半。 2 超声波的物理性质当超声波传播到两种特性不同的介质的平面上时,一局部被反射;另一局部透射过界面,在相邻的介质内部继续传播;这样的两种情况称之为超声波的反射和折射,: 1 超声波的反射和折射 当超声波传播到两种特性阻抗不同介质的平面分界面上时,一局部超声波被反射;另一局部透射过界面,在相邻介质内部继续传播;这样的两种情况称之为超声波的反射和折射,。声波的反射系数和透射系数可以分别由如下两式求得:图 声波反射式中:分别为声波的入射角和反射角; 分别为两介质的特征阻抗,其中为反射波和折射波的速度。反射角、折射角与声速满足折射定律关系式:。当超声波垂直入射界面时,即,那么:如果sin ,入射波完全被反射,在相邻两个介质中没有折射波。如果超声波斜入射到两个固体介质面或两粘滞弹性介质面时,一列斜入射的纵波不仅产生反射纵波和折射纵波,而且还产生反射横波和折射横波。 2 超声波的衰减超声波在一种介质中传播,其声压和声强按指数函数规律衰减。在平面波的情况下,距离声源x处的声压p和声强I的衰减规律如下:式中:距离声源x 0处的声压和声强; 超声波与声波间的距离; A衰减系数,单位为奈培/厘米。 3 超声波的干预如果在一种介质中传播几个声波,于是产生波的干预现象。假设以两个频率相同,振幅和不等,波程差为d的两个波干预为例,该两个波合成振幅为,其中为波长。从上式看出,当d 0或d 为整数时,合成振幅到达最大值;当d 时,合成振幅为最小值。当时,;当d的奇数倍时,两波相互抵消合成幅度为0。由于超声波的干预,在辐射器的周围形成一个包括最大最小的扬声场。 3 超声波对声场产生的作用 1 机械作用超声波传播过程中,会引起介质质点交替的压缩与伸张,构成了压力的变化,这种压力的变化将引起机械效应。超声波引起质点的运动,虽然位移和速度不大,但是与超声波振动的频率的平方成正比的质点的加速度却很大。有时足以到达破坏介质的程度。 2 空化作用在流体动力学指出,存在于液体中的微气泡在声场的作用下振动,当声压到达一定的值时,气泡将迅速膨胀,然后突然闭合,在气泡闭合时产生冲击波,这种膨胀、闭合、振动等一系列动力学过程称为空化。 3 热学作用如果超声波作用于介质时被介质所吸收,实际上也就是有能量吸收,同时,由于超声波的振动,使介质产生强烈的高频振荡介质相互摩擦产生热热量,这种能量使介质温度升高。 4 超声波传感器超声波传感器主要有电致伸缩和磁致伸缩两类,电致伸缩采用双压电陶瓷晶片制成,具有可逆特性。压电陶瓷片具有如下特性:当在其两端加上大小和方向不断变化的交流电压时,就会产生“压电效应,使压电陶瓷也产生机械变形,这种机械变形的大小以及方向与外加电压的大小和方向成正。也就是说,假设在压电晶片两边加以频率为的交流电电压时,它就会产生同频率的机械振动,这种机械振动推动空气的张弛,当落在音频范围内时便会发出声音。反之,如果由超声波机械振动作用于陶瓷片使其发生微小的形变时,那么压电晶片也会产生与振动频率相同的微弱的交流信号。超声波传感器结构如下: 图 元件内部结构 图 超声波外部结构 2.2 超声波测距系统原理在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,被测物距离越大,脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距大致有以下方法: 取输出脉冲的平均值电压,该电压 其幅值根本固定 与距离成正比,测量电压即可测得距离; 测量输出脉冲的宽度,即发射超声波与接收超声波的时间间隔 t,故被测距离为 S 12vt。本测量电路采用第二种方案。由于超声波的声速与温度有关,如果温度变化不大,那么可认为声速根本不变 。如果测距精度要求很高,那么应通过温度补偿的方法加以校正。超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以到达毫米级。超声波测距的算法设计: 超声波在空气中传播速度为每秒钟340米15时。X2是声波返回的时刻,X1是声波发声的时刻,X2-X1得出的是一个时间差的绝对值,假定X2-X1 0.03S,那么有340m0.03S 10.2m。由于在这10.2m的时间里,超声波发出到遇到返射物返回的距离 图 理超声波测距器的系统框图如下列图所示: 图 分立元件构成的超声波发射电路只普通低频小功率三极管C9013构成的振荡、驱动电路,三极管T1、T2构成两级放大器,但是由于超声波发射头的正反应作用,这个原本是放大器的电路变成了振荡器。超声波发射器的压电晶片可等效于一个串联LC谐振电路,具有选频作用,因此该振荡器只能振荡在超声波发射头的固有谐振频率。第二个图中用电感L替代这样可以增大鼓励电压,使其具有较大的功率输出。由集成电路构成的发射电路 55集成芯片构成的振荡、调制、鼓励电路。该电路应使用双极型555内部电路由普通三极管构成,不宜使用单极型7555内部电路由CMOS电路构成,外部引脚与555相同,其原因是7555带负载能力小。 555构成的超声波发射电路门构成的一个振荡器发送电路,用非门构成的电路简单,调试容易。很容易通过软件控制。图中把两个非门的输出接到一起的目的是为了提高其吸入电流,电路驱动能力提高。 由非门构成的超声波发射电路超声波接收电路:由分立元件构成的接收电路 图3.14 为由三极管T1,T2和假设干电阻电容组成的两级阻容耦合交流放大电路。第一级中为集电极负载电阻;为偏流电阻,同时引入了交直流并联电压负反应,可以较有效的稳定静态工作点,改善非线性失真以及增益的稳定性;是发射极负反应电阻,引入直、交流串联电流负反应,具有稳定工作点、增益、改善失真、提高输入阻抗等作用。 图 3.14 分立元件构成的超声波接收电路由运算放大器构成的接收电路 图3.15是由运放构成的超声波放大电路,该电路的形式在其他应用中经常遇到,特点如下: 1一般式用运放组成的放大电路都要求对称的正负电源供电,这里以单电源供电,输出端的静态电位必须设置在1/2的电源电压,这由同相输入端的点位来确定,和分压取得1/2的电源电压加到运放的同相输入端,使其电位1/2电源电压。 2采用同相端输入方式其输入阻抗高,超声波接收传感器的输出信号接到放大器的同相端,有利于超声波传感器充分发挥接收灵敏度和自生的选频作用。 3反相端对地不提供直流通路,因此通过隔直电容提供直流通路。 图 运放构成的超声波接收电路LM1812收发集成电路构成 LM1812是一种专用于超声波接收和发送的集成电路,它即可做发送电路,又可以做接收电路使用。如下列图所示: 图 3.16 由LM1812构成的接收电路CX20216构成的接收电路 图 3.17 CX20216构成的接收电路以上为常用的发射和接收电路,分立元件构成的收发电路容易受到外界的干扰,体积、功耗也比拟大。而集成电路构成的发射和接收电路具有调试简单,可靠性好,抗干扰能力强,体积小,功耗低的优点,所以首先考虑采用集成电路来组成收发电路。 在由集成电路构成的收发电路中,发射电路我们选用由非门构成,接收电路采用由红外接收检波芯片CX20216构成,主要是考虑到系统的调试简单、本钱低、可靠性好。 本次我们采用了Atmel 公司的AT89S52,该单片机主要特点如下:AT89S52系列单片机以8051为内核,兼容MCS-51系列单片机。AT89S52系列单片机内、内部含有Flash存储器,在系统开发可以反复擦写。AT89S52采用静态时钟方式,可以节省电能。AT89S52支持ISP在线编程,不需要把单片机从电路板取下来就可以擦写程序。AT89S52晶振频率高达24M,运行速度更快。AT89S52价格也比拟廉价 6元/片增加了看门狗电路,防止程序“走飞,更加平安可靠。 电路 单片机主电路 引脚功能:P0口用来送显示信号给LCD的数据为,P20P22送命令到LCD控制LCD的显示方式。P3.7为DS18B20温度数据采集端。P1.0接测量按键。 复位电路 单片机在RESET端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如下:在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。只要该脉冲足够宽就可以实现复位,即ms。一般取R1,C22uF。 当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C再次充电,实现手动复位。R1一般取200。 复位电路 时钟电路 当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容,如下图,晶体一般可以选择3M24M,电容选择30pF左右。我们选择晶振为12MHz,电容33pF。 时钟电路 按键电路 我们通过P1.0来启动测量,程序中通过查询P1.0的电平来检测是否按键被按下,电路原理如下: 当按下按键时P1.0为低电平,单片机通过 查询到低电平开始测量距离,当松开按键,P1.0即为高电平。在软件中通过软件延时来消除按键的机械抖动。路 蜂鸣器电路 本次设计通过一只蜂鸣器来提示用户按键按下了,现在单片机开始了测距。蜂鸣器时一块压电晶片,在其两端加上35V的直流电压,就能产生3KHz的蜂鸣声。电 通过单片机软件产生3KHz的信极,控制着电压加到蜂鸣器上,驱动蜂鸣器发出声音。 图 电路超声波发生器包括超声波产生电路和超声波发射控制电路两个局部,超声波探头“也称为超声波换能器的型号选用CSB40T其中心频率为40KHz。可以采用软件产生40KHz的超声波信号,通过输出引脚输入至驱动器,经过动器驱动后推动探头产生超声波。这种方法的特点是充分利用软件,灵活性好,但是需要设计一个驱动电流为100mA以上的驱动电路。第二种方法是利用超声波专用发生电路或通用发生电路产生超声波信号,并直接驱动超声波换能器产生超声波。这种方法的特点是无需驱动电路,但缺乏灵活性。本次我们采用第一种方法产生超声波,非门可以选用74LS04,具体电路如图: 图 超声波发送电路 从图中可知,当输入的信号为高电平时,上面经过两级反向CSB40T的1引脚为高电平,下面经过一级反向后为低电平;当输入信号为低电平时,正好相反,实现了振荡的信号驱动CSB40T,只要控制信号接近40KHz,就能产生超声波。 超声波接收包括接收探头,信号放大以及波形变换电路三局部,超声波接收探头必须与发送探头相同的型号,否那么可能导致接收效果甚至不能接收。由于超声波接收探头的信号非常弱,所以必须用放大器放大,放大后的正弦波不能被微处理器处理,所以必须经过波形变换。本次设计为了降低调试难度,减少本钱,提供系统可靠性,所以我们采用了一种用在彩色电视机上面的一种红外接收检波芯片CX20216,由于红外遥控的中心频率在38KHz,和超声波的40KHz很接近,所以可以用来做接收电路。CX20216是日本索尼公司的产品,采用单列8引脚的直插式封装,内部包含自动偏置控制电路、前置放大电路、带通滤波、峰值检波、积分比拟器、斯密特整形输出电路,配合少量外接元件就可以对38KHz左右的信号的接收与处理,该芯片内部如下列图所示: CX20216内部结构 CX20216构本钱次设计接收电路如下列图: 图 接收电路使用CX20216A集成电路对接收探头受到的信号进行放大、滤波。其总放大增益80db。以下是CX20216A的引脚注释。1脚:超声信号输入端,该脚的输入阻抗约为40k,C 1f。4脚:接地端。5脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R 200k时,f042kHz,假设取R 220k,那么中心频率f038kHz。6脚: 该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。7脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22k,没有接受信号是该端输出为高电平,有信号时那么产生下降。8脚:电源正极,4.55V。物理学告诉我们,超声波在空气中的传播速度为:,由此可见,超声波的速度和温度密切关系,即温度每增加1C/LSB形式表达。其中高五位为扩展符号位。转换周期与转换精度有关,9位转换精度时,最大转换时间为93.7 ms,12位转换精度时,最大转 DS18B20温度传感器 换时间为750ms。DS18B20引脚判断方法是:字面朝人,从左到右依次是1 GND、2输入/输出、3VDD。图中的R13为上拉电阻,阻值选5K左右。3.6 LCD显示电路 本设计采用LCD液晶显示屏显示。其具有体积小、功耗低、界面美观大方等优点,这里使用YB1602液晶屏,1602显示模块用点阵图形显示字符,显示模式分为2行16个字符。它具有16个引脚,其正面左起为第一脚,如下列图所示:第一脚GND:接地。第二脚VCC:+5V电源。第三脚VO:比照度调整端。使用时通过接一个10K的电阻来调节。第四脚RS:存放器选择信号线。第五脚RW:读写信号线。第六脚E:使能端,当E由高电平跳变为低电平时执行命令。第714脚:8位数据线D0D7。第十五脚BLA:背光电源正极输入端。第十六脚BLK:背光电源负极输入端。 LCD显示电路操作控制表操作读状态写指令读数据写数据输入RS 0,RW 1,E 1RS 0,RW 0,D07 指令码,E H脉冲RS 1,RW 1,E 1RS 1,RW 0,D07 数据,E H脉冲1602液晶模块内部的字符发生存储器CGROM 已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比方大写的英文字母“A的代码是01000001B41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。1602通过D0D7的8位数据端传输数据和指令。显示模式设置: 初始化 0011 0000 0x38设置162显示,57点阵,8位数据接口;显示开关及光标设置: 初始化 0000 1DCB D显示 1有效 、C光标显示 1有效 、B光标闪烁 1有效 0000 01NS N 1 读或写一个字符后地址指针加1 &光标加1 ,N 0 读或写一个字符后地址指针减1 &光标减1 ,S 1 且 N 1 当写一个字符后,整屏显示左移 s 0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码 0-27H,40-67H 其他设置:01H 显示清屏,数据指针 0,所有显示 0 ;02H 显示回车,数据指 0 。 图 LM7805引脚和典型应用 图 LM7805内部结构图表 LM7805电气参数 本设计电源电路如下: 图 电源电路 输入电压 21V经过7805的稳压输出+5V的电压,图中的IN4007为保护7805,防止电源极性接反损坏7805,滤波电容采用100uF电解和104瓷片电容并联使用,电磁兼容的实践证明,两个差100倍的电容并联使用效果很好。第四章 系统软件设计4.1 系统程序的结构 1 DS18B20温度传感器接口模块,分为初始化程序、写入命令以及读取子程序等局部; 2 基于YB1602的显示模块,分为初始化子程序、写入子程序以及显示子程序; 3 温度补偿与距离计算模块、分为超声波发送控制程序、接收处理程序、温度补偿子程序等; 4 本次设计使用C语言编写程序,C语言相比汇编有许多的优势;编译器使用Keil Version2进行程序编译,Keil功能强大使用方便。主程序,分为系统初始化、按键处理以及各个子程序的调度管理等局部。述了各个模块的关系: 图 系统软件方框图4.2 系统主程序 本设计主程序的思想如下: 1 温度为两位显示,距离为四位显示单位为mm; 2 温度每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms ,故900ms满足该速度要求;超声波每隔60ms发送一次。 3 按键S为测量启动键; 4 系统采用AT89S52的内时钟:12MHz; 5 没有使用看门狗功能; 6 超声波发送一定时间后才开始启动检测,防止直达信号造成误判。所以系统最小测量约为112mm; 系统主程序如下:void main void uchar i,j; for i 0;i 255;i+ for j 0;j 255;j+ ; /延时,等待系统外围复位完成 sys_init ; /初始化 display ; /显示 sta_flag 0; /标准复位 waitforstarting: /检测按键 while START ; for i 0;i 20;i+ delay1ms ; if START goto waitforstarting; BUZZER 0; /蜂鸣器鸣音一次提示按键按下 i 100000; while i- ; BUZZER 1; i 100000; while i- ; TR0 1; /启动定时器0 ET0 1; testtemp ; /启动温度转换 while 1 if sta_flag /60MS到了,超声波已经发送 while 0 CSBIN ; /等待超声波返回 TR1 0; jsh TH1; /停止计数 jsl TL1; if 15 count /1S到,检测温度 temp wd ; count 0; testtemp ; /重新启动转换 display ; /刷新显示 computer ; /计算距离 hextobcd ; /转化成BCD码 sta_flag 0; /标志清零 void sys_init void uchar i; for i 0;i 29;i+ /显示清零 numi 0; TMOD 0x11; TH0 0x15; TL0 0xA0; P0 0; CNT 0; /超声波发送关闭 CSBIN 1; EA 1; /开放总中断 Init_LCD ; 4.3 40KHz超声波发送程序超声波的每过60ms发送一次,通过定时器T0中断中发送超声波,超声波发送后延时一段时间后返回,防止余波被接收头接收误判,程序如下:/* 定时器0溢出中断函数,每60MS溢出*/void timer0 void interrupt 1 using 0 TH0 0x15; TL0 0xA0; TH1 0; TL1 0; sta_flag 1; /标志置为1 count+; /计次单元加1 _nop_ ; /开始发送超声波40KHz _nop_ ; _nop_ ; CNT 1; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; _nop_ ; CNT 0; _nop_ ; _nop_ ; _nop_ ; _nop_ ; TR1 1; /启动定时器1计数 delay15 50 ; /延时避开直达信号 4.4 超声波的接收和处理超声波由超声波接收头接收,经过CX20216检波放大变换后送到单片机的P2.6脚,程序中通过指令: Wile 0 CSBIN ;来查询,接收到超声波信号后往下面执行,进行计算处理。本设计中需注意当距离过远或者没有返回信号时候,定时器T1的溢出必须处理。4.5 DS18B20温度采集程序 DS18B20的工作流程是,初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序和读时序。 1 DS18B20的初始化DS18B20的初始化的实质是使DS18B20复位,主要是通过判断存在脉冲的形式来实现的。首先主机发复位脉冲,即宽度范围为的负脉冲,拉高1590以延时等待,然后通过输入/输出线读存在脉冲,为低说明存在,复位成功;否那么说明不存在,复位失败,必须对DS18B20重新初始化。/*DS18B20复位函数*/void Init_18B20 void /初始化18B20 DQ 1; /DQ复位 Delay 10 ; DQ 0; /单片机将DQ拉低 Delay 80 ; /480us DQ 1; /拉高总线 Delay 10 ; /稍做延时后 如果x 0那么初始化成功 x 1那么初始化失败 if DQ flag 0; else flag 1; Delay 20 ; 2 字节写入DS18B20程序字节写入的时序是拉低输入/输出线至少15以作为起始信号,按从低位到高位的顺序取出欲写入字节中的1位数据,写入输入/输出线,延时等待15后将输入/输出线拉高作为停止信号,以等待下一位的写入。写入程序如下:/*字节写入函数*/void WriteOneChar unsigned char dat /写一个字节 unsigned char i 0;for i 8; i 0; i- DQ 0; DQ dat&0x01; /写入命令 Delay 5 ; DQ 1; dat 1; /移位为写入下一位准备 字读DS18B20程序读取过程结合下面函数说明/*字读函数*/uchar ReadOneChar void /读一个字节 uchar i 0;uchar dat 0;for i 8; i 0; i- DQ 0; / 给脉冲信号 dat 1; DQ 1; / 给脉冲信号 if DQ dat | 0x80; /拼装处理 Delay 15 ; return dat ; 从上面可以看出,16位数据同样是从低位到高位被逐一读取的,而且读取的温度为补码的形式,使用前必须进行补码转换。DS18B20温度读取函数 /*读取温度函数*/ uint wd void unsigned int a 0, b 0, t 0; Init_18B20 ; /初始化DS18B20 WriteOneChar 0xCC ; /跳过读序号列号的操作 WriteOneChar 0xBE ; /读取温度存放器 a ReadOneChar ; /读取一个字节 b ReadOneChar ; t b; t 8; t t | a; /字节合并 return t ; /返回结果给调用 4.6 距离计算程序 距离计算中,实行了温度补偿和夹角补偿。程序如下: /* 距离计算函数*/void computer void /距离计算函数 float c,d,s; uint t; if temp 0x8000 /温度大于0 c 331.4+0.61*temp*0.0625; else /温度小于0 c 331.4-0.61*temp*0.0625; t jsh*256+jsl-120; /计数时间 d c*t*0.001 /2; d* d; /直角三角形勾股定理 s d-7.98; /补偿 distance sqrt s ; /开方运算 4.7 数据转换程序经过求的数据原码无法直接用于显示,必须转换为LCD所接受的BCD码的形式,而且在温度补偿和距离计算中没有考虑小数点的存在,而实际显示必须考虑小数和有效位数,这样就必须对数据进行取舍。/* 数据转换函数*/void hextobcd void /转化成2进制 float tp; unsigned long int tmp; fuhao 0; if temp 0x8000 tp temp*0.0625; else /温度小于0,求补码得到原码 bm ; tp temp*0.0625; fuhao 1; tp* 10; tmp tp; num12 tmp/100; /数据转换后放到显示数组里面 if fuhao num12 num12|0x80; /最高位加上负号 num13 tmp/10- tmp/100 *10; tmp distance; num25 tmp/1000; tmp% 1000; num26 tmp/100; tmp% 100; num27 tmp/10; tmp% 10; num28 tmp/1; 4.8 LCD显示程序 LCD液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,所以在执行每条指令之前必须确定模块忙标志为低电平不忙,否侧此指令无效。液晶显示程序如下:/* LCD显示函数 *
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


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

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


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