基于单片机的超声波测距及温度补偿设计与实现_第1页
基于单片机的超声波测距及温度补偿设计与实现_第2页
基于单片机的超声波测距及温度补偿设计与实现_第3页
基于单片机的超声波测距及温度补偿设计与实现_第4页
基于单片机的超声波测距及温度补偿设计与实现_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、福定断亢大FUJIIANNORMALUNIVERSITY期末课程设计学院:软件学院专业:软件工程年级:2021级课程:一单片机应用技术姓名:郭汉杰学号:123012021138二0一二年六月基于单片机的超声波测距及温度补偿设计与实现摘要本文介绍了基于单片机STC90C516RD+超声波测距系统的设计方案与软硬件实现.采用温度传感器DS18B20采集温度数据,液晶显示屏LCD1602c显示温度数据及往返波的时间,当环境温度变化较大时,提取测得的温度,根据不同的温度对超声波测距系统的声速进行修正.测距时接收到回波,点亮绿色发光二极管;当没有回波时,定时器溢出,点亮红色发光二极管.本文给出了系统总体

2、框架、硬件电路、软件设计和程序流程图,并在硬件平台上实现了所设计的功能.关键词STC90C516RD+超声波测距;温度补偿;温度传感器;液晶显示器1、 引言1.1 超声波测距系统概述随着社会的开展,超声波测量及限制变得越来越重要.本文采用单片机STC90C516RD+设计了超声波测距及温度补偿系统.单片机STC90C516RD+够根据温度传感器DS18B2所采集的温度数据来修正测距系统中的声速,从而使超声波测得的距离更准确.同时,当温度高于设定的温度时,单片机启动蜂鸣器发出报警,并点亮绿色发光二极管;当温度低于设定的温度时,蜂鸣器停止报警.所有测距和温度数据均通过液晶显示器LCD1602显示出

3、来.当收到回波时,测距成功,并在屏幕上现实往返波的时间及距离,并可看到动态变化的当前温度和往返波时间;当未收到回波时,定时器溢出,测距失败,在屏幕上显示出错.1.2 本设计任务和主要内容制作超声波测距系统,并外加温度补偿使测距更精确.前期制作超声波发送与接收电路,经过调试正常可用后,编写相应的超声波程序,完成对于整个测距系统的限制.设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离.以数字的形式显示测量距离.超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离.实用的测距方法有两种,一种是在被测距离的两端,一端

4、发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪.此次设计采用反射波方式.超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三局部.单片机采用AT89C51或其兼容系列.采用11.0592MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差.单片机用P3.4端口输出低电平,通过硬件电路产生超声波换能器所需的40kHz的方波信号,利用外中断1口监测超声波接收电路输出的返回信号.显示电路采用简单实用的LCD16021.3 系统软硬件的调试超声波测距仪的制作和调试都比拟简单,其中超声波发射和接收采用16的

5、超声波换能器T/R40-16T为发射,R为接收,中央频率为40kHz,安装时应保持两换能器中央轴线平行并相距48cm,其余元件无特殊要求.假设能将超声波接收电路用金属壳屏蔽起来,那么可提升抗干扰水平.根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容的大小,以获得适宜的接收灵敏度和抗干扰水平.硬件电路制作完成后,使用外加电源调试,用示波器检测振荡电路输出端是否有一个40KHz的方波.并可检查CX20216第7引脚在收到回波时是否产生低电平.调试好后,便可将程序编译好下载到单片机试运行.根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要.

6、根据所设计的电路参数和程序,测距仪能测的范围为6150cm,测距仪最大误差不超过1cm.系统调试完后应对测量误差和重复一致性进行屡次实验分析,不断优化系统使其到达实际使用的测量要求.2、 系统主要硬件电路设计2.1 系统硬件结构其中单片机主机系统用到了系统的硬件主要由单片机主机系统和超声波测距系统组成.单片机、液晶显示LCD1602独立键盘、温度传感器DS18B20蜂鸣器、LED发光二极管等;超声波测距系统那么包括产生40KHz的振荡电路使用集成芯片CD4011和74LS04组成,超声波发送探头,超声波接收探头及超声波接收芯片CX20216组成.2.2 单片机主机系统1单片机限制模块限制模块是

7、整个设计方案的核心,它限制了温度的采集、处理与显示、超声波发送接收电路的启动及温度补偿.本文选用STC90C516RD+为限制器件.其最突出的优点是片内Flash为16K,可方便地擦写100万次以上,价格低廉,而且其指令丰富,编译工具多,仿真环境好.因此被广泛地应用于各种限制领域.VCCKR1wR310K2AD039P0.0/AD0P2.0/A8P0.1/AD1P2.1/A9P0.2/AD2P2.2/A10P0.3/AD3P2.3/A11P0.4/AD4P2.4/A12P0.5/AD5P2.5/A13P0.6/AD6P2.6/A14P0.7/AD7P2.7/A15P1.0/T2P3.0/RXD

8、P1.1/T2-EXP3.1/TXDP1.2P3.2/INT0-P1.3P3.3/INTFP1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WR-P1.7P3.7/RD-21AP2.09C人A._3AD13822AP2.180yVVVCC114AD2375AD336-23AP2.2/*MJ24AP236-V*6AD43525AP2.457AD534-26AP254-/8AD63327AP2.63-/9AD732-28AP2.72户W2AP1.0110ARXD*YY3AP1.1211aTxD4AP123-12AINT05AP1.3413AP3.36AP14514AP3.4/AP1.5

9、6"AP3.58AP1.6/16AP3.6-gAP1.78-T7AP3.719301XTAI1AIE/PRCG18;XTAL2PSENTA/VPPRST29过*2331rRESEI9ISPJP1U1R210KVCCSTC90C54RD+2温度数据采集模块温度由DALLAS公司生产的一线式数字温度传感器DS18B20采集.DS18B20测温范围为-55°C+125C,测温分到率可达0.0625°C,被测温度用符号扩展的16位补码形式串行输出.CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路.DS18B20内部有一个

10、9字节的高速存储器用于存储温度值.其中前两个字节是测得的温度数据,第1字节的内容是温度的低八位,第2字节是温度的高八位,第3和第4字节是温度上限TH与温度下限TL的易失性拷贝,第5字节是结构存放器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新,第6、7、8这三个字节用于内部计算,第9个字节是冗余检验字节,可用来保证通信的正确性.当温度转换命令发出后,经转换所得的温度值以二字节补码形式存放在此存储器的第1和第2个字节.单片机可通过单线接口读到该数据,读取时低位在前,高位在后,其中高5位是符号位,中间7位是整数位,最低4位是小数位.DS18B20最大的特点是单总线数据传输方式,因此对读写的

11、数据位有着严格的时序要求.时序包括:初始化时序、读时序、写时序.每一次命令和数据的传输都是从单片机启动写时序开始,如果要求DS18B20回送数据,在进行写命令后,单片机需启动读时序完成数据接收.数据和命令的传输都是低位在先.DS18B20的时序及命令请参考文献.温度数据采集模块中温度传感器DS18B20的D琳接P2.6.R64.7K3) 液晶显示LCD1602cLCD1602C是2行X16个字符的字符型LCD显示器,它由32个字符点阵块组成,每个字符点阵块由5X7或5X10个点阵组成,可以显示ASCII码表中的所有可视的字符.它内置了字符产生器ROM(CharacterGeneratorROM

12、,CGROM)、字符产生器RAM(CharacterGeneratorRAM,CGRAM)和显示数据RAM(DataDisplayRAM,DDRAM).CGROW内置了192个常用字符的字模,CGRA血含8个字节的RAM可存放用户自定义的字符,DDRAM是用来存放待显示的字符代码.DDRAMfe址与显示位置的对应关系以及LCM1602的指令与读写时序可参考文献.显示模块LCD1602c的DBADB7数据端口接ADUAD7,数据命令选择端RS接P2.0,读写选择端接P2.1,使能信号接P2.2,被光限制接P2.5,LCD1602C上的VORST接电源+5V,GND接地.U1R210K-LC1Y1

13、J30P11.0592M|T一C2二30PAD0AD1AD2AD3AD4AD5AD6AD7AP1.0AP1.1AP1.2AP1.3AP1.4AP1.5AP1.6AP1.7RESET3938373635343332P0.0/AD0P2.0/A8-P0.1/AD1P2.1/A9-P0.2/AD2P2.2/A10P0.3/AD3P2.3/A1;P0.4/AD4P2.4/A12P0.5/AD5P2.5/A13P0.6/AD6P2.6/A14P0.7/AD7P2.7/A1521AP2.022AP2.123AP2.224AP2.325AP2.426AP2.527AP2.628AP2.765432C1/XA

14、ZxA,AAJ5123456710ARXDP1.0/T2P3.0/RX【DiatXDP1.1/T2-EP3.1/TXDAIN|012miniu13-AP3.314AP3.415AP3.516AP3.617AP3.71918319P1.2P1.3P3.2/INT0P3.3而1P1.5P3.5/TP1.6P3.6/WFP1.7P3.7/RDXTAL1ALE/PROGXTAL2PSENEA/VPPRST3JP1ISP11GND2-VCC3-GND4-AP2.0-5AP2.1-c7-AD08AD19-AD210-AD311-AD4-T2-AD513AD614AD715-A16,LVCC©LC

15、D160213VEEVCCP89C61X24) LEDt光二极管:5) 蜂鸣器:6) 独立式键盘:VCCKEYKEYKEY2.3超声波测距的设备1)超声波测距系统的硬件电路设计:本系统的特点是利用单片机限制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用STC90C516RD+经济易用,便于编程.硬件设计上为减轻处理器负担,不采用软件方法,而使用硬件电路产生40KHz的方波驱动超声波传感器.2)超声波发射电路:发射电路主要由集成芯片与非门CD4011、反相器74LS04和超声波发射换能器T构成,单片机P3.4端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极

16、,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提升超声波的发射强度.输出端采两个反向器并联,用以提升驱动水平.发射电路图如下:VCCJ1INPUT_40KHZEN_40KHZULTRA_OUTVCC12J21J31-2POWERSIGNALINPUT_40KHZ压电式超声波换能器是利用压电晶体的谐振来工作的.超声波换能器内部有两个压电晶片和一个换能板.当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时

17、,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器.超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志.3超声波检测接收电路:接收电路图:LS2C2RX/R51>4.7L-r、473C5C33.3uF/25V1ULTRAOUTU3CX20216R6R7200K六、C4220K330PVCC3.3uF/25V-r-C6104超声波接收处理电路采用集成电路CX2021&CX2021的红外接收专用集成电路,在此利用CX20216乍为超声波传感器接收信号的放大检波装置,亦取得良好的效果.CX2021怵用8脚单列直插式塑料封装,内含前置放大、限幅

18、放大、自动偏置、通带滤波、峰值检波、积分比拟及施密特整形输出等电路.CX20216勺总放大增益约为80dB,以保证其7脚输出的限制脉冲序列信号幅值在正常范围内.只要CX2021锻收到与其中央频率相符的超声波信号时,7脚就输出低电平.7脚输出的脉冲下降沿接单片机INT1口.三、系统的软件设计3.1 系统限制流程超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成.我们知道c语言程序有利于实现较复杂的算法,汇编语言程序那么具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算计算距离时,又要求精细计算程序运行时间超声波测距时,本文限制程

19、序采用C语言编程.主程序调用了扑主要的子程序,分别是LCD显示程序、按键扫描及处理程序、温度采集程序、超声波发送子程序、报警程序.LCD显示程序,用于温度和距离等数据的实时显示;按键扫描及处理程序,实现按键识别、按键输入及相关处理;温度采集程序负责把DS18B20f采集的现场温度读入到指定的数组中;超声波发送子程序,在P3.4引脚发出一个低电平,使硬件电路产生40KHz勺方波,从而驱动超声波发射端;报警程序,对当前距离与设定的报警距离进行比拟,假设低于设定值,那么蜂鸣器开始报警.本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬件根本定型后,软件的功能也就根本定下来了.系统软件的功能又

20、可分为两大类:一是监控软件,它是整个限制系统的核心,专门用来协调各执行模块和操作者的关系.二是执行软件,它是用来完成各种实质性的功能如测量、显示等功能.每一个执行软件也就是一个小的功能执行模块.本文将各执行模块一一列出,各执行模块规划好后,就可以规划监控程序了.两软件分为局部,主程序和中断效劳程序,如下列图.主程序完成初始化工作、各路超声外部中断效劳子程波发射和接收顺序的限制.定时中断效劳子程序完成超声波的轮流发射,序主要完成时间值的读取、距离计算、结果的输出等工作.回诚啕QAn外部中断子程序|b定时中撕服箔子程序C外部中藤船务子程序a主程序端程图3.2 超声波测距仪的算法设计主程序首先是对系

21、统环境初始化,设置定时器T1工作模式为16位定时计数器模式.置位总中断允许位EA并给显示端口使能端P1.5置位.然后调用超声波发生子程序送出一个超声波脉冲,为了防止超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms这也就是超声波测距仪会有一个最小可测距离的原因后,才翻开外中断1接收返回的超声波信号.由于采用的是11.0592MHz的晶振,计数器每计一个数时间约为1ps,当主程序检测到接收成功的标志位后,将计数器T1中的数即超声波往返所用的时间按公式计算,即可得被测物体与测距仪之间的距离,设计测试时取20c时的声速为344m/s那么有:d=cXt/2=172*T1/10000c

22、m其中,T1为计数器T1的计算值.声速c与温度有关,如温度变化不大,那么可认为声速是根本不变的.假设测距精度要求很高,那么应通过温度补偿的方法加以校正.声速确定后,只要测得超声波往返时间,即可求得距离.在系统参加温度传感器来监测环境温度,可进行温度被偿.这里用DS18B20测量环境温度,根据不同的环境温度确定一声速提升测距的稳定性.为了增强系统的可靠性,可在软硬件上采用抗干扰举措.不同温度下的超声波声速表:-3Q-20-10,01020SO100声速cWs)313319325323338344349386测出距离后结果将以十进制送往LCD1602显示一段时间,然后再发超声波脉冲重复测量过程.为

23、了有利于程序结构化和容易计算出距离,主程序采用C语言编写.主要子程序及主程序:voiddisplay(uintt_emp)/显示品巨离(uintq,b,s,g;q=t_emp/1000;b=(t_emp%1000)/100;s=(t_emp%100)/10;g=t_emp%10;wAte_1602com(0x80+0x40+9);write_1602dat(numq);delay(5);write_1602dat(numb);delay(5);write_1602dat(nums);delay(5);write_1602dat(numg);delay(5);write_1602dat('

24、;');delay(5);write_1602dat('C');delay(5);write_1602dat('M');voidalarm(void)/报警(if(S<=15)(beep=0;delay(10);beep=1;else(beep=1;)voidwrite_temp(ucharadd,uchardat)/温度显示子函数,写温度数据,指定显示位置(uchargw,sw,xs;sw=dat/100;/取得十位数字gw=(dat%100)/10;/取得个位数字xs=dat%10;/取得小数点后一位write1602com(0x80+0x40

25、+add);/数字+30得到该数字的LCD1602显示码/数字+30得到该数字的LCD1602显示码/显示温度的小圆圈符号/显示"C"符号/超声波子程序write_1602dat(0x30+sw);write_1602dat(0x30+gw);write_1602dat('.');write_1602dat(0x30+xs);write_1602dat(0xdf);write_1602dat(0x43);)voidultrasound(void)(ek=1;S=0;time=0;beep=1;lcd_init();write_1602com(0x01);de

26、lay(1);write_1602com(0x80);write_1602dat('D');delay(1);write_1602dat('i');delay(1);write_1602dat('s');delay(1);write_1602dat('t');delay(1);write_1602dat('a');delay(1);write_1602dat('n');delay(1);write_1602dat('c');delay(1);write_1602dat('e&

27、#39;);delay(1);write_1602dat(':');delay(1);tx=1;rx=1;TMOD=0x10;IT1=0;while(1)(S=0;distemp();delay(500);tran();delay(10);ek=0;if(key3=0)(delay10ms();if(key3=0)break;ek=1;voidmain()/主函数count3=0;lcd_init();lcd=0;10go();while(1)key();3.3 超声波发生子程序和接收中断程序超声波发生子程序的作用是通过P3.4端口产生低电平,使硬件电路发送1个超声波脉冲信号(

28、频率约40kHz的方波),同时把计数器T1翻开进行计时.超声波测距仪主程序利用外中断1检测返回超声波信号,一旦接收到返回超声波信号(即INT1引脚出现低电平),立即进入中断程序.进入中断后就立即关闭计时器T1停止计时,关闭总中断EA,提取定时器数值,同时根据温度传感器的数值对声速修正,然后计算数据输出到LCD1602,同时点亮绿色发光二极管表示测距成功.如果当定时器溢出时还未检测到超声波返回信号,那么定时器T1溢出中断将外中断1关闭,并点亮红色发光二极管表示此次测距不成功.测距电路的UltrasoundOut端接单片机INT1端口,中断优先级最高.局部源程序如下:voidtran(void)(

29、EX1=0;ET1=0;EA=0;TH1=0;TL1=0;tx=0;TR1=1;nop;tx=1;nop;EA=1;EX1=1;ET1=1;)voidtimer1(void)interrupt3(EA=0;TH1=0;TL1=0;ET1=0;TR1=0;ledr=1;delay02s();delay02s();ledr=0;)voidINT1_(void)interrupt2/(TR1=0;/超声波发送子程序/定时器1计算时间及判断测距是否成功外部中断1,用做判断回波电平EX1=0;EA=0;time=TH1*256+TL1;display1(time);temp=ReadTemperatur

30、e();if(temp>=0&&temp<100)(speed=0.01615;elseif(temp>=100&&temp<200)(speed=0.0169;)elseif(temp>=200&&temp<300)(speed=0.0172;elseif(temp>300)(speed=0.01745;S=time*speed-2;display(S);alarm();ledg=1;delay(10);ledg=0;EA=1;delay(10);四、结束语本文详细讲述了系统设计方案,并给出了相关程序流

31、程.本设计应用性比拟强,简单使用,可以应用在倒车雷达、机器人或小车避障等方面.另外,如果把本设计方案的电源电压提升,那么可以测得更远的障碍,假设使用防水型超声波探头,那么可以进行水下探测,将具有更大的应用价值.设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离.以数字的形式显示测量距离.超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离.实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪.此次设计采用反射波方

32、式.超声波测距仪硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三局部.单片机采用AT89C51或其兼容系列.采用11.0592MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差.单片机用P3.4端口输出超声波换能器所需的40kHz的方波信号,利用外中断1口监测超声波接收电路输出的返回信号.显示电路采用简单实用的LCD1602超声波发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P3.4端口输出的低电平信号,40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提升超声波的发射强度.输出端采两个反向器并联,用以提升驱动能力.上位电阻一方面可以提升反向器74LS04输出高电平的驱动水平,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间.压电式超声波换能器是利用压电晶体的谐振来工作的.超声波换能器内部有两个压电晶片和一个换能板.当它的两极外加脉冲信号,其频率等于压电

温馨提示

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

评论

0/150

提交评论