10汽车倒车雷达系统设计.docx
《10汽车倒车雷达系统设计.docx》由会员分享,可在线阅读,更多相关《10汽车倒车雷达系统设计.docx(19页珍藏版)》请在冰豆网上搜索。
![10汽车倒车雷达系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/7/20d5d74d-14e3-41fa-8282-91a30bf1b02e/20d5d74d-14e3-41fa-8282-91a30bf1b02e1.gif)
10汽车倒车雷达系统设计
明德学院
单片机原理及接口技术课程设计
院系:
明德学院机电系
年级:
专业:
班级:
学号:
姓名:
题目:
汽车倒车雷达
课程设计(论文)任务及评语
院(系):
明德学院机电系
学号
学生姓名
安红远
专业班级
机自11151
课程设计(论文)题目
汽车倒车雷达
课程设计(论文)任务
课题完成的功能、设计任务及要求、技术参数
实现功能
倒车雷达又称为泊车辅助系统,是车辆泊车时的安全辅助装置。
倒车雷达系统能够在泊车时以声音和指示图形或视频影像等方式向驾驶员反映车辆后方的环境状况,解除视觉死角中的潜在威胁,提高车辆泊车的安全性。
设计任务及要求
1、分析系统功能,选择单片机、传感器和功能模块;
2、设计系统的硬件电路图;
3、编写相应的软件,完成控制系统的控制要求;
4、上机调试、完善程序;
5、按学校规定格式,撰写、打印设计说明书一份;设计说明书应在4000字以上。
技术参数:
略
进度计划
1、布置任务,查阅资料,确定系统的组成(1天)
2、硬件设计(2天)
3、按系统的控制要求,完成软件设计(2天)
4、上机调试、修改程序(2天)
5、撰写、打印设计说明书(2天)
6、答辩(1天)
指导教师评语及成绩
平时:
论文质量:
答辩:
总成绩:
指导教师签字:
年月日
注:
成绩:
平常20%论文质量60%答辩20%以百分制计算
绪论
现现在随着人们生活水平的提高,汽车已成了人们出行的首选交通工具,据统计每一年我国乃至全世界的汽车数量都在大幅增加,这专门大程度上提高了人们的生活水平,增进了汽车产业的进展。
但另一方面,由此引发的交通事故也愈来愈频繁,专门是汽车倒车时由于其可视性不足造成的生命财产损失更严峻。
因此最近几年来研究汽车倒车雷达系统成了一大热点课题。
倒车雷达又称为停车辅助系统,是车辆停车时的平安辅助装置。
倒车雷达系统能够在停车时以声音和指示图形或视频影像等方式向驾驶员反映车辆后方的环境状况,解除视觉死角中的潜在要挟,提高车辆停车的平安性。
目前倒车雷达的应用十分普遍,绝大多数车辆都已经将倒车雷达作为必不可少的标准配件。
倒车雷达的运用可极大地减轻驾驶者的体力和脑力劳动强度,降低倒车难度,幸免因驾驶员因方向感不强或判定和操作失误而引发的事故,同时它将对最终实现无人驾驶产生踊跃的意义。
汽车倒车雷达是为了幸免汽车倒车进程中发生碰撞,设计一种基于单片机AT89C51的倒车雷达系统,介绍了超声波测距的大体原理,论述了系统的结构组成、硬件电路设计及软件设计。
倒车距离用LED数码管实时显示,为倒车的平安性,设计了报警电路,当测出汽车尾部距离障碍物的距离小于必然值时,系统会报警,提示司机注意平安。
体会证,该系统在10—500CM时具有很高的精度,且该系统结构简单,靠得住性极高,有效性也很强等优势。
目前倒车雷达系统大多采纳超声波测距原理,通过超声波测距装置测取车辆后方的障碍物距离,以此为依据来判定停车环境。
超声波测距具有能量消耗缓慢和传播距离远的优势,且不易受光线,烟雾和电磁等干扰的阻碍,能够再各类天气下利用。
而且利用超声波测距原理简单,易于实现,本钱低廉,靠得住性也好,因此普遍应用于各类倒车雷达中。
设计要求.................................................................................................................................6
一.设计内容及要求
设计题目
题目:
汽车倒车雷达
设计内容
设计一汽车雷达系统实现以下三个功能:
1.通过键盘操纵系统的发射;
2.显示障碍物离汽车的距离;
3.距离小于指定值时,系统报警。
设计要求
设计并制作简易汽车雷达系统,其中需要通过键盘操纵系统的进行发射,第二通过数码管显示障碍物离汽车的距离,再次依照显示距离,系统进行自我检测,假设距离小于指定值时,系统自动报警,假设距离大于指定值时,系统不报警,正常运转。
二.系统组成及工作原理分析
系统组成
汽车雷达系统要紧由超声波发生器,超声波接收器,单片机系统,数码管显示器和报警电路组成。
其组成框图如下:
2
图2—1系统组成
工作原理
超声波模块分机械方式和电气方式两类,它事实上是一种,在发射端它把电能或机械能转换成声能,接收端那么反之。
本次设计超声传感器采纳电气方式中的压电式超声波换能器,它是利用压电晶体的谐振来工作的。
它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,产生超声波。
发射器发出的超声波以速度v在空气中传播,在抵达被测物体时被反射返回,由接收器接收,其来回时刻为t.由公式:
测出的距离L(m)=常温下的声速340(m/s)×感应时刻t(s)/2,算出被测物体的距离。
通过单片机口操纵超声波的发射,同时打开按时器,按时器开始计时。
超声波接收器接收到信号通过放滤波后返回给单片机口,触发单片机外部中断0,通进程序掏出此刻按时器的数值即为超声波在空中的传输时刻。
其时序图如下:
图2—2工作时序图
硬件电路的设计要紧包括单片机系统及显示电路、超声波发射电路和超声波检测接收电
路三部份。
单片机采纳STC89C51或其兼容系列。
采纳12MHz高准确度的晶振,以取得较稳固时钟频率,减小测量误差。
单片机用端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。
显示电路:
通过四位数码管来显示当前测出的距离,能够精准到毫米。
为节省单片机宝贵的IO资源,显示电路共用P0口,因此应用锁存器来锁存数码管段选和位选数据,锁存器选用74HC573,因单片机P0口驱动电流较小,因此还要利用上拉电阻来提高其驱动能力,显示电路如以下图所示:
图3-1显示电路
复位电路:
报警电路:
图3-2复位电路图3-3报警电路
方案一
超声波发射电路原理如以下图所示。
输出端采纳两个反向器并联,用以提高驱动能力。
上位电阻R10、R11一方面能够提高反向器74LS04输出高电平的驱动能力,另一方面能够增加超声波换能器的阻尼成效,缩短其自由振荡时刻。
图3-3超声波发射电路
方案二
超声波发射电路:
电路原理如以下图所示:
其特点是40KHZ的方波要由单片机生成而且加入了发射电路的使能端,由操纵使能,如此能够有效降低干扰。
图3-4超声波发射电路
超声波接收电路:
其原理如以下图所示:
由于接收到的超声波信号十分微弱,且干扰专门大,因此接收电路要求专门大的放大倍数,且应有滤波电路。
从图可知超声波由接收头接收后先通过一级滤波,能够排除直流和低频干扰。
随后通过量级放大,其中每级放大电路又通过电容耦合,进一步排除干扰。
该电路还带有指示灯,假设接收到超声波回波后LED会点亮。
图3-5超声波接收电路
系统软件设计采纳模块化设计,要紧包括主程序设计、T0中断效劳子程序、外部中断效劳子程序、距离计算子程序、数码管显示子程序设计等。
其程序有以下两种方案:
方案一
该方案通过单片机口操纵超声波的发射,利用外部中断0来监视回波信号,当接收到回波信号时,进入中断程序并计算出车尾距障碍物的距离,再通过过数码管显示出来。
其流程图如下:
图4—1流程图1
方案二
该方案有两种测量模式可供选择,即自动测量和手动测量模式。
系统启动后先进行模式选择,长按进入自动测量,短按那么进入手动测量。
其流程图如下:
图4—2流程图2
方案比较:
上述两种方案的最大区别是第二种方案增加了自动测量方式,而第一种方案只有手动测量,即通过键盘来操纵超声波的发射。
因此第二种方案更具人性化,更方便操作,本次设计即采纳第二种方案。
在确信了电路、领好元器件以后,第一对电路进行了布局。
采取的方式是
分块焊接电路,即将超声波模块分解为发射部份和接收部份。
焊接完成后,下载程序至单片机进行调试,发觉有如下问题:
一、数码管不显示距离,通过调试后发觉程序不能进入中断程序;
二、经修改后,数码管能够显示距离,可是只能精准到厘米。
缘故是程序结构有问题,即发射超声波后未当即开启按时器;
3、程序增加手动和自动测量两种测量模式后,通过按键选择测量模式系统没有给出提示,不方便操作。
相应的解决方式如下:
一、修改调试程序使程序能正常进入中断;
二、从头调整程序结构,使其加倍精简;
3、硬件增加发光二极管,程序中加入相应的代码,利用户在选择模式后系统能给出提示,加倍人性化。
这是一次比较系统的电路设计,是一次将理论与实践相结合的实践。
其中包括了电路的设计,资料的查找,分析问题解决问题的能力,乃至仍是对焊接技术及审美观念的一个考验。
若是不能以一种认真的态度去面对这次实践,而只是简简单单的在书本当中寻觅到一个电路图,并将其简单的焊接起来。
那就失去了本次电子课设的意义了。
已经选择了电子信息工程这一个专业,那就没有任何的理由不去提高自己的动手能力了。
现在世界上的电子产品已不是单纯的硬件组成了,大部份都是由软硬件组成,软件负责系统的运行,硬件那么是组成电路的基础。
就如本次设计的汽车雷达系统,硬件电路要具有超声波的收发,显示,报警等功能,而软件那么将这些模块联系起来,从而组成一个完整的系统。
因此咱们要设计一个系统时,即便是个简单系统,咱们应该从整个设计动身,将其分解成各个功能模块,最后再将这些功能模块组合起来组成一个完整的系统,如此能够简化系统的设计。
因为任何电路的设计都不是只存在一个电路。
它是有各个小模块组成的,因此在电路的设计中就必需注意将电路模块化。
如此才能有针对性的将问题解决。
若是咱们不将电路模块化,而只是一个劲的将电路焊接好来。
只怕当咱们焊接完检查电路之时,咱们自己都不明白从何处下手。
同时,电路的焊接或多或少的存在一些问题,很少在焊接完成的时候,电路不存在任何的问题。
在碰到问题时们要做的是去分析问题解决问题,而不是气愤,抱怨。
参考文献
【1】张友德.单片机微机原理.上海:
复旦大学出版社,2006.
【2】蔡美琴.MCS-51系列单片机系统及其运用.北京:
高等教育出版社,2004.
【3】王质朴.MC5-51单片机原理及应用技术.北京:
北京理工大学出版社,2020.
【4】李全利.单片机接口技术.北京:
电子工业出本社,2005.
【5】李群芳.单片微型运算机与接口技术.北京:
高等教育出版社,2001.
附录一
元件清单
序号
元件
名称
元件
型号
数量
单位
备注
1
单片机
AT89C51
1
个
2
非门芯片
CD4069
1
个
3
放大器
LM324
1
个
4
芯片插槽
14脚插槽
2
个
5
红外线
发射探头
T
1
个
6
红外线
接受探头
R
1
个
7
发光二极管
红色LED
1
个
8
三极管
S8050
1
个
9
电容
1
只
10
电容
1
只
11
电容
100nf
1
只
12
电容
1nf
1
只
13
电阻
100K
3
只
14
电阻
10K
2
只
15
电阻
1K
3
只
16
电阻
100
3
只
附录三
#include<>
#defineucharunsignedchar
#defineuintunsignedint
#definealarmdistance120
inttime;
ucharsucceed_flag;
uchartimeL;
uchartimeH;
sbitTrig=P2^0;//输出口
sbitEcho=P3^2;//输入口
sbitdula=P2^6;//段选锁存信号
sbitwela=P2^7;//位选锁存信号
sbitdp=P0^7;//小数点
sbitkey=P3^7;//按键选择
sbitbeer=P2^3;//蜂鸣器
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0~9
uintdistance;
voiddelay(uintz)//延时程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddelay_20us()//维持发射端高电平20us
{
uchara;
for(a=0;a<100;a++);
}
voidalarm()//报警程序
{
beer=0;
P1=0x0f;
delay(100);
beer=1;
P1=0xf0;
delay(100);
}
voiddisplay(uinty)//四位一体数码管显示程序
{
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
P0=0x00;
dula=1;
P0=table[y/1000];
dp=1;
dula=0;
delay(3);
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
P0=0x00;
dula=1;
P0=table[y%1000/100];
dula=0;
delay(3);
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
P0=0x00;
dula=1;
P0=table[y%100/10];
dula=0;
delay(3);
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
P0=0x00;
dula=1;
P0=table[y%10];
dula=0;
delay
(1);
}
voidinit()//测距程序的初始化
{
Trig=1;
delay_20us();
Trig=0;
while(Echo==0);
succeed_flag=0;
EA=1;
EX0=1;
TH1=0;
TL1=0;
TF1=0;
TR1=1;
while(Echo==1);
}
voidautomes()//自动测量程序
{
while
(1)
{
init();
if(succeed_flag==1)
{
time=(timeH*256+timeL)*;
distance=time*;//毫米
}
if(succeed_flag==0)
{
distance=0;
}
display(distance);
if(distance}
}
voidmes()
{
init();
while
(1)
{
if(0==key)
{
init();
}
if(succeed_flag==1)
{
time=(timeH*256+timeL)*;
distance=time*;//毫米
display(distance);
}
if(succeed_flag==0)
{
distance=0;
}
if(distance}
}
voidkeyscan()
{
inti=3;
if(key==0)
{
delay(1500);
if(key==0)
{
while(i--)
{
P1=0xff;
delay(500);
P1=0x00;
delay(500);
}
automes();
}
else
{
P1=0xf0;
mes();
}
}
}
voidmain()
{
P1=0x00;
Trig=0;
EA=1;
TMOD=0x10;
while
(1)
{
keyscan();
}
}
voidexter(void)interrupt0
{
TR1=0;
EX0=0;
timeH=TH1;
timeL=TL1;
succeed_flag=1;
}