

免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京信息工程大学遥控遥测技术课程论文题 目:基于单片机的超声波测距系统的设计 学生姓名: * 学 号: 2009* 学 院: *专 业: *指导教师: *2012 年 05 月20 日1 摘要:超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。本设计详细介绍了超声波传感器的原理和特性,分析了超声波测距的原理的基础上,指出了设计测距系统的思路和所需考虑的问题,给出了以stc89c52单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。该系统电路设计合理、工作稳定、性能良好、检测速度快、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。关键词:超声波 单片机 测距 stc89c52abstractultrasonic wave has strong pointing to nature ,slowly energy consumption ,propagating distance farther ,so, in utilizing the scheme of distance finding that sensor technology and automatic control technology combine together ,ultrasonic wave finds range to use the most general one at present ,it applies to guard against theft , move backward the radar , water level measuring , building construction site and some industrial scenes extensively。this subject has introduced principle and characteristic of the ultrasonic sensor in detail ,on the basis of analyzing principle that ultrasonic wave finds range ,the systematic thinking and questions needed to consider that have pointed out that designs and finds range ,provide low cost , the hardware circuit of high accuracy , ultrasonic range finder of miniature digital display and software design method taking stc89c52 as the core ,this circuit of system is reasonable in design, working stability, performance good measuring speeding soon , calculating simple , apt to accomplish real-time control ,and can reach industrys practical demand in measuring the precision 。key words: ultrasonic wave; one-chip computer; range finding; stc89c521 引言:测量距离的方法有很多种,短距离的可以用米尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,系统的测量精度理论上可以达到毫米级。2系统设计方案2.1超声波测距的原理超声波测距的原理一般采用渡越时间法tof(timeofflight),也可以称为回波探测法,如图所示。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在介质中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。根据传声介质的不同,可分为液介式、气介式和固介式三种。根据所用探头的工作方式,又可分为自发自收单探头方式和一发一收双探头方式。而倒车雷达一般是装在车尾,超声波在空气中传播,超声波在空气中(20)的传播速度为340m/s(实际速度为344m/s这里取整数),根据计时器记录的时间就可以计算出发射点距障碍物的距离,公式。图1 超声波测距原理由于超声波也是一种声波,其声速c与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。表1 声速与温度的关系温度()3020100102030100声速(m/s)3133193253233383443493862.2设计框图本研究设计的超声波测距仪框图如图所示。超声波测距仪方框图2.3 us-100超声波收发模块该超声波收发模块可自己产生40khz的方波,并经放大电路驱动超声波发射探头发射超声波,发射出去的超声波经障碍物反射后由超声波接收探头接收。经接收电路的检波放大,积分整形,在echo引脚上产生方波脉冲,该脉冲宽度与被测距离成线性关系。具体过程如图3所示。us-100超声波收发模块工作时序图上图表明:只需要在trig/tx管脚输入一个10us以上的高电平,系统便可发出8个40khz的超声波脉冲,然后检测回波信号,当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过echo/rx管脚输出。在此模式下,模块将距离值转化为340m/s时的时间值的2倍,通过echo端输出一个高电平,可根据此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2注:因为距离值已经经过温度校正,此时无需再根据环境温度对超声波声速进行校正,也就是不管温度多少,声速选择340m/s即可。使用us-100超声波收发模块进行距离测量测量时,单片机只需要输出触发信号,并监视回响引脚,通过定时器计算回响信号宽度,并换算成距离即可。该模块简化了发送和接收的模拟电路,工作稳定可靠,其参数指标如表2所示。表2 us-100模块电气参数应注意测量周期必须在60毫秒以上,防止发射信号对回响信号的影响。us-100超声波模块外形图2.4 单片机电路本设计选用单片机stc89c52,其管脚如图所示。stc89c52单片机管脚图该芯片为52内核8位单片机,兼容intel等52内核单片机,支持isp下载,适用于常用检测控制电路。由stc89c52组成的单片机系统原理图如图6所示。图中trig引脚为单片机发送触发信号的引脚,echo引脚为us-100模块送回回响信号的引脚,接至单片机外部中断p3.2脚上,可以利用外部中断测量回响信号宽度。当测量距离小于阈值20cm时,单片机通过管脚p3.6发出灯光报警信号,触发led报警灯亮,同时通过管脚p3.7发出声音报警信号beep,该信号用以触发蜂鸣器鸣响报警。 图6 单片机系统及超声波模块接口原理图2.5 蜂鸣器报警电路图7所示为蜂鸣器报警电路。由于单片机管脚的灌电流比拉电流容量大,因此电路设计为低电平输出时蜂鸣器响,高电平关闭。当p3.7脚输出低电平时,pnp型三极管8550导通,有集电极电流通过,蜂鸣器鸣响。当p3.7脚输出高电平时,三极管截止,蜂鸣器关闭。图7 蜂鸣器报警电路5 显示电路显示部分采用smc 1602液晶屏进行数据显示,其主要技术参数为:表3 液晶屏技术指标接口信号说明如表4所示。表4 液晶屏接口信号说明与单片机接口电路如图8所示。图8 lcd与单片机接口电路6 供电及程序下载电路本设计采用usb接口供电,电源电压5v。同时,usb接口通过内含pl2303芯片的转换电路对单片机进行程序编写。其电路原理如图9所示。图9 供电及程序下载电路3 软件编程3.1软件流程图本设计软件主程序流程图如图10所示, (a)为主程序流程图,(b)为定时中断子程序流程图,(c)为外部中断子程序流程图。 (a) 主程序流程图 (b) 外部中断流程图图10 程序流程图3.2主程序 (1) 头文件和一些宏定义/*/*超声波测距仪*/*(液晶屏显示)*/*晶振 11.0592mhz*/#include #include 1602.htypedef unsigned char u8; /* defined for unsigned 8-bits integer variable无符号8位整型*/typedef signed char s8; /* defined for signed 8-bits integer variable有符号8位整型*/typedef unsigned int u16; /* defined for unsigned 16-bits integer variable无符号16位整型*/typedef signed int s16; /* defined for signed 16-bits integer variable有符号16位整型*/typedef unsigned long u32; /* defined for unsigned 32-bits integer variable无符号32位整型*/typedef signed long s32; /* defined for signed 32-bits integer variable 有符号32位整型*/typedef float f32; /* single precision floating point variable (32bits)单精度浮点数32位长度*/typedef double f64; /* double precision floating point variable (64bits)双精度浮点数64位*/定时器0的定时值为1ms,即11059/12=922个时钟脉冲,其补为65536-922=64614#define systemclk 921600 /11059200/12#define t0clk 921600 /11059200/12#define t1clk 921600 /11059200/12#define t1period 1000000/921600 /t1周期时间,以微秒为单位,约为1.085us#define timer0h 0xfc /64614/256=252#define timer0l 0x66 /54447%256=102(2) 管脚、常量、变量定义和函数声明/管脚定义sbit trig = p13;sbit echo = p32; /回波必须接在外部中断引脚上sbit ledalarm = p36; /报警灯,低电平亮sbit beep = p37; /报警蜂鸣器/定义标志volatile bit flagsucceed = 0; /测量成功标志volatile bit flagdisplay = 0; /显示标志/定义全局变量u16 displaycount=0;u16 time=0;u32 distance=0;/函数声明void delay_20us();void start_module();void int0_init(void);void data_init();void timer0_init();void timer1_init(); (3) 各子程序/20us延时程序,不一定很准void delay_20us() u16 bt ; for(bt=0;bt= 1000) /1秒钟显示一次 flagdisplay = 1;displaycount = 0; /定时器1初始化,16位计数模式,时钟为11059200/12=921600hz/60ms计数为55296,即0xd800void timer1_init()tmod = 0x11; /定时器0和1工作在16位方式th1 =0;tl1= 0;et1 = 1;/启动模块,trig管脚20us正脉冲void start_module() /启动模块 trig=1; /启动一次模块 delay_20us(); trig=0;/* 名称 : main()* 功能 : 主函数*/void main() u16 i, j; ea = 0; int0_init();timer0_init(); /定时器0初始化timer1_init(); /定时器1初始化 data_init();ea = 1;l1602_init();l1602_string(1,1,welcome to my );l1602_string(2,1,distance meter! );/延时for (i=0;i1000;i+) for (j=0;j1000;j+) ;while(1) ea= 0; /以下为一次检测过程:先发出trig电平,打开外部中断,清零t1,/最后在外部中断下降沿触发时取出t1当前值,计算出trig脉冲宽度。 start_module(); while(echo=0); /等待echo回波引脚变高电平flagsucceed = 0;ex0=1;th1= 0;tl1= 0;tf1= 0; tr1=1; /启动定时器1开始计数ea = 1;while (th180) ; /盲区tr1 = 0 ; /关闭定时器1ex0 = 0; /关闭外部中断 if(flagsucceed=1) /一次测试成功,则计算距离,单位为厘米 distance = time * 1.085 ; /计算得到脉冲时间(以微秒为单位) /将微秒时间转变成厘米距离的算法: y米=(x秒*344)/2 / x秒=( 2*y米)/344 =x秒=0.0058*y米 =厘米=微秒/58 distance /=58; /如果距离小于20cm,则声光报警 if (flagsucceed = 1) & (distance 20) ledalarm = 0; beep = 0; else ledalarm = 1; beep = 1; if (flagdisplay = 1) /1秒显示时间到 if(flagsucceed=0) /lcd提示无回波 l1602_string(1,1,outofrange(0-4m); l1602_string(2,1, - ); else /lcd显示数据 l1602_string(1,1,distance result:); l1602_string(2,1, cm ); l1602_int(2, 5, distance ); flagdisplay = 0;3.3显示程序/* 文件名 : 液晶1602显示.c* 描述 : 该程序实现了对液晶1602的控制。*/#include 1602.h#include math.h/* 名称 : delay()* 功能 : 延时,延时时间大概为140us。* 输入 : 无* 输出 : 无*/void delay()int i,j;for(i=0; i=10; i+)for(j=0; j=2; j+);/* 名称 : convert(uchar in_date)* 功能 : 因为电路设计时,p0.0-p0.7接法刚好与资料中的相反,所以设计该函数。* 输入 : 1602资料上的值* 输出 : 送到1602的值*/uchar convert(uchar in_date) /* uchar i, out_date = 0, temp = 0; for(i=0; i i) & 0x01; out_date |= (temp = 0) sign = 0; else sign = 1; temp = abs(num); baiwei = temp / 100; temp = temp - baiwei*100; shiwei = temp / 10; gewei = temp - shiwei*10; num = abs(num); if (num=100) if (sign = 1) /负数 l1602_char(hang, lie, -); l1602_char(hang, lie+1, baiwei+48); l1602_char(hang, lie+2, shiwei+48); l1602_char(hang, lie+3, gewei+48); else if (num=10) if (sign = 1) l1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025【合同范本】短期临时劳动合同样本
- 2025民宿短期租赁合同范本
- 2025家具采购合同范本
- 2025委托设计合同协议书
- 2024年青海省联合职工大学辅导员考试真题
- 2024年贵州护理职业技术学院辅导员考试真题
- 2024年渤海船舶职业学院 辅导员考试真题
- 江西省九江市2025届高三第三次高考模拟统一考试数学试题
- 石大学前卫生学试卷(二)及参考答案
- 广西幼师学前专业儿童文学教案09儿童故事
- 连接器基础知识培训
- 黑龙江省哈尔滨市道外区2024年小升初语文综合练习卷含答案
- 制冷行业的法律法规与安全生产标准
- 宫腔镜专家指南理论知识考试试题及答案
- 工作量化方案
- 富士康公司组织架构及部门职责样本
- 《火车发展史》课件
- (完整word版)班干部测评表
- 广东挖掘机拆除施工方案
- 乙烯基鳞片胶泥施工方案
- 剖宫产术后肠梗阻护理查房
评论
0/150
提交评论