基于STC89C52单片机设计超声波测距_第1页
基于STC89C52单片机设计超声波测距_第2页
基于STC89C52单片机设计超声波测距_第3页
基于STC89C52单片机设计超声波测距_第4页
基于STC89C52单片机设计超声波测距_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

基于STC89C52单片机设计超声波测距摘要随着社会的快速发展,电脑已经在我们生活和学习中得到普及。但是在享受信息化带来的方便和乐趣的同时,我们不能忽视与之带来的问题,比如长期使用电脑造成颈椎病、近视眼等一系列疾病。为此,本文提出要开发电脑近距报警器来改善这种状况。本设计以STC89C52单片机为核心,通过安装在电脑显示器上、中、下三个HC-SR04超声波模块测量人的距离,从而得知人的位置,判断人是否离电脑距离过近,姿势是否正确,通过报警提示用户矫正姿势;通过DS18B20温度传感器采集实时温度,判断环境温度是否正常,为用户提供环境温度参考;对电脑的使用时间进行记录,以便提醒用户休息;由独立键盘和LCD1602组成友好的人机交互界面,便于用户操作。经过调试,最后验证本设计实现了以上所提到的功能,具有创新性和使用价值。经过对设计的功能进行分析,在论文开始得出了该系统的设计方案,接着从硬件、软件两部分对整个系统的设计方案进行了详细描述,最后通过系统的调试与分析验证了系统功能。关键字:单片机,超声波,测距,矫正姿势基于STC89C52单片机设计超声波测距全文共68页,当前为第1页。

基于STC89C52单片机设计超声波测距全文共68页,当前为第1页。ABSTRACTWiththefastdevelopmentofsociety,computershavebeenwidelyusedinournormallifeandstudy.Whileweenjoytheconvenienceininformationandfun,wecan'tignoretheproblems,suchasthecervicalvertebradisease,myopia,aseriesofdiseaseforthelongtimeuseofcomputers.Thus,thealarmfortheneardistancebetweencomputeranduser,whichisusedtoimprovethissituationisproposedinthiscontext.ThedesignisinthecoreofSTC89C52Singlechipmicrocomputer,measurespeople’sdistancethroughtheup,middle,downthreeHC-SR04ultrasonicwavepartswhichareinstalledonthecomputerdisplay,accordingtotherecords,it'llknowthepeople'sposition,judgewhetherthedistancethat'sbetweenuserandcomputeristooclose,thegestureisrightornot,thenpromptusertocorrectgesturethroughalarm,it'lljudgewhethertheenvironmentaltemperatureisnormal,inordertoapplyuserthereferencetemperaturethroughtheDS18B20temperaturesensortogettheactualones,thecomputer’susetimewillberecordedtosuggestuserstogetrelaxed,thefriendlyhumancomputerinteractioninterfacewhichconsistofindependencekeyboardandtheLCD1602canbeeasilyused,too.Afterdebugging,itwastestedthatthedesignhasaccomplishedthewholefunctions,andit'sinnovativeandvaluable.Accordingtotheanalyzeoftheapplication,itcomesintobeingthedesignschemeofthesysteminthebeginning,thengivesthedetaildescriptionfromhardwareandsoftwarebothsides,finallygetstheverificationofthesystemfunctionthroughthesystemdebuggingandanalyze.KEYWORDS:microcontroller,ultrasonic,ranging,correctposture基于STC89C52单片机设计超声波测距全文共68页,当前为第2页。基于STC89C52单片机设计超声波测距全文共68页,当前为第2页。目录TOC\o"1-4"\h\z\u前言 前言随着社会的快速发展,电脑已经在大家的生活中得到普及,但是人们在享受它带来的方便和乐趣的同时也不能忽视它给人们带来的问题,例如由于长时间使用电脑造成的近视;由于使用电脑姿势不正确带来的颈椎病,甚至造成脊柱弯曲;由于长时间坐在电脑跟前不作休息,对腰部造成伤害,例如很多长期使用电脑的人患有腰椎间盘突出;还有人脸与电脑距离过近,电脑显示器对脸部皮肤的辐射伤害等。但是,目前我们所看到的都是治疗和预防以上所提到的症状的方法和仪器,比如治疗和预防近视眼的近视治疗仪,利用按摩穴位来改善眼部血液循环,进而达到预防和治疗近视的功效[1];颈椎治疗仪是一种治疗和预防颈椎病的仪器,它集颈椎牵引,颈椎按摩、热疗、针灸、磁疗、电疗等功能为一体的颈椎治疗仪器[2];还有腰椎间盘突出治疗仪,通过红外脉冲作用病灶部位,达到治疗效果[3]。以上这些只是治疗和预防这些病,没有从根本解决这些病的发生,我们还是不能避免电脑给人的伤害。当今,人们对生活品质的要求越来越高,也对自我身心健康状况日益重视,希望既能够长时间使用电脑而且不能损害自己的身体健康,但是到目前为止没有一个有效的办法来解决此类问题,人们希望得到一款产品来彻底改变这种状况,免遭电脑的伤害。基于STC89C52单片机设计超声波测距全文共68页,当前为第6页。鉴于此,我们便设想开发一个电脑近距离实用报警器,本设计要以保护人的健康为初衷,采用简单的设计,通过测距的方法来确定人的位置,从而判断人是否和电脑显示器距离过近,姿势是否正确;然后通过报警功能,提醒用户保持人与电脑的距离、姿势等;还有一个计时功能,记录用户使用电脑的时间,给用户一个时间参考,提醒用户注意休息;还有一个温度采集、显示、报警功能,保证人们使用电脑的环境温度要适合人的工作和学习。人性化的设置功能和显示界面,为用户的操作和使用带来了方便。经过试验,电脑近距离实用报警器人性化的设计可以有效的改变用户使用电脑的一些习惯,为用户提供提醒功能。从而解决了上面所提到的问题。基于STC89C52单片机设计超声波测距全文共68页,当前为第6页。第1章绪论本章主要介绍了该设计基本原理,整体方案的设计,然后细化到每个模块的方案选择,最后根据设计方案进行了整个论文的章节安排。1.1基本原理本设计主要从电脑显示器到用户脸部这一段空间着手构思,通过安装在电脑显示器正上方、左边、右边三个传感器分别测量电脑使用者上半身和电脑显示器之间的距离(如图1-1)。然后通过单片机计算三个传感器得到的数据,从而得到人与电脑的位置关系,再根据设置的距离判断用户使用电脑时和显示器之间的距离与使用姿势是否正确,如果不正确则通过报警装置提醒使用者注意使用电脑的距离和姿势。然后通过温度采集传感器得到实时温度,然后在单片机里将采集的温度和设置值对比,如果不符则报警提示,提醒用户改变环境温度。还有采用计时方式记录用户使用电脑的时间,给用户一个参考,提醒用户适当的休息。图1-1电脑近距离报警器测距模拟图1.1.1测距的基本原理基于STC89C52单片机设计超声波测距全文共68页,当前为第7页。 目前测距的方式大致分为激光测距、红外测距和超声波测距三大类,不管是哪种测试方式和测试仪器,其基本原理都是通过控制传感器发射端发射信号,然后信号通过被测物体反射,接收端接收反射回来的信号(如图1-2)。然后计算出从发射到接收所用时间,再根据该信号的传播速度就可以计算出物体和到发射接收端之间的距离。基于STC89C52单片机设计超声波测距全文共68页,当前为第7页。发收被测发收被测物体图1-2测距原理图1.1.2人体工程学和舒适度原理电脑现在已经成为现在人们办公、学习、娱乐的必备的设配,但是我们不能忽视在使用电脑时给我们带来的伤害,而且我们要在此基础上,提高我们使用电脑时的舒适度。根据人体工程学原理的基本知识,人的理想坐姿是身体与水平面成90°,这种姿势可以使肌肉消耗的力最少,而正是肌肉使人体保持了直坐的状态。但是要使人保持这种直坐的姿势除了需要一个对腰部有支撑的座椅外更需要我们自己调整姿势,并且人在这种90°的坐姿下眼睛可以直视电脑显示器,根据人体舒适度相关知识,人眼和电脑显示器在一个水平线并且保持一定的距离时,电脑对人眼伤害最小,保持一定距离辐射也会相对减少,而且减少颈椎病、肩周炎等疾病的发生概率[4伴随着社会的飞速发展,生活节奏的加快,人们对工作环境舒适度的要求越来越高,从气象学方面了解到,影响人体的舒适度主要因素为:气温、湿度、风和气压。其中气温对人体的影响最大,它直接影响着人体许多生理机能。影响人的热平衡、关节功能、消化器官。所以我们应该重视我们所生活、工作和学习的环境温度,保持一个合适的温度,既有利于健康也有助于提高生活质量和工作学习效率。1.2系统方案基于STC89C52单片机设计超声波测距全文共68页,当前为第8页。基于STC89C52单片机设计超声波测距全文共68页,当前为第8页。1.2.1系统功能电脑近距离实用报警器的设计主要是为了改变现在人们使用电脑的坏习惯,然后通过辅助功能可以提示人们工作的时间和工作环境的温度。1、实现测量人与电脑之间的距离并且报警本系统通过安装在电脑显示器上的上、中、下三个测距传感器分别测得电脑与人之间直线距离S,人与左边传感器的距离S1,人与右边传感器的距离S2。通过S可以得知用户和显示器的直线距离,对比S和设置的距离值就可以判断人使用电脑时的距离是否合适;通过计算S1和S2的差值可以得知人在电脑显示器正中间还是偏左偏右,可以判断人使用电脑时的姿势是否合适。此测距精度可以达到1cm,足以判断人的准确位置。2、实现温度的采集显示与报警通过温度采集传感器采集实时温度,温度采集误差±0.5℃,并且要显示出来,如果温度大于或者小于设置的报警温度,提醒用户。3、实现计时功能然后通过软件编写计时功能,系统计时可以提供给用户使用电脑时间长短的信息,提醒用户要注意休息。1.2.2系统方案系统构架基于STC89C52单片机设计超声波测距全文共68页,当前为第9页。本设计由测距部分、处理部分、显示部分、设置部分、温度采集部分和报警部分组成(如图1-3),处理部分是整个系统设计方案的关键之一,其它部分要以它为核心进行相应的动作;测距部分则是主控部分最重要的外设,通过测距可以得到精确的距离数据,为后面的处理提供了精确的数据参考;设置部分是用户操作系统的唯一方式,通过设置功能可以设置报警距离和报警温度;显示部分是唯一的输出部分,通过它可以将测量的距离和温度实时呈现出来,通过设置和显示功能可以给用户提供一个友好的人机互动界面;报警部分是一个最简单的部分,它的主要功能是提醒用户。将以上的各个部分仔细整合在一起就可以将一个电脑近距实用报警器呈现给人们。基于STC89C52单片机设计超声波测距全文共68页,当前为第9页。显示输出显示输出处理器处理器距离测量距离测量报警提示报警提示温度采集温度采集按键输入 按键输入图1-3系统框图器件的选择1、处理器的选择基于STC89C52单片机设计超声波测距全文共68页,当前为第10页。STC89C52单片机是宏晶科技推出的新一代高速/低功耗/超强干扰的高性能CMOS8位微控制器,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。它具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位

定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。而且STC89C52价格低廉,适合我们设计的初衷,最为关键的一点,STC89C52单片机的程序下载器便宜实惠,而且网上关于STC89C52的教程也很多,对于我们初学者而言很容易上手,鉴于STC89C52以上的特点,我们的控制器件最终选择STC89C52.基于STC89C52单片机设计超声波测距全文共68页,当前为第10页。(a)STC89C52RC实物图(b)STC89C52RC引脚图图1-4STC89C52RC单片机2、测距方案的选择目前测距的方式有激光测距、红外线测距、超声波测距三大类,但是各有特点,我们要根据我们设计的需要来权衡这三类测距方式的利与弊,最终选择一个合适、有效的测距方式。方案一:激光测距由于激光在亮度、方向性、单色性和相干性等方面有独特之处,它就被广泛应用在工业生产、国防军事、科研机构、防盗安全等各个行业各个领域。在测距领域,激光的作用更是不容忽视的,甚至可以说,激光测距是激光应用最早的领域,例如:世界上第一台激光器,是由美国休斯飞机公司的科学家梅曼于1960年,首先研制成功的,而在1962年就被应用于地球与月球之间距离的测量。测量精度高、分辨率高、抗干扰能力强、体积小同时重量轻的激光测距仪受到了大多数具有测距需求的企业、机构和个人的青睐,其市场需求空间大,应用领域广阔,并且起着日益重要的作用[5]。基于STC89C52单片机设计超声波测距全文共68页,当前为第11页。激光测距仪一般采用两种方式来测量距离:脉冲法和相位法。脉冲法测距的过程是测距仪发射出的激光经被测量物体的反射后又被测距仪接收,测距仪同时记录激光往返的时间。光速和往返时间的乘积的一半,就是测距仪和被测量物体之间的距离。脉冲法测量距离的精度一般是在+/-1米左右。另外,此类测距仪的测量盲区一般是15米左右。基于STC89C52单片机设计超声波测距全文共68页,当前为第11页。激光测距是光波测距中的一种测距方式,如果光以速度c在空气中传播在A、B两点间往返一次所需时间为t,则A、B两点间距离D可用下列表示。D=ct/2(1-1)式中:D——测站点A、B两点间距离;c——光在大气中传播的速度;t——光往返A、B一次所需的时间。由式(1-1)可知,要测量A、B距离实际上是要测量光传播的时间t,根据测量时间方法的不同,因此激光测距仪通常可分为脉冲式和相位式两种测量形式。但是激光测距仪的成本过高,而且用于人体和电脑之间测距过于奢侈,还有一个重要原因,激光对人眼有一定的伤害,故不可取。方案二:红外线测距红外线测距是利用红外光来传送控制指令信号,因此,作为红外测距中的红外光发射器件的红外发光二极管和红外光接收器件的红外光敏管,是构成红外测距系统的基本器件。红外线发射器件是最长用的为红外发光二极管,它与普通发光二极管的结构原理以及制作工艺基本相同,是只有一个PN结的半导体器件,只是所有的材料不同,制造红外发光二极管砷化钾,砷铝钾等,其中应用最多的是砷化钾。红外发光二极管一般采用环氧树脂,玻璃,塑料等封装,除白色透明材料封装外,还可见到用蓝色透明材料封装的。红外发光二极管按发光功率的大小,可分为小功率,中功率,大功率三种。另外,红外发光二极管除顶面发光型外,还有侧面发光型。小功率管一般采用全塑封装,也有部分是采用陶瓷底座,顶端用玻璃或环氧树脂透镜封装的,中大功率管一般采用带螺纹金属底座,以便安装散热片。随着发光功率得提高,相应体积的管子也增大。基于STC89C52单片机设计超声波测距全文共68页,当前为第12页。影响红外发光二极管工作状态的主要参数为:正向工作电流I、光功率P、峰值波长λp、反向漏电流Ir、相应时间t0。其中在测距方面应用时,对红外发射管工作状态影响最大的是:正向工作电流I、光功率P、峰值波长λp。正向电流的大小直接影响管子能否正常工作,只有正常管子正常工作时才能发出红外光;光功率是指输入到发光二极管的电功率转化为光输出功率的那一部分。光功率越大,发射距离越远,因此光功率会影响到红外测距的测距长度。还有峰值波长指红外发光管所发出近红外光中,光强最大值所对应的发光波长,在选用红基于STC89C52单片机设计超声波测距全文共68页,当前为第12页。我们知道半导体具有光电效应,即用光照半导体,可使半导体的电阻率发生变化。利用半导体的光电效应可以制成光电二极管,不同的半导体材料对不同波长的入射光的响应是不同的。光敏二极管有顶面受光和侧面受光两种形式。它也是采用塑料、玻璃、环氧树脂等材料封装。其中影响光敏二极管工作状态的主要参数为:光电流IL、暗电流ID、反向工作电压UR、峰值波长λp。在测距方面应用时,对红外发射管工作状态影响最大的是:光电流IL和峰值波长λp,光电流指在一定反向电压下,入射光强为某一定值时流过管子的电流。光敏二极管的光电流一般为几十μA,并与入射光强成正比。所以可以利用这个原理把光敏二极管作为红外接收管,当接收到一定的红外光时,电流会发生变化,可以作为系统的响应信号。峰值波长λp指光敏二极管光谱响应最灵敏的波长范围,一般为0.88μM-0.94μ红外传感器的测距基本原理为红外发射电路的红外发光管发出红外光,经障碍物反射后,由红外接收电路的光敏接收管接收前方物体反射光,据此判断前方是否有障碍物。根据发射光的强弱可以判断物体的距离,由于接收管接收的光强随是随反射物体的距离变化而变化的。因而,距离近则反射光强,距离远则反射光弱。基于STC89C52单片机设计超声波测距全文共68页,当前为第13页。因为红外线是介于可见光和微波之间的一种电磁波,因此,它不仅具有可见光直线传播、反射、折射等特性,还具有微波的某些特性,如较强的穿透能力和能贯穿某些不透明物质等。红外传感器包括红外发射器件和红外接收器件。自然界的所有物体只要温度高于绝对零度都会辐射红外线,因而,红外传感器须具有更强的发射和接收能力。基于STC89C52单片机设计超声波测距全文共68页,当前为第13页。由以上红外测距的发射器件、接收器件的参数和其测距基本原理得知,其测距方式不适合本设计。方案三:超声波测距超声波传感器是利用压电效应的原理,压电效应有逆效应和顺效应,超声波传感器是可逆元件,超声波发送器就是利用压电逆效应的原理。所谓压电逆效应,是在压电元件上施加电压,元件就发生形变,既逆变。已极化的压电陶瓷上施加极性的电压,外部⊕电荷与压电陶瓷的极化⊕正电荷相斥,同时外部⊖负电荷与极化⊖负电荷相斥。由于相斥的作用,压电陶瓷在厚度方向上缩短,在长度方向上伸长。若外部施加电压的极性变反,电压陶瓷在厚度方向上伸长,在长度方向上缩短。超声波测距模块上就有两个这样的传感器,一个作为发射,一个作为接受。如果需要测距,则测距模块电路控制超声波发射装置向某一个方向发出超声波并且开始计时,超声波在空气中的传播速度为ν,当超声波传播到被测物体时就会立即被反射,然后通过超声波接收装置接收,接收器接到超声波时暂停计时,根据时间差t就可以知道距离了,这与雷达测距原理相似。(S=ν×t2m)超声波方向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用[6-13]。基于STC89C52单片机设计超声波测距全文共68页,当前为第14页。例如HR-SR04超声波测距模块(如图1-6),它可以提供2cm-400cm的非接触距离感测功能,精度可以达到3mm,模块包括超声波发射器、接收器、控制电路和接口电路。此模块接口有4个,分别为VCC、GND、Trig、Echo。VCC和GND给模块提供电源和地,那么Trig和Echo则分别和单片机I/O口相连。其工作方式为触发测距,和Trig相连的I/O口发送一个至少10us的高电平信号,模块内部自动发送8个40KHz的方波,自动检测是否有信号返回,若有信号返回,通过和I/O口相连的Echo输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,(如图1-5)。基于STC89C52单片机设计超声波测距全文共68页,当前为第14页。测试距离=(高电平时间*声速(340m/s))/2(1-3)图1-5HR-SR04超声波模块测距原理图1-6HR-SR04超声波模块实物图3、报警方式的选择通常我们所见的报警方式为声和光报警,例如警车上有警灯和喇叭,当遇到紧急状况时就会同时工作,以表警示。基于STC89C52单片机设计超声波测距全文共68页,当前为第15页。方案一:光电报警基于STC89C52单片机设计超声波测距全文共68页,当前为第15页。光电报警常用的光电报警器件为LED发光二级管,稍微大一点的为警灯闪烁,通过延时开断这些光电器件让其达到闪烁的功能,便有警示、提示功能,即构成光电报警装置。(a)LED发光二极管(b)警灯图1-7光电报警器件但是我们的设计主要是在人们使用电脑工作的,人们的目光主要在电脑显示器上,如果使用光电报警则会影响人们正常使用电脑;还有我们的报警方式有很多种,如果使用光电报警,则需要用不同光线颜色区分报警方式,所以要使用不同的光电器件,这样会增大面板面积、增加成本,有悖于我们的设计初衷,所以此方案不可取。方案二:语音报警语音报警主要是通过声音信号去提示和警告人的报警方式,其原理首先通过麦克风采集语音信号,由于语音信号为模拟信号,所以要用A/D芯片将其进行模数转换,转换成便于存储和处理的二进制数字信号,然后存储在计算机的存储器里面,如果报警需要则通过指令,调出相应的报警语音文件,然后通过D/A处理,还原成原来的模拟信号,然后再用功率放大器放大D/A输出的信号,再通过扬声器就可以听到报警声音,达到报警效果。但是由于我们的设计初衷是简单和实用,因此这样的语音报警过于复杂,还有就是成本过高,不适合本设计,故不能选择。方案三:蜂鸣器报警基于STC89C52单片机设计超声波测距全文共68页,当前为第16页。蜂鸣器是一种一体化结构的电子讯响器,采用的是直流电压供电,被广泛的应用于计算机、打印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,我们一般使用压电式蜂鸣器。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成。当接通电源后,多谐振荡器起振,输出1.5-2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。蜂鸣器发出的声音可以通过控制它的I/O口改变频率而改变。最主要的是这种蜂鸣器驱动电路简单,有的通过一个三极管直接驱动,有的通过驱动芯片驱动,例如ULN2003。而且这种蜂鸣器的体积小、价格低,便于我们使用其作为本设计的报警器。基于STC89C52单片机设计超声波测距全文共68页,当前为第16页。故选择蜂鸣器作为本设计的报警器。4、设置方式的选择设置一般指输入设备,我们常用的输入设备是键盘,所以选用的键盘要以提供快捷、清晰的操作为目的。在电路方面,要以节约控制器I/O资源为重。因此,我们把常见的独立式键盘和矩阵键盘做以比对,发现独立键盘更能满足本设计任务的要求,不需要很多的设置按键去工作,仅要三个独立按键就能完成,一来节约资源,二又满足需求。5、温度采集方式的选择常用的温度传感器为热敏电阻,温度不同阻值不同,在电路中所对应的电压不同,再利用A/D将模拟量转换成为可以存储和处理的二进制数字量,然后经过计算便可得出温度值。还有一种集成的温度传感器—DS18B20,它接线方便,仅需要一根线就可以实现与微处理器的双向通信,测温范围大,精度高,不需要外接其他器件,测量结果以9-12位数字量方式串行传送。鉴于DS18B20以上特点,我们的温度采集器件就选用DS18B20(如图1-8)。图1-8DS18B20实物图6、显示方式的选择基于STC89C52单片机设计超声波测距全文共68页,当前为第17页。LED数码管是我们常见的显示器件,主要用于数字的显示,但是我们本设计需要显示的数据比较多,比如设置提示、测距数据、温度数据、时间数据,因此数码管不能够满足显示要求。依据设计的显示要求,那么我们常见的液晶显示器LCD1602比较适合,它通过字符显示,既能显示数字又能显示字符,而且接法简单,因此选择LCD1602作为显示器件(如图1-9)。基于STC89C52单片机设计超声波测距全文共68页,当前为第17页。图1-9LCD1602实物图相关软件工具1、单片机开发软件KeilC51简介单片机开发中除必要的硬件外,同样离不开软件,我们要把实现的功能通过编程来在硬件上实现,因此我们需要一款适合我们的单片机开发软件。用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于单片机的开发来说是十分必要的。由于现在C语言编程简单易懂,我们也采用C语言编程,因此Keil就是我们的首选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会使开发工作事半功倍。2、电路设计软件AltiumDesignerSummer09简介基于STC89C52单片机设计超声波测距全文共68页,当前为第18页。AltiumDesignerSummer09是Altium公司新出的一款EDA开发工具。AltiumDesignerSummer09的发布延续了连续不断的新技术的应用过程。这必将帮助用户更轻松地创建下一代电子设计。同时,我们将令AltiumDesigner更符合电子设计师的要求。Altium的一体化设计结构将硬件、软件和变成硬件集合在一个单一的环境中,这将使用户自由地探索新的设计构想。在整个设计构成中,每个人都使用同一个设计界面。Summer09版本解决了大量历史遗留问题。其中就包括了增加更多的机械层设置、增强原理图网络类定义。可以再Windows7上运行,增加了很多类似于Windows的快捷键,大大缩短了绘图周期。对于初学者而言更加容易上手。基于STC89C52单片机设计超声波测距全文共68页,当前为第18页。1.4调试方案对于硬件而言,调试工作主要使用示波器和万用表去测量相应的引脚或者位置的波形或者电压,来验证硬件工作状态是否正常;对于软件主要是下载在硬件上面,让其运行,来验证是否达到预期效果。1.3论文章节安排本论文共有五章。第一章是绪论,主要阐述了本设计中的基本原理和系统总体方案设计。第二章是硬件设计,详细阐述了硬件总体功能、超声波测距模块、单片机最小系统的硬件设计。第三章是软件设计,详细阐述了测距、显示、报警等功能的软件设计。第四章是调试与分析,按照调试方案,验证各个模块的功能,并对调试过程中产生的问题进行了分析与总结。第五章是系统设计的结论与展望,在结论里对整个系统的设计结果作了简单的总结,展望则根据系统工作中存在的问题提出了一些相应的改进方法。基于STC89C52单片机设计超声波测距全文共68页,当前为第19页。基于STC89C52单片机设计超声波测距全文共68页,当前为第19页。第2章硬件的设计本章主要从硬件的功能出发,对整个系统的硬件做出详细的设计,主要包括:单片机最小系统的设计、超声波模块电路设计、按键电路设计、温度采集电路设计、报警电路设计和LCD1602与单片机接口电路设计。并且最终要绘制出电路原理图和PCB图。2.1系统硬件的功能根据第一章的确定的方案,我们首先要进行整个系统的硬件设计。硬件的设计则主要根据硬件所要达到的功能而进行,以设计方案提出的功能确定硬件所要实现的功能。1、单片机最小系统的功能单片机最小系统为整个系统提供控制功能,也是后面软件运行的载体,是整个系统的大脑。2、超声波模块电路的功能超声波测距电路也是整个系统的关键,它为测量人与电脑之间的距离提供了硬件支撑。由于这是个模块化电路,那么主要设计其和单片机的接口电路,保证供电外还要和单片机I/O口进行连接,以便控制。3、温度采集电路的功能DS18B20温度采集传感器电路则是温度采集显示的基础,有了这个电路模块就可以实现温度的采集而且在这个芯片内直接实现温度到电信号的转变再到数字量的转变,然后直接使用单片机一个I/O口单线通信,读取温度数据,大大方便了我们的使用。4、按键电路的功能按键电路虽然简单,但是它是唯一的系统输入方式,通过单片机扫描按键来实现安全距离设置,报警温度设置。基于STC89C52单片机设计超声波测距全文共68页,当前为第20页。5、报警电路的功能基于STC89C52单片机设计超声波测距全文共68页,当前为第20页。这个的电路主要功能驱动蜂鸣器发出声音,用作提醒用户。6、LCD1602与单片机接口电路功能在本系统中还有个不可或缺的部分就是显示电路部分,由于LCD1602液晶显示模块是集成的电路只需要设计接口电路即可工作,那么其主要功能就是保证该接口能给LCD显示模块供电,可以通过单片机和其连接保证数据读写。2.2硬件总体设计本设计的硬件部分主要由:单片机最小系统、超声波测距电路、按键设置电路、温度传感器电路、报警电路、LCD1602显示部分组成(如图2-1)。其中单片机最小系统的设计和超声波测距的设计最为关键,他们的硬件设计之间关系到本设计的成败,因此硬件的设计主要先从单片机最小系统电路入手,由于超生测距模块是焊接好的,只需要在单片机上设计相应的接口即可。LCD1602显示接口电路如果测试单片机最小系统工作正常,接下来再加上要求的温度采集电路、报警电路、按键设置电路和LCD1602LCD1602显示接口电路单片机最小系统单片机最小系统报警电路超声波测距电路报警电路超声波测距电路温度采集电路温度采集电路按键输入电路按键输入电路基于STC89C52单片机设计超声波测距全文共68页,当前为第21页。图2-1硬件总体框图基于STC89C52单片机设计超声波测距全文共68页,当前为第21页。2.3硬件详细设计2.3.1单片机最小系统设计时钟电路和AT89C51类似,STC89C52的振荡器也有两种组成方式:片内振荡器和片外振荡器。本系统采用片内振荡器。单片机芯片引脚XTAL1、XTAL2内部有一个反相器,在这两脚之间接上一个谐振器和两个电容,就形成一个振荡器,振荡频率取决于外接谐振器的固有频率。单片机晶体谐振器可用石英晶体和陶瓷两种,常用石英晶体谐振器,并因此把振荡频率称为晶振频率。片内振荡器的组成电路如图2-1所示。STC89C52单片机晶振频率可从0Hz~80MHz。不过,单片机晶振频率的数值通常选择为fosc=6MHz,11.0592MHz,12MHz等三种,或者选fosc=1MHz。晶振频率越高,电源电流越大,功率消耗越大。应当在保证控制器性能的前提下选择尽可能低的晶振频率。对石英晶体,电容C1,C2=30pF±10pF,典型值33pF;对陶瓷谐振器,电容C1,C2=40pF±10pF,典型值39pF或本设计选用石英晶体振荡器,fosc=12MHz,C1,C2=30pF图2-2片内振荡器时钟电路复位电路基于STC89C52单片机设计超声波测距全文共68页,当前为第22页。单片机的复位包括初始化和从头开始工作这样连续的两步。单片机复位引脚Reset接收高电平进行初始化;接收低电平,开始工作。也就是说单片机接收正脉冲开始复位,在正脉冲的下降沿启动单片机。单片机正常工作期间,复位引脚Reset需要一直保持低电平。工作过程中引脚Reset一旦接收到一个正脉冲,就会再次进行复位启动。基于STC89C52单片机设计超声波测距全文共68页,当前为第22页。为可靠完成复位,单片机要求Reset引脚施加的正脉冲脉宽不小于2个机器周期(2µs)。设计复位电路的要求就是确定电阻电容值,使其时间常数达到2个机器周期的复位最小正脉宽要求。本设计中晶振频率fosc=12MHz时,机器周期T=1µs,要求加在Reset引脚的正脉宽不小于2µs。当单片机上电后,因为电容两端的电压不能突变就会使RST端瞬间产生一个大约为+5V的电压,而CMOS单片机最小输入高电平电压Umin=3.5V,它瞬间产生的电压是大于3.5V的,因此RST接收高电平进行初始化。此后+5V对电容C充电导致RST端电压迅速下降使它变为低电平,单片机开始工作。根据上述要求,本设计R23=10K,C值取10µF。系统上电运行后需要复位,一般都是通过手动复位即带电复位来完成的。根据以上考虑,本设计选用手动复位和上电复位相结合的方式,如图2-3所示。图2-3复位电路电源电路基于STC89C52单片机设计超声波测距全文共68页,当前为第23页。USB简单易懂与自制的变压器产生的5V供电系统相比,USB供电电压为5V更加安全,最重要的是制作过程要比稳压电源5V供电简单的多,它所提供的功率不超过2.25W,最大输出电流为500mA,电压一般为5V±5%,这里的偏差可以通过接入旁路电容来消除。本系统供电要求符合以上特点,尤其符合本系统简单实用的特点,即插即用。只需要从USB接口中接出VCC和GND即可给系统供电,注意在电路上接入两个电容为旁路电容,作用是稳定电压,通过一个自锁开关可以实现系统开关自如,LED是电源指示灯,1K电阻是限流的作用[14-19]。基于STC89C52单片机设计超声波测距全文共68页,当前为第23页。图2-4电源电路2.3.2超声波模块电路超声波测距电路是一个模块化的电路,它有4个接口,分别为VCC、GND、Trig、Echo。VCC和GND给模块供电,那么Trig和Echo则分别和单片机I/O口相连。其工作方式为触发测距,和Trig相连的I/O口发送一个至少10us的高电平信号,模块内部自动发送8个40KHz的方波,自动检测是否有信号返回,若有信号返回,通过和I/O口相连的Echo输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340m/s))/2。(2-1)详图见附录。2.3.3温度采集电路基于STC89C52单片机设计超声波测距全文共68页,当前为第24页。温度传感器电路外部供电方式单点测温电路,DS18B20是单总线的数字温度传感器。其与单片机的接口只需要一根数据线即可。需要注意的是,数据线上需要有一个上拉电阻R22用以提供足够的能量。对于VDD管脚,也可以采用寄生电源的办法将其省略,但必须做接地处理,寄生电源的接法有两个好处:一是进行远距离测温时,无需本地电源;二是可以在没有常规电源的条件下读ROM。出于简化设计和实际的考虑,本设计采用普通接法,给VDD管脚外接一电源。电路如图2-6所示[22]。基于STC89C52单片机设计超声波测距全文共68页,当前为第24页。.图2-6DS18B20电路2.3.4按键电路按键电路是设置功能的实现方式,本设计的设置电路只采用三个独立按键就可以实现,如果按键按下则对应的I/O口被拉低,单片机就会做出相应的动作。但是人手按按键时都会产生抖动,通过示波器观察就会看出其电压产生毛刺现象,最终产生的电压跳变会影响单片机的判断,因此在编写软件时一定要注意防抖的处理。图2-5按键电路2.3.5报警电路基于STC89C52单片机设计超声波测距全文共68页,当前为第25页。本设计的报警电路为蜂鸣器报警,蜂鸣器电路比较简单。所以只要解决蜂鸣器的驱动问题就可以了,我们采用ULN2003芯片驱动,ULN2003由7个NPN达林顿管组成,灌电流可达500mA,通过I/O控制ULN2003的输入口,然后去驱动蜂鸣器就可以让蜂鸣器发出声音。电源对地接上0.1uF去耦电容,滤除干扰。基于STC89C52单片机设计超声波测距全文共68页,当前为第25页。图2-7蜂鸣器报警电路2.3.6LCD1602与单片机接口电路1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间有间隔起到了字符间距和行距的作用,正因为如此所以它不能显示图形。1602采用标准的16脚接口,接口简单,即插即用,端口与单片机直接相连接,1脚为电源地,2脚为电源正极接5V,3脚可通过电位器VR可以调节它的显示字符的清晰度,4脚为RS数据命令选择,5脚为R/W读写选择,6脚为E使能信号端7-14为数据端,15背光源正极,16背光源负极(如图2-8)。基于STC89C52单片机设计超声波测距全文共68页,当前为第26页。图2-8LCD1602接口电路基于STC89C52单片机设计超声波测距全文共68页,当前为第26页。2.4系统整体原理图设计整个系统的原理图采用AltiumDesignerSummer09软件绘制,由于本设计主要由超声波测距模块和单片机最小系统组成,但是超声波模块需要安装在电脑显示器上面,所以不在一个电路板上,他们之间用导线连接。超声波测距模块原理图和单片机最小系统原理图分别绘制在两张图纸上面[20-21]。详图见附录。2.5系统整体PCB图设计由于超声波测距模块是直接购买的,所以本设计只需要画出单片机最小系统和一些简单外设的PCB图。绘制PCB图也采用AltiumDesignerSummer09软件。详图见附录。基于STC89C52单片机设计超声波测距全文共68页,当前为第27页。基于STC89C52单片机设计超声波测距全文共68页,当前为第27页。第3章软件设计本章主要讲解软件的详细设计,主要针对系统的功能提出了软件要实现的功能,然后给出了软件总体设计方案,接下来对各个模块的软件进行了详细的设计,并给出了程序流程图。3.1软件的功能没有纯粹的硬件,也没有纯粹的软件,所以电脑近距离报警器设计的关键也在于软件设计。通过编写C51程序来将所有硬件整合起来,使其发挥作用,最后实现我们所要的功能。软件的编写主要从单片机初始化、超声波测距、温度采集(DS18B20)、设置、报警、用时报警、显示等各个模块出发,先编写各个模块,再整合在一起,发挥整体功能。1、超声波波测距子程序由于我们的设计主要是确定人的位置,那么首先得实现的功能是测距功能,那么接下来根据测量的距离可以判断人离电脑的远近和相对于显示器的偏度。2、温度采集子程序这里主要通过编写程序,对DS18B20进行操作,进而得到实时温度的数据,为后面的温度报警提供参考。3、设置子程序通过设置子程序就可以人为的去设置适合自己的报警距离参数和报警温度参数。4、报警子程序这里主要是通过比对实时距离和设置的报警距离,还有对比实时的温度参数和设置的报警温度参数,如果不符合条件,则控制蜂鸣器发出声响。基于STC89C52单片机设计超声波测距全文共68页,当前为第28页。5、显示子程序基于STC89C52单片机设计超声波测距全文共68页,当前为第28页。这里其实是和前面的功能相对应的,每一步操作都有相应的显示,显示包括设置时的显示、实时距离的显示、系统工作时间的显示、温度数据显示。3.2软件总体设计主程序软件的设计在整个系统的设计中至关重要,该系统的软件主要由主程序统领下面的超声波测距子程序、温度采集子程序、设置子程序、报警子程序和显示子程序,在设置子程序下分出了报警距离设置和报警温度设置两个子函数,在显示子程序下又分出了显示测量距离子函数、显示实时温度子函数和显示使用时间子函数。主程序初始化初始化超声波测距子程序设置子程序显示子程序报警子程序温度采集子程序 超声波测距子程序设置子程序显示子程序报警子程序温度采集子程序报警温度设置子函数显示测量距离子函数显示使用时间子函数显示实时温度子函数报警距离设置子函数报警温度设置子函数显示测量距离子函数显示使用时间子函数显示实时温度子函数报警距离设置子函数基于STC89C52单片机设计超声波测距全文共68页,当前为第29页。图3-1软件总体框图基于STC89C52单片机设计超声波测距全文共68页,当前为第29页。3.3软件详细设计3.3.1主程序设计主程序统领各个子程序的工作,是程序设计的核心部分,也是难度比较大的一部分,所以必须根据设计要求仔细推敲,保证设计思路的正确,为后面的子程序设计做好铺垫,要在时序上安排好每个子程序的工作顺序,保证各个子程序能够更好的工作。主程序开始主程序开始设置距离、设置温度设置距离、设置温度初始化定时器、初始化中断初始化定时器、初始化中断超声波初始化超声波初始化超声波测距并计算子程序超声波测距并计算子程序温度采集子程序温度采集子程序液晶显示液晶显示报警报警图3-2主程序流程图基于STC89C52单片机设计超声波测距全文共68页,当前为第30页。由以上流程图可以看出我们整个系统的工作流程,先进入主程序,然后进入设置阶段,在用户面前呈现出设置界面,然后进行超声波测距初始化,就会立即进入测距阶段,再进行DS18B20温度采集种子程序运行,再将测量的距离和温度参数显示在LCD上,最后运行报警程序,主程序整个流程结束。依次循环执行。基于STC89C52单片机设计超声波测距全文共68页,当前为第30页。3.3.2超声波测距子程序设计根据前面讲到的超声波测距原理,只要能计算出超声波发出然后遇到被测物体返回等到接收的这段时间,就可以得到被测物体与超声波测距模块之间的距离,因此超声波测距子程序的设计要从此入手,在启动发射电路的同时启动单片机内部的定时器T0,利用定时器的计数功能记录超声波发射的时间和接收到反射波的时间。当收到超声波反射波时,接收电路输出端产生高电平,在INT0或INT1端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离[24-26]。超声波测距子程序开始超声波测距子程序开始I/OI/O输出至少10us的高电平信号发出超声波定时器计时发出超声波定时器计时等超声波返回时停止计时等超声波返回时停止计时读取定时器值计算距离读取定时器值计算距离超出范围没有超出距离判断超出范围没有超出距离判断输出距离输出EE输出距离输出EE超声波测距子程序结束超声波测距子程序结束图3-3超声波测距子程序流程图3.3.3温度采集子程序设计基于STC89C52单片机设计超声波测距全文共68页,当前为第31页。这里主要是针对DS18B20写一些读取它内部数据的程序,这个程序的编写主要根据DS18B20的资料进行,其工作原理主要是通过单线总线端口访问DS18B20协议进行,包括:初始化、ROM操作命令、存储器操作命令、执行/数据。基于STC89C52单片机设计超声波测距全文共68页,当前为第31页。我们每次读温度之前都必须进行复杂且精准的时序处理,因为DS18B20的硬件简单结果就会导致软件的巨大开销,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。图3-4控制器对18B20操作流程1、复位:开始我们必须对DS18B20芯片进行复位,复位就是由单片机给DS18B20单总线至少480uS的低电平信号。当DS18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。具体复位的函数如下:ucharReset(void){ uchardeceive_ready; DQ=0;//给DS18B20单总线低电平 delay_1(29);//延时 DQ=1; delay_1(3); deceive_ready=DQ; delay_1(25); return(deceive_ready);}基于STC89C52单片机设计超声波测距全文共68页,当前为第32页。2、存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。此时,通信双方已经达成了基本的协议,接下来将会是控制器与DS18B20间的数据通信。基于STC89C52单片机设计超声波测距全文共68页,当前为第32页。3、控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。4、控制器发送存储器操作指令:在ROM指令发送给DS18B20之后,紧接着就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令DS18B20作什么样的工作,是芯片控制的关键。5、执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待DS18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循DS18B20的读写时序来操作。数据的读函数如下:ucharread_byte(void){ uchari,m,receive_data; m=1; receive_data=0; for(i=0;i<8;i++) { if(read_bit()) { receive_data=receive_data+(m<<i);//依次读一字节数据 }基于STC89C52单片机设计超声波测距全文共68页,当前为第33页。 delay_1(6);基于STC89C52单片机设计超声波测距全文共68页,当前为第33页。 } return(receive_data);}6、若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。温度采集子程序开始由DS18B20的工作原理得出,它工作时对时序的要求非常严格,因此在设计程序时要注意此问题。温度采集子程序开始DS18B20DS18B20初始化写写DS18B20读取温度指令N温度转移成功N温度转移成功Y Y移入温度寄存器移入温度寄存器单片机读取温度数据单片机读取温度数据温度采集子程序结束温度采集子程序结束基于STC89C52单片机设计超声波测距全文共68页,当前为第34页。图3-5度采集子程序流程图基于STC89C52单片机设计超声波测距全文共68页,当前为第34页。3.3.4设置子程序设计报警距离设置这里有一重要的功能就是设置报警距离,因为本设计针对每一个用户不一样,因此每个人根据自身习惯,那么我们的设计所给予的保护距离自然就不一样,所以我们在此提供人性化的设置功能。系统一开始就首先提示用户设置报警距离,通过加键、减键和确认键三个独立按键和显示功能,提供距离设置。设置距离子程序开始设置距离子程序开始显示设置距离显示设置距离没有按下确定键没有按下确定键按下按下设置距离子程序结束加或减设置距离子程序结束加或减减加 减加软件延时防抖软件延时防抖软件延时防抖软件延时防抖没按没按按减键按加键 没按没按按减键按加键按下按下按下按下距离加1距离加1距离减1图3-6离设置子程序流程图报警温度设置基于STC89C52单片机设计超声波测距全文共68页,当前为第35页。为了让用户在一个舒适的环境下工作,那么首先得保证环境温度适合人的工作和学习,如果温度过高就要提醒用户采取必要的降温措施,如果温度过低要提醒用户防寒保暖。这里就根据人们对温度的适应不同,加入了温度设置功能,可以随个人意愿和季节的变化,对温度进行相应的设置。基于STC89C52单片机设计超声波测距全文共68页,当前为第35页。设置温度子程序开始设置温度子程序开始显示设置温度显示设置温度没有按下没有按下确定键确定键按下按下设置温度子程序结束减加或减 设置温度子程序结束减加或减加加软件延时防抖软件延时防抖软件延时防抖软件延时防抖 没按没按按减键按加键没按没按按减键按加键按下按下按下按下温度减1温度减1温度加1图3-7离设置子程序流程图3.3.5报警子程序设计报警子程序的设计主要基于前面的测距子程序、温度采集子程序、用时提醒子程序而编写,其中在测距方面也采用人性化的报警设计,就是当用户在使用电脑时距离小于设置的安全距离,系统不会立即报警,而是会进入计时,并且实时测量,当距离大于安全距离,立即停止计时并清零,只有当用户在一段时间内一直处于过近距离使用电脑时才会报警,这样可以避免用户的一些轻微的小动作被系统捕捉到而误报。温度和用时报警都是超越设定值立刻报警。基于STC89C52单片机设计超声波测距全文共68页,当前为第36页。基于STC89C52单片机设计超声波测距全文共68页,当前为第36页。报警子程序开始报警子程序开始判断中间距离和两边距离只差判断中间距离和两边距离只差中间距离小于设置距离或两边距离差小于中间距离小于设置距离或两边距离差小于5cm正常 正常时间变为0时间变为0时间加1延时时间没到时间到时间没到时间到10秒报警报警报警子程序结束报警子程序结束图3-8报警子程序流程图3.3.6显示子程序设计显示子程序也是基于以上子程序而设计,本设计的显示采用的是LCD1602,因此它的程序主要在于通过I/O口控制好它的读、写入口,然后再确定好其地址就可以了。LCD命令函数如下:voidwait(){ P0=0xFF; do { RS=0;//数据命令选择基于STC89C52单片机设计超声波测距全文共68页,当前为第37页。 RW=1;//读写选择基于STC89C52单片机设计超声波测距全文共68页,当前为第37页。 EN=0;//使能信号 EN=1; }while(BUSY==1); EN=0;}LCD写地址函数如下:voidwrite_cmd(ucharcom){ wait(); P0=com;//数据端口 EN=0;//使能信号 RS=0;//数据命令选择 RW=0; //读写选择 EN=1; EN=0; }LCD写数据函数如下:voidwrite_data(uchardata0){ wait(); P0=data0;//数据端口 EN=0;//使能信号 RS=1;//数据命令选择 RW=0;//读写选择 EN=1; EN=0;基于STC89C52单片机设计超声波测距全文共68页,当前为第38页。}基于STC89C52单片机设计超声波测距全文共68页,当前为第38页。显示测量距离在LCD1602屏幕上实时动态显示上、中、下三个测距模块所测量人的距离。显示实时温度在LCD1602上实时动态显示DS18B20传来的温度数据。显示使用时间从系统开启,到设置完成以后,系统开始计时,并且在LCD1602上显示时间。显示子程序开始显示子程序开始LCDLCD初始化YLCDYLCD是否忙N N单片机向单片机向LCD写命令单片机向单片机向LCD写数据显示数据显示数据显示子程序结束显示子程序结束基于STC89C52单片机设计超声波测距全文共68页,当前为第39页。图3-9显示子程序流程图基于STC89C52单片机设计超声波测距全文共68页,当前为第39页。3.4程序代码本设计的程序代码是在Keil软件环境下编写的,其中包括主程序、超声波测距子程序、温度采集子程序、设置子程序、报警子程序、显示子程序。具体程序代码见附录。基于STC89C52单片机设计超声波测距全文共68页,当前为第40页。基于STC89C52单片机设计超声波测距全文共68页,当前为第40页。第4章调试本章主要介绍了整个系统的调试,先根据设计之初的要求和功能,明确调试目的,然后设计出调试方案,逐步测试验证各个模块的功能,再整体调试验证系统整体运行功能,最后根据调试中出现的问题进行改进优化。4.1调试目的通过调试来验证我们设计之初确定的功能,如果有问题再针对问题进行解决,要使系统的功能都能完全实现,并且经过调试使系统的工作达到最优化。4.1.1验证超声波测距功能电脑近距离实用报警器其主要部分为测量距离,那么衡量的第一个标准就是距离,验证每个模块能测量的范围,接下来再研究其精度,还有一个关键环节就是验证三个超声波测距模块是否能够很好的同时工作,因为它关系到系统中确定人在显示器前的位置。4.1.2验证温度采集功能验证温度传感器DS18B20工作是否正常,然后通过编写测试程序,对实际采集的温度进行校准,使其偏差最小。4.1.3验证显示功能基于STC89C52单片机设计超声波测距全文共68页,当前为第41页。验证LCD1602显示功能是否正常,要能够动态显示设置功能,设置完成进入运行阶段到能够正确显示三个模块分别测得的距离,显示时间,动态显示温度。基于STC89C52单片机设计超声波测距全文共68页,当前为第41页。4.1.4整体调试通过整体调试,去验证整个系统的工作状态,看是否达到设计之初的设计要求,并且通过整体调试,使整个系统达到最优化,工作起来顺畅无阻。4.2调试方案4.2.1验证单个超声波测距模块的工作状态首先编写一个单独的超声波测距子程序,采用一个超声波测距模块,测量结果让其在LED数码管上显示,看其测量的距离是否正确,测量范围和精度是否符合本设计的要求。如果单个的测距功能达到要求了,然后将三个模块都接入到系统,编写相应的测距程序,测试三个模块同时工作的性能。4.2.2单独验证温度采集的数据针对本设计的需要,我们要加入温度测量功能,这个的实现主要靠DS18B20温度传感器来实现,那么首先测试一下温度采集模块的工作状态。独立编写程序测试温度传感器DS18B20测量的温度是否正常,首先采用数码管显示,看动态显示的温度是否正常,用手捂住传感器,看温度是否变化。4.2.3通过测距和温度采集验证显示功能如果测距和温度测量都正确,证明那两个模块能正常工作,且参数符合本设计的要求,接下来将这些程序的显示方式改为LCD1602显示,通过上面的测试程序就可以验证LCD1602显示是否正常,还要观察其显示效果看显示能否符合前面的设计要求。4.2.4整体调试基于STC89C52单片机设计超声波测距全文共68页,当前为第42页。将整个系统安装起来,将三个超声波测距模块安装在显示器的左、右、上三个合适的位置,调整好角度,然后将线连接好,将DS18B20插入系统,将整合好的完整程序下入单片机。进入最终测试,主要以用户的身份来要求系统的工作状态,首先是测试测距报警功能,先设置好报警距离S1,测试中间那个超声波测量的距离小于S1时,看系统反应;然后测试两边那个测试距离差小于系统设定的值时,看系统反应。接下来测试用时报警功能,先设置用时报警时间T,然后让系统进入正常工作状态,看计时是否正确,如果正确再看超过设定时间T时系统反应;接下来测试温度显示是否正常;如果以上各项指标正常则整个系统工作状态良好。基于STC89C52单片机设计超声波测距全文共68页,当前为第42页。注意以上测试指标均以用户实际应用为标准测试。4.3调试过程与结果4.3.1超声波测距调试将单个超声波模块接入单片机最小系统,按照测试方案编写超声波测距测试程序,然后运行程序,可以显示测试的距离(如图4-1),测试最远距离为292cm,测试最短距离为1cm。(a)测试最小距离(b)测试最大距离图4-1单个超声波测距模块测试结果基于STC89C52单片机设计超声波测距全文共68页,当前为第43页。将三个超声波测距模块全部接入单片机最小系统,按照测试方案编写三个超声波同时测距的程序,然后运行程序,可以分别显示出三个模块所测试的距离。由于本设计测量的主要是人与电脑显示器之间的距离,那么一般距离不会超过100cm。所以在这个测试里面每个测距显示为2位数码管。测试结果(如图4-2所示)。基于STC89C52单片机设计超声波测距全文共68页,当前为第43页。图4-2三个超声波测距模块测试结果4.3.2温度采集的调试按照测试方案,测试DS18B20的功能,编写相应的温度采集子程序,使用数码管显示其温度数值,主要看测试的温度是否正常,温度感应灵敏度,测试结果(如图4-3所示)。图4-3温度采集测试结果4.3.3显示的调试基于STC89C52单片机设计超声波测距全文共68页,当前为第44页。由于本系统采用LCD显示,因此要测试把所有功能都加在LCD上的显示效果。通过显示也可以验证设置功能、测距功能和温度采集功能。测试结果(如图4-4,4-5所示)基于STC89C52单片机设计超声波测距全文共68页,当前为第44页。图4-4设置时的界面图4-5系统工作时的界面4.3.4整个系统的调试按照整体测试方案,验证系统所有功能。在这里要注意调整好三个超声波测距模块的位置和角度(如图4-6所示),可以根据人的座椅高度调节,也可以根据人的高度调节,还要调整好左边和右边的超声波角度,使其发射的超声波能够直射人体的正中间为最好。基于STC89C52单片机设计超声波测距全文共68页,当前为第45页。图4-6三个超声波测距模块在显示器上的位置基于STC89C52单片机设计超声波测距全文共68页,当前为第45页。图4-7整个系统在工作时的状态4.4结果与分析在系统的调试过程中,产生的问题多种多样。下面就对主要问题进行分析,对相应的解决方法作简单的阐述。1、三个超声波测距模块不能同时工作。分析:这个问题主要是由于软件问题引起的,故先要检查软件。解决:最终发现是软件编写问题,没有注意到各个模块要分步工作,最终重新修改程序,让各个模块分步工作,然后读取每个模块测距的值,最终实现三个模块同时工作。2、超声波测距测量距离实时性不好。分析:由于软件问题导致定时器值不对,或者触发信号问题。解决:在检查过程中发现是因为触发信号过长引起,触发信号过长,再加上超声波分步工作,导致测量距离实时性不好,最后将触发信号减小,问题得到解决。3、测量距离跳变过大,导致报警误报。分析:由于测距子程序引起,故先检查软件。基于STC89C52单片机设计超声波测距全文共68页,当前为第46页。解决:经检查软件编写没有问题,不应出现这种状况。最后查阅资料了解到,超声波发射,等遇到障碍物时就会反射,但是如果障碍物凹凸不平,超声波发射后,返回的时间就不一致,因此导致测距跳变过大。但是我们测距只要应用在人与电脑之家,人本来就是凹凸不平的,所以只能在报警程序里修改,最终在报警子程序里通过设置报警余量和延时报警,问题得到解决。基于STC89C52单片机设计超声波测距全文共68页,当前为第46页。基于STC89C52单片机设计超声波测距全文共68页,当前为第47页。基于STC89C52单片机设计超声波测距全文共68页,当前为第47页。第5章结论与展望本章主要对整个系统的设计过程做出了总结,得出了系统工作的最后结论,并且根据不足做出了展望。5.1结论在硬件设计上,完成了原理图的设计,并且根据设计的需求,设计了适合该系统的单片机最小系统,经过调试可以很好的工作。在软件上,针对设计初期所定的要求,实现了三个超声波同时测距,并且根据测量的距离进行计算得知人与电脑的位置,可以通过报警子程序进行报警;同时通过软件设计加入了用时报警功能,可以提醒用户使用电脑时间过长,注意休息;还通过编写DS18B20子程序,可以测量实时的环境温度,给用户一个参考。经过测试以上所提到的功能都基本能实现。总之,本设计制作完成了设计的要求。在这次毕业设计过程中,我对单片机这一领域有了进一步的认识,通过自己动手实践去做,去体会所学的知识,也加强了我的动手能力,而且也增强了如何从各个方面考虑问题的能力。为期一学期的毕业设计,使我对新事物的认识,了解及应用能力都有了明显的提高。通过这次毕业设计,我不但开阔了视野,而且拓宽了思维。总之,这次毕业设计实践使我受益匪浅,认识到了自己有很多不完善之处:基础还不够扎实,运用知识的能力还不强,思考的深度不够,等等。所以在毕业后的工作当中,我还要继续学习,充实自己,并且注意在实际工作中积累经验。5.2展望基于STC89C52单片机设计超声波测距全文共68页,当前为第48页。本系统经测试基本完成了它的功能达到了预期的指标,但仍然存在着诸多缺陷与不足,需要对系统进行进一步开发与完善。这里列举了一些改进的方法,使系统更加的完善,并能使系统更有实用价值。基于STC89C52单片机设计超声波测距全文共68页,当前为第48页。1、整个系统还比较零散,在用户使用时还不够方便,所以后期可以将整个系统的器件选择成贴片封装,然后PCB布线采用多层布线减少电路板面积,使整个系统体积减少,看起来美观,用起来方便。2、本系统的设置、显示和报警功能还是在单片机最小系统上实现的,希望后期可以通过单片机和PC机之间的通信,将设置、显示和报警在计算机上通过软件来实现。3、可以尝试将测距部分采用无线发射方式和系统主控部分通信,减少不必要的连线,提高美观度。基于STC89C52单片机设计超声波测距全文共68页,当前为第49页。基于STC89C52单片机设计超声波测距全文共68页,当前为第49页。参考文献[1]/view/552958.htm[OL][2]/view/2619494.htm[OL][3]/view/3086044.h

温馨提示

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

评论

0/150

提交评论