超声波测距离(课程设计)_第1页
超声波测距离(课程设计)_第2页
超声波测距离(课程设计)_第3页
超声波测距离(课程设计)_第4页
超声波测距离(课程设计)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南文理学院课程设计报告课程名称: 单片机原理及应用课程设计 院 系: 电气与信息工程学院 专业班级: 自动化11102班(30位) 学生姓名: 袁 新 淼 指导教师: 王 丽 娟 完成时间: 2014年6月13日 报告成绩: 评阅意见:评阅意见:评阅教师 日期 PAGE I摘 要超声波是一种特殊的声波,一般以直线传播方式,频率越低,绕射能力越强,发射能力越强,在非接触式测量中应用非常广泛。本文利用超声波进行距离测量,测量精度在毫米级别,适用于近距离测距,也可运用于汽车防撞。本系统以STC89C52为核心处理芯片,通过STC89C52产生40kHz频率信号,经74LS04推挽式将发射功率放大,

2、再利用超声波换能器TCT40-16T产生超声波信号并发送出去,接收电路由TCT40-16R接收超声波,再利用红外线检波接收专用芯片CX20106将接收到的超声波信号处理,并连接STC89C52微处理器,同时引入温度测量芯片DS18B20对测量的距离进行温度补偿,提高测量精度,微处理器通过计算得到与障碍物的距离,将测得的距离通过JXD1602A液晶显示。关键词 STC89C52RC;推挽式;红外线检波;温度补偿; PAGE IIIAbstractUltrasound is a special kind of sound waves, usually in a straight line, the

3、 lower the frequency, the diffraction is stronger, and launch capabilities, and is widely used in non-contact measurement. In this paper, ultrasonic distance measurement, the measurement accuracy in the millimeter level, applies to close-ranging, can also be applied to a car crash. This system STC89

4、C52 core processing chip to produce 40kHz frequency signal STC89C52 by 74LS04 push-pull transmission power amplification, and then use the ultrasonic transducer TCT40-16T generated ultrasonic signal is sent, the receiving circuit receiving ultrasound by TCT40-16R, then the use of infrared detector t

5、o receive special chip CX20106 will be received by the ultrasonic signal processing, and connect STC89C52 microprocessor, while the introduction of chip DS18B20 temperature measurement of distance measurement with temperature compensation to improve measurement accuracy, microprocessor and obstacles

6、 by calculating thematter the distance, the distance measured by the JXD1602A liquid crystal display.Keywords STC89C52RC; push-pull; infrared detector; temperature compensation.目 录 TOC o 1-3 h z u HYPERLINK l _Toc326936217 摘 要 PAGEREF _Toc326936217 h I HYPERLINK l _Toc326936218 Abstract PAGEREF _Toc

7、326936218 h II HYPERLINK l _Toc326936219 绪 论 PAGEREF _Toc326936219 h 1 HYPERLINK l _Toc326936220 第1章 超声波测速的原理 PAGEREF _Toc326936220 h 2 HYPERLINK l _Toc326936221 第2章 系统设计方案 PAGEREF _Toc326936221 h 3 HYPERLINK l _Toc326936222 第3章 各单元模块设计 PAGEREF _Toc326936222 h 4 HYPERLINK l _Toc326936223 3.1 单片机模块 P

8、AGEREF _Toc326936223 h 4 HYPERLINK l _Toc326936224 3.2超声波发送模块 PAGEREF _Toc326936224 h 4 HYPERLINK l _Toc326936225 3.3超声波接收模块 PAGEREF _Toc326936225 h 5 HYPERLINK l _Toc326936226 3.4 温度检测模块 PAGEREF _Toc326936226 h 6 HYPERLINK l _Toc326936227 3.5显示模块 PAGEREF _Toc326936227 h 8 HYPERLINK l _Toc326936228

9、第4章 软件设计 PAGEREF _Toc326936228 h 10 HYPERLINK l _Toc326936229 4.1系统接口定义 PAGEREF _Toc326936229 h 10 HYPERLINK l _Toc326936230 4.2 主程序流程图 PAGEREF _Toc326936230 h 10 HYPERLINK l _Toc326936231 4.3 检测程序 PAGEREF _Toc326936231 h 10 HYPERLINK l _Toc326936232 4.4 温度读取子程序 PAGEREF _Toc326936232 h 11 HYPERLINK

10、l _Toc326936233 4.5 液晶1602初始化子程序 PAGEREF _Toc326936233 h 12 HYPERLINK l _Toc326936234 4.6 显示子程序 PAGEREF _Toc326936234 h 12 HYPERLINK l _Toc326936235 4.7 初始化程序 PAGEREF _Toc326936235 h 13 HYPERLINK l _Toc326936236 第5章 超声波测距调试 PAGEREF _Toc326936236 h 15 HYPERLINK l _Toc326936237 5.1 硬件调试 PAGEREF _Toc32

11、6936237 h 15 HYPERLINK l _Toc326936238 5.2 软件调试 PAGEREF _Toc326936238 h 15 HYPERLINK l _Toc326936239 5.3 实验结果 PAGEREF _Toc326936239 h 16 HYPERLINK l _Toc326936240 5.4 误差分析 PAGEREF _Toc326936240 h 16 HYPERLINK l _Toc326936241 总 结 PAGEREF _Toc326936241 h 18 HYPERLINK l _Toc326936242 参考文献 PAGEREF _Toc3

12、26936242 h 19 HYPERLINK l _Toc326936243 致 谢 PAGEREF _Toc326936243 h 20 HYPERLINK l _Toc326936244 附录1原理图 PAGEREF _Toc326936244 h 21 HYPERLINK l _Toc326936245 附录2 实物图 PAGEREF _Toc326936245 h 22 HYPERLINK l _Toc326936246 附录3 源程序 PAGEREF _Toc326936246 h 23超声波测距 PAGE 18绪 论人类耳朵能听到的声波频率为2020000赫兹。当物体的振动超过一

13、定的频率,即高于人耳听阈上限时,人们便听不出来了,这样的声波称为“超声波”。 超声波为直线传播方式,频率越高,反射能力越强,而绕射能力越弱。可以利用超声波的这种特性,进行距离的测量。目前,非接触式测距仪常采用超声波、激光和雷达。但激光和雷达测距仪造价偏高,不利于广泛的普及应用,在某些应用领域有其局限性,一般仅用于 HYPERLINK /armament/ t _blank 军事工业。相比之下,超声波测距系统电路易实现、结构简单和造价低,且超声波在传播过程中不受烟雾、空气能见度等因素的影响对外界光线、色彩和电磁场不敏感,更适于黑暗、电磁干扰强、有毒、灰尘或烟雾的恶劣环境,在识别透明及漫反射性差的

14、物体上也更有优势。所以超声波测距在各种场合均得到广泛应用,如倒车防撞雷达、海洋测量、物体识别、工业自动控制,建筑工程测量和机器人视觉识别。第1章 超声波测速的原理超声波测距的原理有多种,如相位检测法、声波幅值检测法和渡越时间检测法等。相位法测距利用发射波和被目标反射的回波之间声波的相位差包含的距离信息来实现对被测目标的测量,通过比较发射端与接收端的正弦波的相位差,得到障碍物的距离。设调制后的发射信号为:,接收信号为:,其中为初始相位,为信号经过电路引起的相位差,为超声波往返的时间,则收发信号的相位差为:,处理后可得距离。相位检测法虽然精度高,但因相位测量存在2n为周期的多解值,从而造成接的不确

15、定性,若为避免多解而只测量一个周期内则检测范围受限制。声波幅值检测法是利用超声波在传播过程中幅值不断衰减,而根据衰减的大小来计算所测障碍物的距离,因其在传播的过程中会反射掉一些能量以及折射掉一些能量,使声波幅值检测法产生较大的误差。故本系统采用超声波渡越时间检测法。其原理为:检测从超声波发射器发出的超声波,经气体介质的传播到接收器的时间,即渡越时间。渡越时间与气体中的声速相乘,就是声波传输的距离。该距离的计算公式如下: 其中:d为被测物与测物的距离,s为来回声波的路程,v为声速,t为声波来回的时间。由于声波在空气中的传播速度与温度有关,超声波在空气中一些温度下的传播速度如表1.1所示表1。1

16、一些温度下的声速温度T/-30-20-100102030声速v/m/s313319322331337344350由此可以得到近似公式v=332+0.607Tm/s。即所测距离公式如下:s=(332+0.607T)t/2 其中T为空气中的温度,t为声波传播的时间。第2章 系统设计方案图2.1 基于单片机的超声波测距设计框图接收电路单片机STC89C52发射电路显示电路温度检测本系统采用STC89C52为主控芯片,因其精度较高,操作比较灵活,输入电路和输出电路由芯片来进行处理,能带DS18B20温度检测,使电路简单,且电路的系统的稳定性高,功耗小。其发射端主要是由芯片产生40KHz的超声波,再经过

17、74ls04推挽式放大送至超声波发射器TCT40-16T发射出去。接收模块采用超声波接收器TCT40-16T送至CX2016A红外接收芯片来实现超声波的接收,CX2016A是由索尼公司生产的一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。同时通过改变部分参数来改变接受电路的灵敏度和抗干扰能力,所以我们采用该芯片作为接收模块主要组成部分。温度检测芯片采用的是由美国DALLAS(达拉斯)公司生产的 DS18B20 温度传感器,该芯片体积小,

18、抗干扰能力强,精度高,附加功能强,单总线数据通信,线路连接简单,所以采用该芯片。显示电路采用TC1602图2.1 基于单片机的超声波测距设计框图接收电路单片机STC89C52发射电路显示电路温度检测整个测距系统分为单片机系统、发射电路、接收电路、温度检测电路、显示电路等五个部分。如图2.1所示。第3章 各单元模块设计本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关电路中的参数、元器件选择、以及核心器件进行必要说明。3.1 单片机模块图3.1 单片机系统手动复位与时钟电路单片机为本设计的核心,通过其引脚与其它各部件连接而控制其它工作电路

19、。单片机各部件的运行都是以时钟信号为基准,时钟频率影响单片机的工作速度及稳定性。常采用外部晶振提供基准时钟,单片机内部有一个用于构成振荡器的高增益反相放大器的输入端为芯片引脚XTA1,输出端为XTA2。这两个引脚接石英晶体振荡器和微电容就构成一个自激震荡器,以提供精准时钟。整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送斯密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对斯密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。本系统采用的复位方式是手动复位,手动电平复位是通过使复位端经地电阻与VCC电源接通而实现的,通过选择适当的电阻、电容使其能保证复位信号

20、高电平持续时间大于2个机器周期。单片机手动复位与时钟电路如图3.1所示。图3.1 单片机系统手动复位与时钟电路3.2超声波发送模块超声波发送模块分为超声波产生电路和超声波发射电路两部分构成,超声波的产生,由单片机P1.0口不断置高低电平产生40KHZ方波脉冲。发射电路主要有反相器74LS04和超声波换能器构成, 由于单片机的输出功率较小,为增大输出功率,将单片机P1.0端口输出的40KHz方波信号一路经一级反相器后送到超声波换能器的一个电极,另一路经两级反相器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器两端可以提高超声波发射强度。输出端采用两个反向器并联,可以提高驱

21、动能力。上拉电阻R1、R2一方面可以提高反相器74LS04输出高电平的驱动能力;另一方面可以增加超声波换能器的阻尼效果,以缩短其自由振荡的时间。电路图如图3.3所示。图3.3超声波发送电路图超声波换能器使用TCT40-16T/R1 压电陶瓷超声传感器,如图3.2图3.3超声波发送电路图图3.2 TCT40-16T/R13.3超声波接收模块图3.2 TCT40-16T/R1图3.4 CX20106内部结构方框图该系统接收头选用超声波接收换能器TCT40-16R,声波在空气中传播能量会损失,接收到的信号非常微弱,所以对返回来的信号必须进行较大倍数的放大,同时传播过程中会有噪声干扰影响超声波的接收,

22、必须对接收到的信号进行滤波,因为超声波的频率与红外线的频率相近,可以采用专用红外线检波接收专用芯片CX20106A完成信号的放大、限幅、带通滤波、峰值检波和波形整形等功能。CX20106A是日本索尼公司产生的彩电专用红外遥控接收器,采用单列8脚直插式,超小型封装,+5V电源,内部有前置放大器,自动偏置电平控制电路(ABLC)、限幅放大器、带通滤波器、峰值检波器和波形整形电路组成,其内部方框图如图3.图3.4 CX20106内部结构方框图图3.5 超声波接收电路图超声波换能器将接收到的信号送至CX20106的1脚,CX20106的总放大增益约为80dB,总增益的大小由2脚外接的R、C决定,R越小

23、或C越大,增益越高,但取值过大时将造成频率响应变差,C取1uF。在TCT40-16R两引脚之间应该接一个473pF的滤波电容,减少干扰,第3引脚上接的3.3F电容为检波电容,建议一般情况下不要更改其大小,以免使CX20106接收不到超声波,为使得CX20106有较高的接收灵敏度,最好保证单片机发出的信号是40KHz的标准信号,否则CX20106有可能会解调不出信号。CX20106作接收电路如图3.图3.5 超声波接收电路图表3.1 CX20106引脚功能引脚号功能备注1信号输入端输入接近40KHz2与地之间连接RC串联网络调节增益推荐参数R=4.7,C=1F3与地之间连接检波电容检波推荐参数3

24、.3f4接地端5设置带通滤波器的中心频率f0推荐电阻200k6积分端标准值为330pF,过大使探测变短7输出端集电极开路,接上拉电阻8电源端4.55.5V3.4 温度检测模块该系统采用DALLAS公司的DB18B20温度传感器进行温度测量,其所测的温度值用9位二进制数直接表示,这些值通过DS18B20的数据总线直接输入CPU,无需A/D转换,而且读写指令、温度转换指令都是通过数据总线传入DS18B20,无需外部电源。DS18B20比AD590、LM35等温度传感器范围更大,更精确,不受外界干扰的优点。其封装图如图3.6所示。DS18B20 工作原理及应用: DS18B20的温度检测与数字数据输

25、出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。DS18B20共有三种形态的存储器资源,图3.6图3.6 DS18B20封装图DS18B20的主要特征: 1 全数字温度转换及输出。 2 先进的单总线数据通信。 图3.7 温度检测电路图3 最高12位分辨率,精度可达土0.5图3.7 温度检测电路图4 12位分辨率时的最大工作周期为750毫秒。 5 可选择寄生工作方式。 6 检测温度范围为55C+125C (67F +257F) 7 内置EEPROM,限温报警功能。 8 64位光刻ROM,内置产品序列号,方便多机挂接。 9 多样封装形式,适应不同硬件系

26、统温度检测电路图如图3.7所示,DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个10K的上拉电阻。如要采用寄生工作方式,只要将VDD电源引脚与单总线并联即可。但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。3.5显示模块图3.8 1602液晶实物图该系统采用JXD1602A液晶显示。1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,内带字符发生器,实物图如图3.图3.8 1602液晶实物图图3.9图3.9 1602液晶引脚连线图由于1602内带字符发生器的控制器,显示字符就比较简单,可以让控制器工作在文本方式,

27、根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。其与单片机的引脚连线图如图3.9所示。LCD1602主要技术参数: 显示容量:162个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm第 1 脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、

28、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W 共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。第4章 软件设计系统功能的实现一般包括硬件部分和软件部分,一旦硬件确定下来,软件要实现的功能也随之确定。而为使编程思路清晰,应先绘制程序流程图。4.1系统接口定义系统接口定义如表4.1所示。表4.1 系

29、统接口定义引脚名单片机引脚功能说明P0P0.0-P0.71602液晶与单片机通信口testP2.3控制蜂鸣器txP1.0超声波发送口dulaP2.6作为数码管段选接口welaP2.7作为数码管的位选接口TMDATP2.2ds18b20数据传输口lcdrsP3.51602数据和命令选择口lcdenP3.41602使能端INT0P3.2外部中断0作为接收中断口4.2 主程序流程图图4.1 主程序流程图图4.1 主程序流程图程序开始测量并显示初始化void main()init();while(1) celiang();4.3 检测程序初始化后,应该进行距离的测量并将其显示出来,该程序中当发送标志位

30、有效时,发送超声波。当接受标志位有效时,利用时间计算距离并通过屏幕显示,当测量的距离小于6cm,或65536us后为接收到信号则通过P2.3口置0驱动蜂鸣器叫以报警。程序流程图如图4.2所示。图4.2图4.2 检测程序流程图程序开始tflag=1?NYrflag=1?NYtflag=0、初始化、发送超声波rflag=0、计算、显示距离S6cm ?NYoflag=1?test=0Noflag=0、TR0=0、EX0=0if(tflag=1) /发送标志位为1时n=0;tflag=0;init();send();test=1; if(rflag=1) /接收标志位为1时rflag=0; c=get

31、tmpvalue();t=time*0.1/1000+0.1; m=(332+0.607*c/100)*t/2; m*=100; /为精确到小数点后面两位s=(int)m-1150;s+=s/1000*50;display(s,0 xc0,1);if(s600) /小于6cm则报警test=0; if(oflag=1) /超过65536us钟没接收到回波则重新等待发送oflag=0;TR0=0;EX0=0;test=0;n=0; delayms(20);test=1; 4.4 温度读取子程序 温度读取时应注意,DS18B20是用16位表示温度,所以应先读取低8位再读取搞8为最后组合成相应的数值

32、,为提高精度到小数点后面2位小数,先将数值扩大100倍,以便显示的时候显示小数点后面两位,其流程图如图4.3所示。int gettmpvalue() /读取温度 uint tmpvalue;程序开始温度转换指令程序开始温度转换指令读取低8位读取高8位图4.3温度读取流程图化为十进制温度 int value; float wendu; sendreadcmd(); low=readbyte(); /读取低8位 high=readbyte();/读取高8位-注:读取方式是1个字节1个字节的读 tmpvalue=high; tmpvalue0? 0.5:-0.5);/为提高精度显示小数点后两位 re

33、turn value; 4.5 液晶1602初始化子程序 对1602液晶屏的使用时首先得对其初始化设定其工作的环境,而其初始化过程可按其datasheet上的要求进行,其初始化流程图如图4.4所示。程序开始显示模式设置程序开始显示模式设置显示开/关及光标设置显示清屏图4.4 1602初始化流程图第一行数据指针设置第二行数据指针设置 writecom(0 x38); /显示,点阵,8位数据接口 writecom(0 x0c); /开显示,不显示光标 writecom(0 x06); /当写一个字符后地址指针加一,且目标加一 writecom(0 x01); /显示清屏 writecom(0 x8

34、0); /写第一行T is: for(i=0;i5;i+) writedata(table1i); writecom(0 xc0); /写第二行D is: for(i=0;i5;i+) writedata(table2i);4.6 显示子程序 在显示屏上,需要显示的有温度和距离第一行显示实时温度,第二行显示距离,由于只有一个显示函数,所以函数体带参数以区分是显示温度还是距离,程序流程图如图4.5所示。图4.5图4.5 显示程序流程图程序开始取v的绝对值v各位数存于数组数据显示起始位置NV100?Y显示百位NNcount=2?Y写入小数点count=5?NYc=0?NY显示“”显示“cm” uc

35、har count; uint p=abs(v); /取温度的绝对值 uchar datas=0,0,0,0,0; datas0=p/10000; datas1=p%10000/1000; datas2=p%1000/100; datas3=p%100/10; datas4=p%10; writecom(x+5); if(v0) writedata(-); if(datas0!=0)/如超过100则显示 writedata(0+datas0);/转化为相应值的字码显示 for(count=1;count!=5;count+) writedata(0+datascount); if(count=

36、2)/显示小数点 writedata(.); if(c=0) writedata(0 xdf); writedata(0 x43);else writedata(0 x63); writedata(0 x6d); 4.7 初始化程序 在测量距离之前必须对1602液晶屏,所用到的定时器,外部中断以及一些I/O口进行初始化设置,由于采用天祥电子开发板所以初始化时关闭数码管,其初始化流程图如图4.6所示。void init()程序开始P1.0口至1程序开始P1.0口至1初始化1602图4.6 初始化流程图温度转换函数定时器工作方式置初值开总中断开定时器0、1中断外部中断电平触发启动定时器1 tx=1

37、; /先将P1.0口至1 dula=0; wela=0; init1602(); sendchangcmd(); display(gettmpvalue(),0 x80,0); TMOD=0 x01; /选择定时器工作方式1 TH1=(65536-50000)/256; TL1=(65535-50000)%256; TH0=0; TL0=0; /置初值0 EA=1; /开总中断 ET0=1; /开定时器0中断允许位 ET1=1; /定时器/计数器T1中断允许位 IT0=0; /采用电平触发方式,若采用边沿触发会有误动作 TR1=1; /启动定时器1,等待发送超声波第5章 超声波测距调试5.1

38、硬件调试按照超声波测距的原理以及设计方案可以确定所需的元器件,其他一般的元件选择与电路连接都比较简单,关键部分就在于cx20106红外线检波接收的专用芯片外围电路的连接,其连接电路在网上是五花八门,各种电阻电容配置都有,各有说法,其中也有官方推荐常用电路。可是由于条件有限,有几个电容一直没找到,所以一直在寻找能够替代的电容,可是无论怎么更换电容还是没有接收到信号。曾将2脚的电容改成4.7uF,没有收到信号,3脚的3.3uF电容一直没找到,所以想各种电容代替还是收不到,而该电容为检波电容,对接收灵敏度非常重要,发现不能更改其大小,最终改用成1F、2.2F、0.1F的电容各一个并联代替。6脚的电容

39、也改用过其他的电容代替过,发现还是不行,最后还是选择采用330pF的电容,在超声波换能器的两脚之间,之前都没接滤波电容,后来才发现的,而这个电容很重要,因其作用为滤波,能减少干扰,所以必须接上。曾经在5脚设置中心频率的电阻上纠结过,后来发现采用200k和220k的电阻都没太大的影响,因实验室没有220k的电阻,为使电路简单所以采用200k的电阻,而7脚的电阻为上拉电阻,采用10k的电阻就可以了。最后经个方面调节终于接收到了信号。可是在接收到后又有了很多问题,本装置的检测最大距离在3m左右,感觉测量的距离太小,所以在网上搜索许多资料,发现在这种装置下所能检测的距离最大无非4、5m左右,(而且不知

40、是否能测到这么远),曾经一度想过增大功率是否能是测量距离更远,尝试过用CD4049六反相缓冲器/转换器进行超声波放大发送,因其驱动电压为9v,可是连接电路发现其能测量的距离并未增加,反而减小,(有可能是电路焊接的问题)所以也就未采用之。由于本装置采用的控制芯片是单片机,其处理速度比较慢,执行指令的时间较长,所以存在测量的盲区,能够检测的最小距离5.83cm。由于在调试的时候软件和硬件都不确定,所以两方面都在调节,这期间花费了很长的时间。5.2 软件调试 软件部分,首先是参考了一些前辈的程序,吸收其根本思想,总结出自己的编程思想,一般的程序也是按部就班,可是一直也是接收不到,后来想到cx2010

41、6接收的信号必须是40KHz的标准信号,因发送频率的程序是参考别人的,所以想到是否是发送的超声波频率不对,才去检验调节发送频率,由于采用ds18b20,其与单片机有个“对话”,由于单片机不支持在线调试,所以程序跑在“对话”处就无法跑下去了,也就无法检测和调节时间调节最终只能选择性的把该屏蔽的部分程序屏蔽掉来检测发送周期,果然,发送的频率与预想频率相差甚远,最终经过调节得到标准的40KHz的超声波信号。在接收到信号后屏幕显示又出现了问题,由于距离的位数不定,如果前一次距离超过100,则后一次测量会出现两个字母mm,误以为是毫米,解决方法:在每次发送后进行一次初始化屏幕。在进入一次测距中断后,再次

42、发送测距的时候会自动进入一次中断并显示距离盲区距离,但再发送后就不再进入。解决方法:将外部中断0的触发方式从原来的下降沿触发改为低电平触发,该距离应为内部程序执行所用时间。由于本装置采用的是隔一定的时间发送一次超声波,而测量同一处的距离不同次测量结果有偏差,即测量不稳定(这可能与温度的变化有一定的关系)。刚接收到信号所测量的结果与实际距离有较大偏差,后来采用调节公式并多次测量对比更改提高测量的精度,最终调节到3m以内误差不超过1cm,其误差不仅取决于装置本身的误差,另一方面由于精度测量的时候也有一定的误差。5.3 实验结果本超声波测距装置测量的盲区距离5.83cm,最大距离超过3m,当超过三米

43、以后有时会接收不到信号,3m以内误差不超过1cm,部分距离测量表如表5.1所示表5.1 部分距离测量表时间距离/cm650100150200250300测量距离/cm6.1650.2499.75150.28200.31250.33300.41HLTRM图5.1 超声波测距图5.4 误差分析HLTRM图5.1 超声波测距图由于超声波的发送与接收并不是在同一条直线上,其实际传送图如图5.1所示,图中被测距离为H,两探头中心距离的一半用M表示,超声波单程走过的距离用L表示。由图形可知所测得的距离大于实际的距离,而在以上测量方法中测量距离越小时误差越大。为改进方案由图,由这两个式子可得,于是可得到该距

44、离的计算公式: ,式中:v为超声波的传播速度,t为超声波从发射到接收所用的时间,由式子可知只要得到传播时间t就能得到准确的距离H。所以可以改变计算的公式提高测量的精度。而在这种方案下测量是假设反射面是光滑垂直的平面,而实际上物体表面是凹凸不平的,所以也会对测量产生一定的误差。 另一方面,在测量校准的时候,由于只是用肉眼观测,并无精确测量仪器,所以也会产生一定的误差。总 结超声波测距仪能够精确测量短距离。其主要模块由MCU模块、超声波发射电路、超声波接收电路、温度检测电路、液晶显示电路等六个部分组成。MCU模块采用STC89C52单片机,通过编写程序进行测量控制和数据处理,超声波发射模块由74L

45、S04和超声波换能器构成,接收电路由CX20106和超声波换能器构成,温度检测模块使用DS18B20测温进行距离测量的温度补偿,测量的距离通过LCD1602显示,同时显示出当时环境下的温度。本次设计做出了实物,在Keil uVision4编译环境下,进行程序设计,编译成功后生成HEX文件,再将程序从PC机下载到STC89C52RC单片机中去,本次设计能够精确测量距离,当测量量程在3m时,测量精度控制在1cm,系统调试后运行稳定,成功地实现了超声波测距的设计。 PAGE 29参考文献1 张俊谟. 单片机中级教程M. 北京:北京航空航天大学出版社,20062 李兰友,王勇才等.单片机开发应用十例M

46、. 北京:电子工业出版社,19943 郭天祥,十天学好单片机视频教程4 http:/ 5 6 致 谢经过两个星期的电子技术课程设计,我成功的完成了超声波测距的设计。回顾整个过程,在此首先感谢父母的养育之恩,是他们给了我生命,为我付出他们的全部。感谢家人对我的支持,他们生活得幸福快乐是我的一个终生的奋斗目标。同时也感谢院里给我们创造了这样一个难得的好机会,使我们能够锻炼自己,培养自己工程实践能力和综合分析问题的能力。感谢王丽娟老师及师兄师姐对我帮助和指导,感谢所有在工作上支持和帮助我的同学,正是因为有了他们的帮助使我的能力有了很大的提高,比如设计能力、分析问题的能力、合作精神、严谨的工作作风等方

47、面。这期间凝结了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。再次感谢你们!附录1原理图附录2 实物图附录3 源程序#include #include#include#define uint unsigned int#define uchar unsigned charuint tflag,rflag,oflag ;/分别为发送标志位、接收标志位、过量程标志位uint a,ge,shi,bai,qian,shu,s,n;long time;uchar i;float m,t;int c;sbit test=P23; /蜂鸣器控制口sbit tx=P10; /超声

48、波发送口sbit dula=P26;sbit wela=P27; /数码管控制口sbit TMDAT=P22; /ds18b20数据传输口sbit lcdrs=P35; /1602数据和命令选择sbit lcden=P34; /1602使能端uchar code table1=T is:;uchar code table2=D is:;/*延时函数*/void delayus() /us延时函数 _nop_();void delay12us() /延时12.5微秒 误差 0us unsigned char a,b; for(a=1;a0;a-)for(b=6;b0;b-);void delay

49、_20us() uchar a; for(a=0;a0;a-) for(b=48;b0;b-);void delayms(uint z) /毫秒延时 uint x,y; for(x=z;x0;x-) for(y=249;y0;y-); /*产生脉冲*/ void maichong() delay12us(); tx=0; delay12us(); tx=1; /*发送超声波*/void send() uchar i; for(i=0;i=9;i+) maichong(); /产生脉冲; TR0=1; /打开计时器0; /delay_20us();/本来应该在发送脉冲后延时一段时间再开启外部中断

50、,但由于执行语句耗用时间,所以不需要延时 EX0=1; /开外部中断允许位,发送超声波之后才能打开以免受到错误信号; /*ds18b20操作*/ void tmreset() /主机发送复位脉冲 uint i; TMDAT=0; for(i=0;i0)i-; while(TMDAT); while(TMDAT); /等待回应 i=4; while(i0)i-; void writebyte(uchar date) /写入1个字节 uchar j; uint i; bit testb; for(j=1;j1; if(testb) TMDAT=0; i+;i+; TMDAT=1; i=8; whi

51、le(i0)i-; else TMDAT=0; i=8; while(i0)i-; TMDAT=1; i+;i+; bit readbit() /读取1位数据 uint i; bit b; TMDAT=0; i+; TMDAT=1; i+;i+; b=TMDAT; i=8; while(i0)i-; return b;uchar readbyte() /读取1个字节 uint i; uchar bat,j; bat=0; for(i=1;i=8;i+) j=readbit(); bat=(j1); /读出的数据最低位在最前面 return bat;void sendchangcmd() /向d

52、s18b20发送温度变换命令 tmreset(); delayms(1); writebyte(0 xcc);/忽略64位ROM地址指令 writebyte(0 x44);/启动ds18b20进行温度转化void sendreadcmd() /向ds18b20发送数据读指令 tmreset(); delayms(1); writebyte(0 xcc); /忽略64位ROM地址指令 writebyte(0 xbe); /读取ROM内的9个字节的内容int gettmpvalue() /读取温度 uint tmpvalue; uchar high,low; int value; float wendu; sendreadcmd(); low=readbyte(); /读取低8位 high=readbyte(); /读取高8位-注:读取方式是1个字节1个字节的读 tmpvalue=high; tmpvalue0? 0.5:-0.5);/为提高精度显示小数点后两位 return value; /*1602操作*/void writecom(uchar com) /向1602写命令指令 lcdrs=0; P0=com; lcden=1; delayus(); lcden=0; delayms(1);v

温馨提示

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

评论

0/150

提交评论