东北大学测控单片机程序设计课程设计报告超声波倒车雷达.docx
- 文档编号:10218410
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:30
- 大小:306.25KB
东北大学测控单片机程序设计课程设计报告超声波倒车雷达.docx
《东北大学测控单片机程序设计课程设计报告超声波倒车雷达.docx》由会员分享,可在线阅读,更多相关《东北大学测控单片机程序设计课程设计报告超声波倒车雷达.docx(30页珍藏版)》请在冰点文库上搜索。
东北大学测控单片机程序设计课程设计报告超声波倒车雷达
基于单片机实现的超声波倒车雷达
姓名:
学号:
班级:
专业名称:
测控技术与仪器
指导教师:
东北大学
年月
课程设计(论文)任务书
课程设计(论文)题目:
超声波倒车雷达
基本内容和设计要求:
采用LCD12864液晶屏,屏幕上显示制作人以及与障碍物之间的距离,当小于危险距离的时候会显示“超出测量距离”;
采用HC-SR04进行超声波发射与接收,根据发送的超声波与接收到的超声波时间差计算距离;
针对距离远近进行报警,利用蜂鸣器S8550在距离小于预设(危险)距离时进行报警,距离越近,蜂鸣器响声频率越高;
使用伟福仿真器代替单片机,在进行仿真操作时能更清楚的观察到程序运行的数据,较之以前单片机的盲调有很好的改善,在运行复杂程序是能快速找出出现的问题,提高工作效率。
目录
课程设计(论文)任务书ii
摘要5
第1章绪论6
1.1倒车雷达简介6
1.2设计主要内容6
第2章系统硬件设计7
2.1硬件组成7
2.2HC-SR04超声波发射接收模块7
2.2.1工作原理:
7
2.2.2主要技术参数:
7
2.2.3HC-SR04使用注意事项:
8
2.3LCD12864液晶模块8
2.3.1硬件准备9
2.3.2液晶连接9
2.3.3接线说明9
2.3.4实验现象9
2.3.5实用注意事项10
2.4蜂鸣器S8550模块10
第3章系统软件设计11
3.1主程序11
3.2计算距离信息子程序12
3.3蜂鸣器报警子程序13
3.4计时器T0中断子程序13
3.5LCD12864显示子程序14
第4章调试测试与实验分析15
4.1倒车雷达测试15
参考文献16
心得体会17
附录硬件原理图18
附录程序清单19
附录实物照片26
摘要
在现代汽车被人们广泛使用,汽车设计越来越完善,安全性能也愈发重要。
在路况复杂的情况下,倒车对驾驶员的操作有着极大的考验,而倒车雷达可以在驾驶员不方便观察倒车情况时提供安全预警,避免危险发生。
该装置采用伟福仿真器与传感器,液晶显示屏,蜂鸣器组合,自动化程度高,通过液晶屏显示与警铃报警,在整个系统当中,液晶显示屏采用了LCD12864,其功能满足静态动态显示的要求并且显示效果稳定,分辨率可调,并且该器件在软件设计上相对简单,是该系统的首选显示器件。
在显示软件设计方面,采用行写入提高固定信息行的信息写入,距离动态显示行采用字写入,快速高效,显示的刷新率高,可以实现距离的动态实时显示,行写入与字写入相见使用,提升了显示效率,使距离等信息的显示更加快捷。
在测距方面,采用了超声模块HC-SR04,在精度要求不高的模型当中的应用中,该模块表现出色,模块上嵌入有滤波系统,可以有效的滤出超声接收端的杂波干扰,并且该超声模块的测量范围最近的盲区为2cm,最远盲区为4m,测量范围适用于本课设中,另一个显著的优点为该超声模块为5V工作电源,其功率很低,并且在使用上,其软件部分的编程相对简单,简单实用。
在硬件连接方面,该模块只有4根线需要连接,其中工作用线只有2根,连线简单,连上即可使用,非常方便,所以在测距方面选择了该模块作为超声测距模块。
报警方面,采用蜂鸣器S8550模块,该模块结构简单,体积小,发声效果优秀,驱动简单,只需要连接一根线,写入高电平即发音,可通过高电平和低电平持续时间比来调整音调与响度,无论是硬件连接、软件设计还是工作原理都简单易行,因此采用该模块。
整体上,该系统使用便捷,同时集成程度高,体积小,安装方便,可以为倒车提供优良的距离显示和报警信息,为驾驶员带来最好的驾驶体验。
为安全出行提供保障。
关键词:
倒车雷达,伟福仿真器,LCD12864,HC-SR04,S8550
第1章绪论
1.1倒车雷达简介
倒车雷达是一种集超声波发射、接收,距离监测、危险警报于一体,实现车辆倒车时提示与后方障碍物距离的安全辅助装置装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员驻车、倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,与传统汽车在倒车时通过后视镜观察相比具有更高的便捷性和安全性,且具有更好的实用性,解决了倒车难的问题,因此在汽车开发、仪器仪表中得到了广泛的使用。
1.2设计主要内容
在本次倒车雷达的设计当中,主要应用超声波模块测距,蜂鸣器报警和LCD液晶显示屏实时展现雷达距离障碍物的具体距离,并可以实现设定阈值报警,并且距离越近报警频率越高这样一种功能。
超声模块部分的思路为使用HC-SR04收发一体模块发射一列超声波并完成接收,仿真器通过计时器T0来记录从发射到接收的时间T,也就是超声波传输的总时间,然后仿真器通过软件由计算公式S=T*340/2得到距离信息。
显示部分,将距离信息送到LCD12864中,通过液晶屏幕来显示距离信息,在这里主要设计在于分开编写,我们设计的思路为第一行、第二行和最后一行为固定区域,就是屏幕在这些区域显示的内容是固定的,在第三行处,我们将其设定为实时显示,也就是将距离信息放在第二行中显示,具体的设计方法见后面的屏幕显示部分,同时在编写程序的时候预设定一个阈值,这个值可以在程序中对应处修改,也可以使用宏定义进行整体一键修改,或者可以使用输入语句,与键盘开关等输入性的硬件联合使用达到用户个人定义报警阈值,
蜂鸣器部分,距离信息将同时用作与阈值进行比较,当低于阈值时,通过S8550模块触发蜂鸣器,并且这一过程将实时比较,不断对比,距离越近,蜂鸣器的响声间隔时间越短,实现越近响声越急促的目的。
而这一过程的实现主要是通过控制蜂鸣器的发生频率实现的,所谓的蜂鸣器的响度,与其一次响声的时间有关,时间越长,音调越高,另一部分蜂鸣器的响动频率主要与蜂鸣器两次响声的时间间隔有关,间隔时间越短,蜂鸣器的响动频率越急促,通过这两个原理来改变蜂鸣器的音调和响度。
第2章系统硬件设计
2.1硬件组成
硬件以伟福仿真器为核心,外部扩展HC-SR04芯片模块实现超声测距功能,LCD12864模块实现数字显示功能,S8550芯片模块实现警报功能。
基本硬件结构图如图2.1所示。
图2.1倒车雷达基本硬件结构图
2.2HC-SR04超声波发射接收模块
考虑实用性及设计指标要求,本课程设计所用HC-SR04超声波发射接收模块电路图如图2.2所示。
2.2.1工作原理:
1)本模块性能稳定,测度距离精确,模块高精度,盲区小;
2)发射系统采用IO口TRIG触发测距,给至少10us的高电平信号;
3)模块自动发送8个40khz的方波,自动检测是否有信号返回;
4)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*声速(340M/S))/2;
2.2.2主要技术参数:
1)使用电压:
DC---5V
2)静态电流:
小于2mA
3)电平输出:
高5V
4)电平输出:
底0V
5)感应角度:
不大于15度
6)探测距离:
2cm-450cm
7)高精度可达0.2cm
图2.2HC-SR04超声波收发模块电路图
2.2.3HC-SR04使用注意事项:
1)此模块不宜带电连接,如果要带电连接,则先让模块的Gnd端先连接。
否则会影响模块工作。
2)测距时,被测物体的面积不少于0.5平方米且要尽量平整。
否则会影响测试结果。
2.3LCD12864液晶模块
距离显示采用LCD液晶模块,电路图如2.3所示。
图2.3LCD12864液晶模块电路图
2.3.1硬件准备
1)2P杜邦线2根
2)8P杜邦线1根
3)LCD12864液晶1个
2.3.2液晶连接
将LCD12864液晶插到底板LCD12864液晶插座上,注意液晶方向,LCD12864液晶的1脚插到底板液晶接口的1脚,LCD12864的20脚插到底板液晶接口的20脚。
2.3.3接线说明
用1根8P杜邦线将单片机P1口与底板JP41排针相连,用2根2P杜邦线将单片机P34~P37口与底板JP36相连。
单片机P1口与底板JP41排针相连分别为:
P10-D0,P11-D1,P12-D2,P13-D3,P14-D4,P15-D5,P16-D6,P17-D7;单片机P34~P37口与底板JP36相连分别为:
P34-RS,P35-RW,P36-EN,P37-CS1,CS2悬空。
跳线说明:
无
2.3.4实验现象
在液晶上显示5行包含字符和汉字的信息。
第一行:
"测量距离:
"
第二行:
":
cm"
第三行:
"康乃元王怀森"
第四行:
"欢迎使用"
第五行:
"超出测量范围"
2.3.5实用注意事项
①LCD12864的第一行第三行和第四行内容为固定,所以在这三行的内容采用数组方式输出。
而第二行为实时显示,因此在第二行的输出编程上,与其他行有所不同,这一行的编写我们选择为逐个显示,不采用数组形式的整体显示。
②第五行的用途为替换第四行,也就是在后面的程序触发最近的距离,进入盲区时,将会用这一行的内容替换第四行的内容,提醒使用者使用的距离已经不再测量范围内,需要调整探测器到障碍物的距离。
2.4蜂鸣器S8550模块
蜂鸣器使用单片机上集成的蜂鸣器S8550,,电路图如图2.3所示。
图2.4蜂鸣器S8550模块电路图
第3章系统软件设计
3.1主程序
主程序框图如图3.1所示
图3.1主程序框图
主程序中实现单片机的初始化,包括计时器T0和T1的初始化以及对各函数的调用,利用超声模块收到回声为基准进行计时计算距离信息,该主程序中共使用了2个中断函数和计算、显示两个子程序的调用。
其各个模块的端口分布见表3.1。
表3.1外部设备地址分配
外部模块名称
地址
LCD12864
P3-4、P3-5、P3-6、P3-7
S8550
P2-0
3.2计算距离信息子程序
测距并计算子程序如图3.2
图3.2计算距离信息子程序
3.3蜂鸣器报警子程序
采用给定的S8550模块驱动蜂鸣器做报警系统,并通过延时程序对针对不同的距离发出不同的警告音,距离越近,声音越急促。
报警子程序框图如图3.3.
图3.3蜂鸣器报警程序
3.4计时器T0中断子程序
计时器T0用作测量回波时长,当距离过远,T0在计时到最大值仍然没有收到回波,即超出测量范围时,对溢出标志位flag进行置1,改变显示内容为“————————”。
其子程序见图3.4
图3.4计时器T0中断子程序
3.5LCD12864显示子程序
LCD12864显示程序首先需要进行第一行、第三行、第四行所要输出的固定字符进行初始化,在这些行中,使用数组的格式进行初始化,显示过程通过使用行扫描的方式进行整体显示,过程分为两部分,选定行地址,选择对应的输出内容数组,另一部分为第二行距离的显示,在这一部分中,采用逐字进行,前三位距离信息,确定首地址之后使用三个字的输入,光标是自动向后移动的,三个字的内容会根据距离的改变实时变化,达到距离实时显示的目的。
其程序如图3.5
图3.5计时器T1中断子程序
第4章调试测试与实验分析
4.1倒车雷达测试
第一次调试结果显示,倒车雷达的显示屏处的显示距离处为乱码,但是可以看到的一点是乱码是在跳动,这说明随着距离的改变,实时显示的子程序并没有问题,而是显示的内容处出现问题,经过一下午的调试之后发现是在形参传递时错误的将常亮信息当做地址信息传递,也就是将距离信息看做一个地址,里面的东西当然就是乱码的,并且发现的第二个问题就是进制的问题,通过测距公式得到的距离信息为十进制三位数,而将这个数据直接送到显示处的问题就是,我们的距离是按照每一位进行显示的,而三位数是没办法在一位上显示,针对这个问题,我们将得到的数据利用求余预算将其分开三位,并且将每一位转换成对应的二进制形式输出,这样显示的问题就解决了。
在后来的调试中,虽然不算大问题,但是也需要进行处理,就是报警器的响度不够,在确定原来的音调和音频的控制原理没有问题之后,我们对延时程序处进行了修改,减短了两个发声的间隔时间,并在整体上加上了一个比较大的循环,这样得到的效果就是非常响亮的音调,并且每次距离达到改变频率的阈值处,蜂鸣器频率的改变都非常令人满意。
在之后的调试当中,主要测试了程序运行的平稳性,多次运行的结果在每个方面都表现的很完美,没有出现任何偏差,测距的速度也都非常的快,显示屏也不会因为响动频率过高而产生画面抖动。
所以最后得到的结果是非常令人满意的。
参考文献
[1]张谦琳.超声波检测原理和方法[M].北京:
中国科技大学出版社,1993.10.
[2]何希才.传感器技术及应用[M].北京:
北京航空航天大学出版社,2005
[3]张毅刚.新编MCS-51单片机应用设计[M].哈尔滨工业大学,2016.1
心得体会
附录硬件原理图
硬件原理图
PCB图
附录程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedinttime=0;
unsignedinttimer=0;
unsignedlongS=0;
//超声模块管脚定义
sbitEcho=P0^1;//回波引脚
sbitTrig=P0^2;//产生脉冲引脚
sbitBEEP=P2^0;//喇叭
//显示函数管脚定义
sbitLCD12864_RS=P3^4;//RS控制引脚
sbitLCD12864_RW=P3^5;//RW控制引脚
sbitLCD12864_EN=P3^6;//EN控制引脚
sbitLCD12864_PSB=P3^7;//CS1模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口
#defineLCDPORTP1//数据引脚
unsignedcharcodeucStr1[]="测量距离:
";//显示信息1
unsignedcharcodeucStr2[]="cm";//显示信息2
unsignedcharcodeucStr3[]="康乃元王怀森";//显示信息3
unsignedcharcodeucStr4[]="欢迎使用";//显示信息4
unsignedcharcodeucStr5[]="超出测量距离";//显示信息5
long*k;
//****************************函数声明******************************
voidbeep(void);
voidconversion(uinttemp_data);
voiddelay_20us();
voidCount(void);
voidDelayms
(unsignedinttime);
//==============================================================
//显示函数声明
voidLCD12864_Init(void);//LCD12864初始化函数
voidLCD12864_WriteInfomation(unsignedcharucData,bitbComOrData);//向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令
voidLCD12864_CheckBusy(void);//忙检测函数
voidLCD12864_DisplayOneLine(unsignedcharucPos,unsignedchar*ucStr);//向LCD12864写入一行文字
voidDelay(unsignedintuiCount);
//==============================================================
voidmain(void)//主程序
{
inta,b,c,i=0;
Trig=0;//首先拉低脉冲输入引脚
TMOD=0x11;//设T0为方式1,GATE=1;
//===================显示部分==============================
LCD12864_Init();//初始化液晶
LCD12864_DisplayOneLine(0x80,ucStr1);//显示信息1
LCD12864_DisplayOneLine(0x90,ucStr2);//显示信息2
LCD12864_DisplayOneLine(0x88,ucStr3);//显示信息3
LCD12864_DisplayOneLine(0x98,ucStr4);//显示信息4
//===================显示部分结束=============================
ET0=1;//打开定时器0中断=
TR0=1;//打开计时器0
EA=1;//打开总中断0
while
(1)
{
TH1=0x48;
TL1=0x64;
TR1=1;
Trig=1;
delay_20us();
Trig=0;//产生一个20us的脉冲,在Trig引脚
while(!
Echo);//等待Echo回波引脚变高电平
TR1=0;
EX0=1;//打开外部中断
TR0=1;//启动定时器0
while(Echo);//等待测量的结果
TR0=0;//关闭定时器0
EX0=0;//关闭外部中断
Count();//计算
a=S/100+0x30;
b=S%100/10+0x30;
c=S%100%10+0x30;
LCD12864_WriteInfomation(0x93,0);
LCD12864_WriteInfomation(a,1);
LCD12864_WriteInfomation(b,1);
LCD12864_WriteInfomation(c,1);
}
}
//========================可变延时程序==========================
voidDelayms(unsignedinttime)//延时时间为1ms
{
unsignedintx,y;
for(y=0;y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 测控 单片机 程序设计 课程设计 报告 超声波 倒车 雷达