已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课题名称:超声波测距仪 班级:应用电子0901 姓名:吴星超 学号:0503090128 指导老师:杨文博前言随着人类社会从工业化社会到信息化社会的发展,视觉传达设计经历了商业美术、工艺美术、印刷美术设计、装潢设计、平面设计等几大阶段的演变,最终成为以视觉媒介为载体,利用视觉符号表现并传达信息的设计。对于每一位“为传达而设计”的设计者来说,如何正确、充分地传达信息是我们始终要面临的中心问题。但是,在当今社会,由于科技的进步,社会环境和社会秩序的更新,各种视觉媒介的充斥,影响着人们的思维、观念和感情,仅仅把传达信息的关键词定位于正确和充分显然是不够的。鉴于时代的要求与设计本质的要求,必须要把视觉传达设计的创新重视起来,以创新为前提充分准确地传达信息。设计界存在着大量的抄袭、模仿之作,使得设计活动成为一种程式。比如一说到大学标志,就等于是篆书外加一个圆托印章;一谈到VIS设计,便是大量相同的模版拷贝;一说到数码的视觉符号,就是一大堆蚂蚁般的“1”+“0”;一谈到商品的广告,就是戴眼镜的博士或美女的推荐代言等等。人们无时无刻都被这些“东施效颦”的设计所侵犯和骚扰,这些设计给我们带来了视觉污染,人们不禁要问:设计究竟怎么了?面对这些,我们每一个设计师都责无旁贷。现在该是大力宣扬“设计创新”的时候了,因为这个时代比以往任何时期都更需要清晰而独创的视觉传达设计。那么,视觉传达设计的创新究竟体现在哪些方面?目录一、超声波测距仪的制作31.1 超声波测距的原理31.2 超声测距仪的硬件电路51.2.1回流信号放大电路51.2.2 信号检波电路61.3超声波测距程序设计7二、总结:20三、参考文献20一、超声波测距仪的制作1.1 超声波测距的原理 根据相关的物理学知识,声音在介质中如空气和石头中传播时,其衰减特性与其频率相关,频率越高越不容易衰减,相应地其传播距离越远。当声音的频率在20KHz以上的范围时,超出了人耳的听觉范围,变成了超声波,可以传播较远的距离而不衰减,且其本身的信号频率特性不容易受环境噪音的干扰。我们可以利用超声波的这一特性进行测距。我们可利用并列安装的一对超声波探头来发射和接收超声波。发射头标识为T(Transmit),接收头标识为R(Reiceive),它们里面采用谐振频率为40KHz的压电晶体来发射和接收超声波。当发射头外接40KHz的振荡源,如单片机端口时,它能发出最大功率的超声波。接收头只有在接收到中心频率为40KHz的超声波时才能产生谐振,由于压电效应将物理振荡转化为电信号输出,输出电压信号的幅值在uV量级。在测距时,用这对探头对准要测距的物体如车辆、墙壁等,由单片机端口输出40KHz的PWM(脉宽调制信号)驱动超声波发射头(T头)发射出40KHz的一个短促脉冲(0.20.5ms),然后单片机开始计时,直到通过接收头和接收放大电路检测到回波信号,然后停止计时,得到超声波传播总时间Ts,再乘以当地温度下声速Vs得到超声波走的总路程,再除以2就得到了超声波探头与物体的实际距离。 注意:超声波脉冲以5-10个频率周期为宜,太长则测距误差太大,太短则能量不足导致接收不到。声音的速度与温度和当地的空气密度有关,最好以实测值为宜,否则可能导致较大的误差。 T/R40 超声波探头(40KHz本征频率)超声波发射和接收的硬件电路1.2 超声测距仪的硬件电路1.2.1回流信号放大电路采用电路来实现测距仪功能的主要困难在于,回波小信号的检测。由于在接收探头的压电晶体两端产生的回波电信号极其微弱,在uV量级,因此要进行高增益的放大,然后才能进行有效的检测。在这里,我们采用了三个NPN型8050三极管的共射极交流耦合组态进行三级放大。在两级的级连处采用了0.1uF的电容进行交流耦合,集电极接至5V电源以提供集电结的反偏电压,基极接在两个串联50K电阻上,以获得直流工作点(2.5V)。放大之后的信号由上图中的SIGNAL端输出。单极直流电流增益:单级直流电压增益:交流电压增益要低于直流增益,经过实测,此电路的三级交流电压增益在30000左右,可将uV级的电压信号放大至十至百mV的量级。1.2.2 信号检波电路 经过回波信号放大电路,已经进入了数字芯片可以检测的范围,但此时的信号仍为频率信号,并不能直接为单片机所识别。因此还需要一个检波译码芯片,能够识别出40KHz的频率波并将其转化为数字电平信号。 LM567为一种典型的音频信号译码芯片,音频信号由其3脚引入。当此音频信号的频率与LM567的设置频率相同时,则其第8脚的输出电平由高变低。LM567的设置频率由5、6脚之间接上的可调电阻器的阻值进行调节。 可变电阻调节方法:将一个40KHz的频率源连接到LM567的3脚,将LM567的OUT端连接至电压表,然后调节5、6脚之间的电位器直到OUT端的电平变低。 至此,微弱的回波电信号在此已转化为LM567的OUT端输出的可被单片机识别的数字电平信号。1.3超声波测距程序设计 程序流程 源代码:/*/* 文件名; clock_c */* 程序描述:显示时钟 */*/系统包含的头文件#include #include /中断函数和子函数声明部分void _ADC_Interrupt(void); /ADC中断子程序void _KBD_Interrupt(void); /键盘中断子程序void _TOF_Interrupt(void); /定时器溢出中断子程序void _TCH1_Interrupt(void);/定时器通道1中断子程序void _TCH0_Interrupt(void);/定时器通道0中断子程序void _IRQ_Interrupt(void); /外部中断中断子程序void _Startup(void); /复位中断子程序/用户子程序定义void SYS_Init(void); /系统初始化子程序void pled(unsigned char k);/串行数据输出子程序void display(unsigned char dispchar,unsigned char n);/数码管显示子程序/宏定义#define CONFIG1_VAL 0x3D /用户配置config1寄存器的值#define CONFIG1_ADR 0xFDEA /CONFIG1_VAL存放的地址#define JMP_TAB_ADR 0xFDEB /用户中断向量起始地址#define JMP_Code 0xCC /跳转指令直接寻址方式的指令码typedef void (*tIntFunc)(void); /声明一个指向函数的数据类型typedef struct jumpEntry /声明一个结构体jumpEntry类型 unsigned char jmpIstr; tIntFunc intFunc; /定义一个tIntFunc类型的变量 JumpEntry; /CONFIG1_VAL存放到CONFIG1_ADR定义的地址中const unsigned char CONFIGX CONFIG1_ADR = CONFIG1_VAL;/定义各中断向量的中断入口const JumpEntry IntJmpTable JMP_TAB_ADR = /定义数组IntJmpTable,元素为JumpEntry类型 JMP_Code, _ADC_Interrupt, /AD转换中断矢量地址:$FDEB JMP_Code, _KBD_Interrupt, /键盘唤醒中断矢量地址:$FDEE JMP_Code, _TOF_Interrupt, /定时计数器溢出中断矢量地址:$FDF1 JMP_Code, _TCH1_Interrupt, /定时器通道1溢出中断矢量地址:$FDF4 JMP_Code, _TCH0_Interrupt, /定时器通道0溢出中断矢量地址: $FDF7 JMP_Code, _IRQ_Interrupt, /IRQ矢量地址: $FDFA JMP_Code, _Startup /复位矢量地址:$FDFD;/数码管显示编码 内容为:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,-,三const unsigned char sgcode20=0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0x40,0x49,0x66 ; unsigned char dspbf4=0x0d,0x0c,0x0d,0x0c; /存放待显示的数据/unsigned char mscnt; /定时器溢出计数位 int backtime; /定义一个全局变量,存储超声波传播时间Bool intflag=0; /定义一个全局变量,存储超声接收中断标志Bool intflag2=0; /定义一个全局变量,存储超声发射标志int temp;int temp1;/主程序开始void main(void) unsigned char i; unsigned char j; SYS_Init(); TSC_TSTOP=0;/允许开始计数 for(;) DisableInterrupts; /禁止所有的中断 if(intflag=0)/intflag标志是为了判断是否有超声波接收中断产生 /如果有接收中断产生,则将其置位,如果没有,则为0,此时数码管上显示dcdc dspbf0=0x0d; dspbf1=0x0c; dspbf2=0x0d; dspbf3=0x0c; for(i=0;i4;i+) display(dspbfi,i); /分别送去显示 for(i=0;i4;i+) display(dspbfi,i); /分别送去显示 intflag2=0; intflag=0; TSC_TOIE=0; /禁止计数中断 backtime=0; TSC_TOIE=1; for(i=0;i5;i+) /发射一个短脉冲40KHz PTA=0x12; /PTA1 和PTA4共同驱动超声波发射探头 为按位异或 _asm(nop); for(i=0;i10;i+) /发射完超声后,延时一小段时间禁止所有的接收中断,防止造成误接收 _asm(nop); /C语言中嵌入的空操作指令 EnableInterrupts; /开启所有的中断 intflag2=1;/超声波的发射标志,在超声波发射后置位,在接收后清0 for(j=0;j20;j+) /显示并等待较长的时间 等待接收回流中断并处理距离值 for(i=0;i4;i+) display(dspbfi,i); /分别送去显示 for(i=0;i4;i+) display(dspbfi,i); /分别送去显示 for(i=0;i4;i+) display(dspbfi,i); /分别送去显示 /*/* 文件名: 系统初始化子程序 */* 程序描述:包括config寄存器的设置、端口寄存器的设置、定时器寄存器的设置*/* 输入参数:无 */* 返回: 无 */*/void SYS_Init(void) CONFIG2=0x00; /使用内部晶振,关闭复位引脚 CONFIG1=0x3d; /禁止看门狗,禁止LVI模块 禁止LVI复位 /INTSCR=0x00; /A B口的初始化 DDRB=0xff; /PTB7,PTB6为输入,其余为输出 PTBPUE=0xc0; /PTB7,PTB6 设置上拉电阻 PTB=0xff; /置B口全为1 DDRA=0x12; /A口为输入方式 PTA1 PTA4为输出方式 PTA=0x02; /A口全为0/定时计数器的初始化 TSC=0x63; /设置允许定时器溢出中断,设置分频因子为32 n=t*f/p p为分频因子 TMOD=1;/设置预置寄存器值 定时器的内部晶振频率为3.2Mhz /TMOD=0.00001*3.2M/32=1 /键盘控制状态寄存器的初始化 KBSCR=0x00; /键盘状态和控制寄存器 允许键盘中断 下降沿触发 KBIER=0x04; /键盘中断控制寄存器 禁止键盘中断自动唤醒 设定PTA2为中断输入口 EnableInterrupts; / 开总中断 /*/*文件名:display函数 */*程序描述:在位置n上,显示数值dspchar */*调用子程序:传送数值的pled函数 */*输入参数:dspchar,n */* dspchar:段选信号,输入用户要显示的数据 */* n:位选信号, */*返回参数:无 */*/void display(unsigned char dspchar,unsigned char n) unsigned char i,j,k=1; for(j=0;j(n+2);j+) k*=2; pled(sgcodedspchar) ; /发送编码到LED PTB=0x00; PTB+=k; /位选 for(i=0;i25;i+) /延时 _asm(nop); PTB=0x00; /*/*文件名:pled函数 */*程序描述:8位并行输出串行移位编程,PTB1为时钟信号,将PTB0的输出并行输出 */*输入参数:需显示数值的编码k */*返回: 无 */*/void pled(unsigned char k) unsigned char i; PTB=0x00; /PTB口全部变成低电平 for(i=0;i8;i+) PTB_PTB1=0; /将PTB1变低,即时钟信号变低 if(k0x80) PTB_PTB0=1; /从高位开始发送,检查最高位是否为1,为0则PTB0=1,高位为1则默认为0 PTB_PTB1=1; /给出一个下降沿信号,移位信号 PTB=0x00;/准备处理下一位 k=1;/左移 /*/ /*/ /以下为中断函数,需要用到时,在相应的函数内编写即可interrupt void _ADC_Interrupt(void) interrupt void _KBD_Interrupt(void) if(intflag2=1) /如果超声波已发射 if(intflag=0)/如果在超声波发射后第一次接收到回波,为了防止杂散回波的干扰 intflag2=0; DisableInterrupts; / 接收到回波后 禁止所有中断 TSC_TOIE=0;/禁止定时溢出中断 temp=(float)(backtime)*1.89; backtime=0; /对backtime重新写值时必须禁止定时溢出中断的产生 TSC_TOIE=1; intflag2=0; intflag=1; /处理距离值并显示 temp1=temp/10; /距离值除以10之后赋给一个中间变量 dspbf0=temp/1000; /把千位存入第0个数码管显存中 dspbf2=temp1%10; /把十位存入第2个数码管显存中 temp1=temp/100; dspbf1=temp1%10; /把百
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中英语考试真题及解析汇编
- 2025年天津市北辰医院公开招聘高级专业技术人员2人笔试考试参考试题及答案解析
- 2025湖南中医药大学第二批招聘21人考试笔试参考题库附答案解析
- 2025四川自贡市第一人民医院安保人员招聘10人考试笔试备考试题及答案解析
- 电子元器件采购流程规范
- 建筑工程安全培训教材与考核标准
- 2026届安徽省合肥高升学校高一化学第一学期期中检测试题含解析
- 初中美术教学计划及重点内容
- 高新技术企业专项审计操作手册
- 定西筛网施工方案
- 机械用无缝碳钢管合金钢管的标准规范
- GB/T 120.2-2000内螺纹圆柱销淬硬钢和马氏体不锈钢
- 支气管哮喘诊疗指南
- 世界三大宗教课件
- 社区心理学课件
- 2022年石家庄市工会系统招聘考试笔试试题及答案解析
- 彤程化学装置水联运方案(草稿)
- 注塑模具验收标准
- 2009-2022历年上海市公务员考试《专业科目-政法》真题含答案2022-2023上岸必备汇编4
- 布袋除尘器技术协议
- 跨临界CO2制冷热泵系统简介
评论
0/150
提交评论