ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:23.66KB ,
资源ID:4432034      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4432034.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(超声波测距仪液晶屏加报警设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

超声波测距仪液晶屏加报警设计报告.docx

1、超声波测距仪液晶屏加报警设计报告.超声波测距仪设计报告一、 设计要求1、提供 2cm400cm的非接触式距离测量功能,测距精度达到 3mm。2、测量结果通过液晶屏实时显示。3、当测量距离小于 20cm时,进行声音和灯光报警。二、 超声波测距原理测量距离的方法有很多种,短距离的可以用米尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为 331.45 米 / 秒,由单片机负责计时,系统的测量精度理论上可以达到毫米级。超声波测距的原理一般采用渡越时间法 TOF( time of flight ),也可以称为回波探测法, 如图 1 所示。超声波发射器向某

2、一方向发射超声波,在发射时刻的同时开始计时,超声波在介质中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。根据传声介质的不同,可分为液介式、气介式和固介式三种。根据所用探头的工作方式,又可分为自发自收单探头方式和一发一收双探头方式。而倒车雷达一般是装在车尾,超声波在空气中传播,超声波在空气中(20 ) 的传播速度为 340m/s( 实际速度为 344m/s 这里取整数 ) ,根据计时器记录的时间就可以计算出发射点距障碍物的距离,公式 S 340* t / 2 。图 1 超声波测距原理. . .由于超声波也是一种声波, 其声速 c 与温度有关,表 1 列出了几种不同温度下

3、的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。表 1声速与温度的关系温度() 30 20 100102030100声速 (m/s)313319325323338344349386三、 硬件系统设计1、设计框图本研究设计的超声波测距仪框图如图 2 所示。US-100超声波收发模块模拟电压信号STC89C52 单片机触发电路中断接收计算距离LCD 距离显示声光报警图 2 超声波测距仪方框图2、US-100 超声波收发模块该超声波收发模块可自己产生 40kHz 的方波,并经放大电路驱动超声波发射探头发射超声波, 发射出去的超声波经

4、障碍物反射后由超声波接收探头接收。 经接收电路的检波放大,积分整形,在 ECHO引脚上产生方波脉冲,该脉冲宽度与被测距离成线性关系。具体过程如图 3 所示。. . .图 3 US-100 超声波收发模块工作时序图上图表明:只需要在 Trig/TX 管脚输入一个 10us 以上的高电平,系统便可发出 8 个 40KHZ的超声波脉冲, 然后检测回波信号, 当检测到回波信号后, 模块还要进行温度值的测量, 然后根据当前温度对测距结果进行校正, 将校正后的结果通过 Echo/RX 管脚输出。在此模式下,模块将距离值转化为 340m/s 时的时间值的 2 倍,通过 Echo端输出一个高电平, 可根据此高

5、电平的持续时间来计算距离值。 即距离值为:(高电平时间 *340m/s)/2注:因为距离值已经经过温度校正, 此时无需再根据环境温度对超声波声速进行校正,也就是不管温度多少,声速选择 340m/s 即可。使用 US-100 超声波收发模块进行距离测量测量时,单片机只需要输出触发信号,并监视回响引脚,通过定时器计算回响信号宽度,并换算成距离即可。该模块简化了发送和接收的模拟电路,工作稳定可靠,其参数指标如表 2 所示。. . .表 2 US-100 模块电气参数应注意测量周期必须在 60 毫秒以上,防止发射信号对回响信号的影响。图 4 US-100 超声波模块外形图模块共有两个接口,即模式选择跳

6、线和 5pin 接口。 模式选择跳线接口设置为当安装上短路帽时为 UART(串口)模式,拔掉时为电平触发模式。3、单片机电路本设计选用宏晶公司高性能单片机 STC89C52,其管脚如图 5 所示。. . .图 5 STC89C52 单片机管脚图该芯片为 52 内核 8 位单片机,兼容 Intel 等 52 内核单片机,支持 ISP 下载,适用于常用检测控制电路。由 STC89C52组成的单片机系统原理图如图 6 所示。图中 TRIG引脚为单片机发送触发信号的引脚, ECHO引脚为 US-100模块送回回响信号的引脚,接至单片机外部中断 P3.2 脚上,可以利用外部中断测量回响信号宽度。当测量距

7、离小于阈值 20cm时,单片机通过管脚 P3.6 发出灯光报警信号, 触发 LED报警灯亮,同时通过管脚 P3.7 发出声音报警信号 beep,该信号用以触发蜂鸣器鸣响报警。. . .图 6 单片机系统及超声波模块接口原理图4、蜂鸣器报警电路图 7 所示为蜂鸣器报警电路。 由于单片机管脚的灌电流比拉电流容量大, 因此电路设计为低电平输出时蜂鸣器响,高电平关闭。当 P3.7 脚输出低电平时,. . .PNP型三极管 8550 导通,有集电极电流通过,蜂鸣器鸣响。当 P3.7 脚输出高电平时,三极管截止,蜂鸣器关闭。图 7 蜂鸣器报警电路5、显示电路显示部分采用 SMC 1602液晶屏进行数据显示

8、,其主要技术参数为:表 3 液晶屏技术指标接口信号说明如表 4 所示。表 4 液晶屏接口信号说明与单片机接口电路如图 8 所示。. . .图 8 LCD 与单片机接口电路6、供电及程序下载电路本设计采用 USB接口供电,电源电压 5V。同时, USB接口通过内含 PL2303芯片的转换电路对单片机进行程序编写。其电路原理如图 9 所示。图 9 供电及程序下载电路四、 软件编程1、软件流程图本设计软件主程序流程图如图 10 所示, (a) 为主程序流程图, (b) 为定时中断子程序流程图, (c) 为外部中断子程序流程图。. . .数据初始化定时器初始化显示初始化进入后台 while 循环超声波

9、测量触发无有回波否?有外部中断子程序计算距离并显示距离小于 否20cm否?是声光报警延时 60ms外部中断入口读取定时器当前值置测量成功标志返回(a) 主程序流程图 (b) 外部中断流程图图 10 程序流程图2、主程序下面介绍 main.c 主程序编写,其他程序略。(1)头文件和一些宏定义/*/* 超声波测距仪 */*( 液晶屏显示 )*/* 晶振 11.0592MHz*/#include #include 1602.htypedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8 位整型 */typ

10、edef signed char S8; /* defined for signed 8-bits integer variable 有符号 8位整型 */. . .typedef unsigned intU16; /* 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 unsigne

11、d 32-bits integer variable无符号 32 位整型 */typedef signed longS32; /* 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

12、 的定时值为 1mS,即 11059/12=922个时钟脉冲,其补为 65536-922=64614#define SYSTEMCLK 921600/11059200/12#define T0CLK921600/11059200/12#define T1CLK921600/11059200/12#define T1PERIOD1000000/921600 /T1周期时间,以微秒为单位,约为1.085uS#define TIMER0H0xFC/64614/256=252#define TIMER0L0x66/54447%256=102(2)管脚、常量、变量定义和函数声明/ 管脚定义sbit Tr

13、ig = 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()

14、;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;/

15、启动模块, 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! );

16、/延时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; / 关闭外部中

17、断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;elseLedAlarm = 1;Beep = 1;. . .if (Fla

18、gDisplay = 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、显示程序/* 文件名 : 液晶 1602 显示 .c*描述 :该程序实现了对液晶 1602 的控制。*/#include 1602.h#include ma

19、th.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

20、) & 0x01;Out_Date |= (temp (7 - i);return Out_Date;*/return In_Date;/*名称 : enable(uchar del)*功能 : 1602 命令函数*输入 : 输入的命令值*输出: 无*/void enable(uchar del)P0 = Convert(del);RS=0;RW=0;E=0;delay();E=1;delay();/*名称 : write(uchar del)*功能 : 1602 写数据函数. . .*输入 : 需要写入 1602 的数据*输出: 无*/void write(uchar del)P0 = Co

21、nvert(del);RS=1;RW=0;E=0;delay();E=1;delay();/* 名称 : L1602_init()* 功能 : 1602 初始化,请参考 1602 的资料*输入: 无*输出: 无*/void L1602_init(void)enable(0x01);enable(0x38);enable(0x0c);enable(0x06);enable(0xd0);/* 名称 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示 b ,调用该函数如下L1602_char(1,5,b)* 输入 : 行,列,需要输入 1602 的数据*输出: 无*/ void L1602_char(uchar hang,uchar lie,char sign) uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;enable(a);. . .writ

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1