




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
超声波测距器的设计,Company Logo,一、功能要求,超声波测距器可应用于汽车倒车。建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度、物体厚度等的测量。其测量范围为0.104.00m,测量精度为1cm。测量时与被测物体无直接接触,能够清晰、稳定地显示测量结果。,Company Logo,二、方案论证,由于超声波指向性强,能量消耗慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。利用超声波检测距离设计比较方便,计算处理也比较简单,并且在测量精度方面也能达到使用的要求。 超声波发生器可以分为两大类:一类是使用电气方式产生超声波;另一类是用机械方式产生超声波。电气方式包括电压型、电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波各不相同,因而用途也各不相同。目前在近距离测量方面较为常用的是压电式超声波换能器。 根据设计要求并综合各方面因素,本例决定采用AT89C52单片机作为主控器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。超声波测距器系统设计框图如下:,Company Logo,二、方案论证,超声波测距系统框图,Company Logo,三、系统硬件电路的设计,硬件电路主要分为以下三个部分:,Company Logo,三、系统硬件电路的设计,1. 单片机系统及显示电路 单片机采用89C51或其兼容系列。系统采用12MHZ高精度的晶振,以获得较稳定的时钟频率,并减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。单片机系统及显示电路如图:,Company Logo,基本原理:,Company Logo,超声波发射接收传感器,连接外壳的是接地端,黑圈的是正极,Company Logo,发射原理:,发射电路主要由反相器74LS04和超声波换能器构成,单片机P1.0口输出40khz的方波信号一路经一级反相器送到换能器的一端,另一路经两级反相器后送到换能器的另一端,用这种推挽的方式把方波信号加到换能器两端可以提高超声波发射的强度。,Company Logo,74LS04,Company Logo,接收原理,Company Logo,Company Logo,电路原理图,Company Logo,74LS07,Company Logo,74LS245,Company Logo,Company Logo,四、 系统程序的设计,1. 超声波测距器的算法设计 距离计算公式:d=s/2=(vt)/2 其中d是被测物与测距器的距离;s是超声波的来回路程,v是超声波在当前温度下的速度,t是发送和接收超声波所经历的时间。,Company Logo,四、 系统程序的设计,超声波测距器原理图,Company Logo,四、 系统程序的设计,2.主程序算法设计 主程序首先要对系统环境初始化,设置定时器工作模式为16位定时、计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延迟0.1ms后才打开外中断0,接收返回的超声波信号。 由于采用12MHZ晶振,计数器每记一个数就是1us,取20时的超声波传输速度v=344m/s,则d=(vt)/2=344t/2=(172T0/106)m=(172T0 /10000)cm 其中T0为中断T0的计数值。 测出距离后,结果以十进制BCD码方式送往LED显示约0.5S,然后再发出超声波脉冲重复测量。 主程序流程图如下:,Company Logo,距离计算,距离计算公式: D=S/2=(Vt)/2,Company Logo,Company Logo,初始化,超声测距器单片机程序 /*- MCU AT89C51 XAL 12MHz -*/ #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long Uchar tab1= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xff; uchar tab2=0x01,0x02,0x04,0x08,; extern void cs_t(void); extern void delay(uint); data uchar dispram5; void display() int j; for(j=0;j=3;j+) P0=tab1dispramj; P2=tab2j;delay(2); data uchar testok;,Company Logo,主程序,void main(void) data uint i; data ulong time; P0 = 0xff; /*初始化*/ P2 = 0xff; TMOD = 0x11; /*工作方式选择*/ IE = 0x80; /*CPU开中断*/ while (1) cs_t(); /*产生 40KHz的方波*/ delay(1); testok = 0; EX0 = 1; /*开外部中断0 */ ET0 = 1; /*开定时/计数器0 */ while(!testok) display();,if (1 = testok) time = TH0; time = (time8) | TL0;/*高8位左移并与低8位合并*/ time *=172; time /= 10000;%(172T0/10000) dispram0 = (uchar) (time % 10); time /= 10; dispram1 = (uchar) (time % 10); time /= 10; dispram2 = (uchar) (time % 10); dispram3 = (uchar) (time / 10); if (0 = dispram3) dispram3 = 17; else if(testok=2) dispram0 = 16; dispram1 = 16; dispram2 = 16; dispram3 = 16; for (i=0; i300; i+) display(); ,Company Logo,超声接收程序(外中断0),void cs_r(void) interrupt 0 TR0 = 0; ET0 = 0; EX0 = 0; testok = 1; /*超时清除程序(内中断T0)*/ void overtime(void) interrupt 1 EX0 = 0; TR0 = 0; ET0 = 0; testok = 2; ,Company Logo,;- ;延时100机器周期*参数(165535) ;-,NAME DELAY PRDELAY SEGMENT CODE PUBLIC DELAY RSEG PRDELAY ; PUSH ACC DELAY: MOV R4,#2 ;MOV A,#2 ; DD1: MOV R5,#24 DJNZ R5,$ DJNZ R4,DD1 ; DJNZ ACC,DD1 ;POP ACC RET END,Company Logo,;超声发生子程序(12M晶振38.5KHz)产生声波脉冲信号(频率约40kHz的方波),脉冲宽度为12s左右,NAME CS_T dd SEGMENT CODE PUBLIC CS_T RSEG dd CS_T: PUSH ACC MOV TH0, #00H MOV TL0, #00H MOV A, #10D SETB TR0 /*定时/计数器0启动*/ CS_T1: CPL P1.0 NOP NOP /*是一个机器周期,一个机器周期是一个振荡周期的12分频,*/ NOP /*%如果你的晶振是12MHZ,那你的一个机器周期就是1微秒 */ NOP NOP NOP NOP NOP NOP NOP /*10个NOP 的时间大概是10us*/ DJNZ ACC, CS_T1 /*是两个机器周期 ,因此一共有12us*/ POP ACC RET END,Company Logo,设计建议,建议最好具有ISP功能 或者增加温度补偿的情况 或增加报警设置,Company Logo,ISP接口,Company Logo,三、系统硬件电路的设计,复位电路,晶振电路,LED显示电路,Company Logo,三、系统硬件电路的设计,复位电路的原理:只有在RST端给它24个时钟周期,才能让它复位。当按下开关时,VCC接通,由于10K电阻的分压作用,RST端的电压为5V,而5V电压正好可以满足RST复位的24个时钟周期要求,于是RST复位。此电路同时也是自动上电复位的,当电容开始充电、放电时,RST端的电压便随之变化,电压由低到高,再由高到低,时间能够满足24个时钟周期,故而RST能够复位。 晶振电路的原理:晶振两端各接一个无极性电容,电容上电,然后再放电,这样便可以帮助晶振起振。另:12MHZ的晶振两端接30PF的电容,6MHZ的晶振两端接20PF的电容。 LED的工作原理:四位共阳LED的一边是段选端,一边是位选端。同名段选端各自相连,然后7位段选端口接到P0口,位选端接到P2口。通过位选可以控制每一个LED亮,通过段选端可以控制LED亮什么,其中段选端还要接上拉电阻,其作用是为了保证LED能够点亮。在位选端加一个高电压,段选端加一个低电压,那么再加上上拉电阻的作用,便可以保证LED的两端形成一个压差,这样LED就点亮了。,Company Logo,三、系统硬件电路的设计,2. 超声波发射电路,超声波发射电路原理图如下图。发射电路主要由反向器74LS04和超声波换能器构成,单片机P1.0端口输出的40kHz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器两端可以提高超声波的发射速度。输出端采用两个反向器并联,用以提高驱动能力。两个上拉电阻一方面可以提高反向器74LS04输出高电平的驱动能力;另一方面可以增加超声波换能器的阻尼效果,以缩短其自由振荡的时间。,Company Logo,三、系统硬件电路的设计,超声波换能器的工作原理 压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部结构如下图所示,它有两个压电晶片和一个共振板。当它的两极加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它是一个超声波发生器;反之,如果两极间未加外电压,当共振板接收道超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器了。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。超声波发射换能器上标有字母T,而接收换能器上标有字母R。,超声波换能器结构图,Company Logo,三、系统硬件电路的设计,3.超声波检测接收电路 集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路,如图所示。实验证明,用CX20106A接收超声波(无信号的输出高电平)具有很高的灵敏度和较强的抗干扰能力。适当地更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。,超声波检测接收电路,Company Logo,四、 系统程序的设计,超声波测距器的软件设计主要由主程序、超声波程序发生子程序、超声波接收中断程序及显示子程序组成。由于C语言程序有利于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行的时间,而超声波测距器的程序既有较复杂的计算(计算距离时),又要求精确计算程序运行时间(超声波测距时),所以控制程序可采用C语言和汇编语言混合编程。下面对超声波测距器的算法。,Company Logo,四、 系统程序的设计,1. 超声波测距器的算法设计 距离计算公式:d=s/2=(vt)/2 其中d是被测物与测距器的距离;s是超声波的来回路程,v是超声波在当前温度下的速度,t是发送和接收超声波所经历的时间。,Company Logo,四、 系统程序的设计,超声波测距器原理图,Company Logo,四、 系统程序的设计,2.主程序算法设计 主程序首先要对系统环境初始化,设置定时器工作模式为16位定时、计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延迟0.1ms后才打开外中断0,接收返回的超声波信号。 由于采用12MHZ晶振,计数器每记一个数就是1us,取20时的超声波传输速度v=344m/s,则d=(vt)/2=344t/2=(172T0/106)m=(172T0 /10000)cm 其中T0为中断T0的计数值。 测出距离后,结果以十进制BCD码方式送往LED显示约0.5S,然后再发出超声波脉冲重复测量。 主程序流程图如下:,Company Logo,四、 系统程序的设计,Company Logo,四、 系统程序的设计,3.超声波发生子程序和超声波接收中断程序 超声波发生子程序的作用是通过P1.0端口发送两个左右的超声波脉冲信号(频率约40KHZ的方波),脉冲宽度为12us左右,同时把计数器T0打开进行计时。超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言程序编程。 超声波测距主程序利用外中断0检测返回超声波信号,一旦接收到返回的超声波信号(即INT0引脚出现低电平),立即进入超声波接收中断程序。进入该中断后,就立即关闭计时器T0,停止计时,并将测距成功标志字赋1。 如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2,表示本次测距不成功。,Company Logo,四、 系统程序的设计,4. C程序代码 /*- 超声测距器单片机程序 MCU AT89C51 XAL 12MHz 2004.2.25 -*/ #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long extern void cs_t(void); extern void delay(uint); extern void display(uchar*); data uchar testok;,Company Logo,四、 系统程序的设计,/*主程序*/ void main(void) data uchar dispram5; data uint i; data ulong time; P0 = 0xff; P2 = 0xff; TMOD = 0x11; IE = 0x80; while (1) cs_t(); delay(1); testok = 0; EX0 = 1; ET0 = 1; while (!testok) display(dispram);,Company Logo,四、 系统程序的设计,if (1 = testok) time = TH0; time = (time8) | TL0; time *=172; time /= 10000; dispram0 = (uchar) (time % 10); time /= 10; dispram1 = (uchar) (time % 10); time /= 10; dispram2 = (uchar) (time % 10); dispram3 = (uchar) (time / 10); if (0 = dispram3) dispram3 = 17; else dispram0 = 16; dispram1 = 16; dispram2 = 16; dispram3 = 16; for (i=0; i300; i+) display(dispram); /,Company Logo,四、 系统程序的设计,/*超声接收程序(外中断0)*/ void cs_r(void) interrupt 0 TR0 = 0; ET0 = 0; EX0 = 0; testok = 1; /*超时清除程序(内中断T0)*/ void overtime(void) interrupt 1 EX0 = 0; TR0 = 0; ET0 = 0; testok = 2; ,Company Logo,五、遇到的问题以及解决办法,1. 当把硬件电路连接好后,接到电源,发现LED灯不亮。LED灯不亮的原因有以下几个: 单片机不工作 LED显示模块的硬件电路设计有问题 LED显示模块的硬件电路连线有问题 故障排查: 单片机不工作。先检查AT89C52单片机的电源线和地线是否接好,发现接线无误。再看晶振电路是否工作,仔细检查发现晶振有一个引脚接错,改正后发现,通电后晶振一端出现50HZ的正弦波,且ALE端出现方波,表示单片机正常工作。LED可以显示了,但是显示全部是8888。,Company Logo,五、遇到的问题以及解决办法,LED显示模块的硬件电路设计有问题 解决办法:软件仿真 在LED显示模块的proteus仿真文件中添加如下程序代码的hex文件,仿真后可以看到LED被点亮。 LED模块调试代码 ORG 0000H AJMP 0030H ORG 0030H MOV P2,#00H ;P2端全部送低电平,经过三极管9012后,位选端为高电平 MOV P0,#00H ; P0端全部送低电平,段选全部为低电平,使LED全部点亮 END LED模块调试代码调入后得到仿真效果如下:,Company Logo,五、遇到的问题以及解决办法,LED模块调试代码调入后得到仿真效果,Company Logo,五、遇到的问题以及解决办法,LED显示模块的硬件电路连线有问题 由于单片机正常工作后,4位共阳LED能够全部点亮;而且LED显示模块的软件仿真成功,说明LED显示模块的硬件电路连线没有问题。至此,LED显示模块的故障被排除。,Company Logo,五、遇到的问题以及解决办法,2.LED全部显示8888的问题 把HEX程序烧进单片机后,连接电源,发现LED全部显示8888。可能是P0口没有接上拉电阻(上拉电阻的阻值一般在1K-10K之间)。因为“从P0口输出时,必须外接上拉电阻才能有高电平输出。”(见单片机课本p20)。如果P0口不接上拉电阻,那么段选一直是低电平,而采用的是数码管的动态扫描,看上去,位选端相当于一直高电平,即:数码管一直点亮。因此,如果LED全部显示8888,那么在P0口加上上拉电阻或许可以解决问题。 前后分别做了两个板子,第一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省2025年下半年海船船员适任考试和评估计划船舶结构与货运综合练习题及答案
- 慢性舌扁桃体炎合并吞咽困难护理查房
- 阿拉尔市2025-2026学年八年级下学期语文期末模拟试卷
- 安徽省亳州市涡阳县2023-2024学年高一上学期期末考试历史试卷及答案
- 社区街道消防课件
- 内科细节管理-推进护理服务
- 社区电动车安全知识培训课件
- 浙江省嘉兴市2024-2025学年高一上学期期末检测生物试卷(含答案)
- 贵州省贵阳市花溪区燕楼中学2024-2025学年七年级下学期6月质量监测数学试卷(含部分答案)
- 车间水暖安装合同范本
- 图纸保密协议范本
- 2.2算法的概念及其描述课件人教中图版高中信息技术必修1
- 出货管理实施手册标准版
- 2000立方米液化石油气球罐设计
- 心肺复苏术英文课件
- 绿色简历封面小升初通用学生个人简历自荐信Word模板
- 临床实践指南的制定与应用
- 米线加工坊管理制度
- 文化长廊、荣誉墙施工方案(技术方案)
- 【人教部编版语文五年级下册】全册课内阅读(附答案)共计30篇
- 自动喷水灭火系统调试记录
评论
0/150
提交评论