超声波测距应用倒车雷达设计.docx

上传人:b****1 文档编号:3276675 上传时间:2023-05-05 格式:DOCX 页数:16 大小:471.18KB
下载 相关 举报
超声波测距应用倒车雷达设计.docx_第1页
第1页 / 共16页
超声波测距应用倒车雷达设计.docx_第2页
第2页 / 共16页
超声波测距应用倒车雷达设计.docx_第3页
第3页 / 共16页
超声波测距应用倒车雷达设计.docx_第4页
第4页 / 共16页
超声波测距应用倒车雷达设计.docx_第5页
第5页 / 共16页
超声波测距应用倒车雷达设计.docx_第6页
第6页 / 共16页
超声波测距应用倒车雷达设计.docx_第7页
第7页 / 共16页
超声波测距应用倒车雷达设计.docx_第8页
第8页 / 共16页
超声波测距应用倒车雷达设计.docx_第9页
第9页 / 共16页
超声波测距应用倒车雷达设计.docx_第10页
第10页 / 共16页
超声波测距应用倒车雷达设计.docx_第11页
第11页 / 共16页
超声波测距应用倒车雷达设计.docx_第12页
第12页 / 共16页
超声波测距应用倒车雷达设计.docx_第13页
第13页 / 共16页
超声波测距应用倒车雷达设计.docx_第14页
第14页 / 共16页
超声波测距应用倒车雷达设计.docx_第15页
第15页 / 共16页
超声波测距应用倒车雷达设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

超声波测距应用倒车雷达设计.docx

《超声波测距应用倒车雷达设计.docx》由会员分享,可在线阅读,更多相关《超声波测距应用倒车雷达设计.docx(16页珍藏版)》请在冰点文库上搜索。

超声波测距应用倒车雷达设计.docx

超声波测距应用倒车雷达设计

腾飞科技文化项目

课题报告表

课题名称基于单片机的倒车雷达系统设计

课题类别___单片机类____________

负责人默念(614)学号2

指导老师陈老师

所在学校湖南铁道职业技术学院

联系电话

结题日期2012、10、12

单片机的倒车雷达系统设计

****湖南铁道职业技术学院自动化专业****

指导教师陈新喜

摘要:

单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的使用到我们生活的各个领域,电子、科技、通信、汽车、工业等。

本设计是基于单片机的倒车雷达系统设计,该系统由超声波传感器、控制器和显示器等部分组成。

能以直观的显示告知驾驶员周围障碍物的情况,提高驾驶的安全性。

关键词:

倒车雷达系统单片机提高驾驶安全和乐趣

一、引言

倒车雷达,是汽车泊车或者倒车时的安全辅助装置,由超声波传感器、控制器和显示器等部分组成。

能以声音或直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车、倒车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶员扫除了视野死角和视线模糊的缺陷,提高驾驶的安全性。

二、总体设计

根据功能和指标要求,本系统选用STC89C52单片机为主控机。

通过扩展必要的外围接口电路,实现对计算器的设计。

具体设计如下:

2.1由于设计的是倒车雷达,需要用超声波测距模块做为传感器,用单片机来控制,数码管来显示。

考虑到精度问题,选用三位数码管。

2.2本设计制作的只是一个模型,故在实际使用中可能有些不足,比如本设计中测距精度1mm,量程999mm,即只有将近4米的距离,显然在实际使用中不能只有这么远,但只需将超声波测距模块更换为功率稍大的型号就可以了。

2.3执行过程:

开机即显示车后保险杠和障碍物距离,若距离大于量程则数码管显示为000,若在量程之内则实时显示距离。

2.4预警功能:

若距离过小比如200mm则红灯亮,警示障碍物和车后部距离过小,不可再倒车,否则会有安全事故。

2.5系统模块图:

 

图1系统方案图

三、硬件详细设计

3.1单片机型号的选择:

单片机选择的是STC89C52单片机,它是一种低功效、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

在单芯片上拥有灵巧的8位CPU和在线系统可编程Flash,

具有以下标准功能:

8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器串口、中断继续工作。

掉电保护方式下RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

而且,它还具有一个看门狗(WDT)定时/计数器。

如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。

STC89C52

有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中端口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

(1)Vcc:

供电电压。

(2)GND:

接地。

(3)P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在Flash编程时,P0口作为原码输入口,当Flash进行校验时,P0输出原码,此时P0外部必须被拉高。

图2单片机引脚图

(4)P1口:

P1口是一个内部提供的上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故,。

在Flash编程和校验时,P1作为第八位地址接收。

(5)P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在Flash编程和校验时接收高八位地址信号和控制信号。

(6)P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89S52的一些特殊功能口,如下表所示:

P3口功能引脚简介

P3口引脚第二功能

P3.0RXD(串行口输入)

P3.1TXD(串行口输出)

P3.2INT0(外部中断0输入)

P3.3INT1(外部中断1输入)

P3.4T0(定时器0外部脉冲输入)

P3.5T1(定时器1外部脉冲输入)

P3.6WR(外部数据存储器写脉冲输出)

P3.7RD(外部数据存储器读脉冲输出)

(7)RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

(8)ALE/RPOG:

当访问外部存储器时,地址锁存允许的输出电平由于锁存地址的地位字节。

在Flash编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6.因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳出一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0.此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。

另外该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

(9)/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

(10)/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在Flash编程期间,此引脚也用于施加12V编程电源(VPP)。

(11)XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

(12)XTAL2:

来自反向振荡器的输出。

3.2超声波模块插座电路图

3.3报警电路

报警器

电源接口及电源指示灯

3.4复位电路

复位电路采用了单片机的复位端,采用按钮电平复位电路,这样设计可以简化软件的量,使程序更加简洁化。

3.5总电路图

4.2软件设计源代码

#include

#defineucharunsignedchar

#defineuintunsignedint

voidsend_byte(unsignedchar);

voidtime_init();

voidDisplayLength(unsignedlong);

voiddelay(uchar);

voidwrite_dat(uchar);

voidwrite_com(uchar);

voidinit();

sbitSPK=P2^0;//定义喇叭端口

sbitled0=P1^0;//接收指示灯

sbitled1=P1^1;//发送指示灯

sbitRS=P2^1;

sbitRW=P2^2;

sbitEN=P2^3;

ucharfrq;

uchardispbuf[4]="";//显示缓冲区

ucharidatarevbuf[2];//收缓接冲区

unsignedlongLength=0;

uchartable[]="-----0000-----";

ucharnum[]="0123456789";

voidrev_data(void)interrupt4//数据接受

{

uchartemp,k;

ES=0;//关中断

if(RI)

{

RI=0;//清接收标志

temp=SBUF;

revbuf[k]=temp;

k++;

if(k==2)//k=数据长度

k=0;

led0=~led0;

}

ES=1;//开中

}

voidsend_byte(unsignedchardat)//向串口发送一个字符

{

TI=0;//清发送标志

SBUF=dat;//如果TI为0等待

led1=0;

while(!

TI);//waituntilsent

led1=1;

}

voidtime_init()

{

TH1=0xFD;

TL1=0xFD;//设置T1波特率9600

TMOD=0x21;//设置定时器1为模式2;定时器0为模式1

TH0=(65536-2500)/256;//约2.50MS定时器初值

TL0=(65536-2500)%256;//约2.50MS定时器初值

ET0=1;//T0允许位

TR0=1;//启动定时器

TR1=1;//启动定时器

SM0=0;//串口通信模式设置方式一

SM1=1;

REN=1;//串口允许接收数据

ES=1;//开串中断

EA=1;//开总中断

}

voidtimer0()interrupt1//定时器0中断是1号定时器0中断,用做显示

{

TH0=(65536-2500)%256;//约2.50MS定时器初值

TL0=(65536-2500)%256;//约2.50MS定时器初值

send_byte(0x55);

delay(250);

Length=revbuf[0]*256+revbuf[1];

DisplayLength(Length);

}

voidDisplayLength(unsignedlongnumber)

{

if(number>4500)//如果大于4.5米,显示"-"

{

SPK=1;

dispbuf[0]='-';//显示"-"

dispbuf[1]='-';//显示"-"

dispbuf[2]='-';//显示"-"

dispbuf[3]='-';//显示"-"

}

if(number<4500)

{

SPK=1;

dispbuf[0]=num[number/1000];

dispbuf[1]=num[number%1000/100];

dispbuf[2]=num[number%100/10];

dispbuf[3]=num[number%10];

if(200>number)

{

SPK=!

SPK;

}

}

}

voiddelay(uchart)

{

while(t--);

}

voidwrite_com(ucharcom)

{

RS=0;

RW=0;

delay

(1);

P0=com;

delay

(1);

EN=1;

delay

(1);

EN=0;

RS=1;

}

voidinit()

{

EN=0;

write_com(0x38);//设置显示位数

delay

(1);

write_com(0x0c);//设置光标开关

delay

(1);

write_com(0x06);//写一个加一

delay

(1);

write_com(0x01);

}

voidwrite_dat(uchardat)

{

RS=1;

RW=0;

delay

(1);

P0=dat;

delay

(1);

EN=1;

delay

(1);

EN=0;

RS=0;

}

voidmain()

{

uchari,j;

init();

time_init();

write_com(0x80);

delay(200);

for(i=0;i<16;i++)

{

write_dat(table[i]);

delay(200);

}

while

(1)

{

write_com(0x86);

for(j=0;j<4;j++)

{

write_dat(dispbuf[j]);

delay(50);

if(j==4)

j=0;

}

}

}

【感想和体会】

我们的题目是倒车雷达系统设计,对于我们这些实践中的新手来说,这是一次考验。

这次课程设计我们学到很多很多的东西,学会了怎么在遇到问题时去解决问题。

不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。

通过这次课程设计使我懂得了理论和实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次科研立项通过自身的努力终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,终于迎刃而解,在此我们表示感谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2