当前位置:文档之家› 基于单片机的汽车防撞报警系统资料

基于单片机的汽车防撞报警系统资料

科技开放与实践创新项目结题验收报告项目名称:基于单片机的汽车防撞报警系统指导老师:项目组员:参赛学院:电子与信息工程学院日期:2014/12/17目录第一部分系统方案···································1.1 功能模块的比较与选择1.1.1 单片机的比较选择1.1.2 超声波测距法的论证与选择1.1.3 显示器的选择1.1.4 蓝牙模块的选择1.2 方案描述第二部分理论分析及计算··································2.1 超声波传感器的分析与计算2.3 蓝牙通信模块的分析处理第三部分电路及程序设计······························· 3. 1系统总体框图3. 1.1 各模块原理图及电路3.2 各模块程序设计第四部分测试方案与测试结果·······························4.1 硬件测试4.2 软件测试4.3 测试结果第五部分总结·······························附录1:电路原理图附录2:源程序摘要本设计是以STC90C51 单片机配合HC-06 蓝牙模块控制的汽车防撞报警系统。

该装置将单片机的实时控制及数据处理功能与超声波的测距技术相结合,通过蓝牙模块控制小车的运行状态并检测汽车运行中与前方障碍物的距离,通过LCD显示装置显示距离,由蜂鸣器根据距离远近发出警告声。

关键词:STC90C51 、蓝牙、超声波传感器测距、报警、LCD一、系统方案本系统主要由超声波检测模块、蓝牙模块、LED显示模块、电源模块、声光报警模块(蜂鸣器、LED),下面分别论证这几个模块的选择。

1.1 比较与选择1.1.1 单片机的比较选择单片机芯片选型时,总的原则是:(1)芯片含有功能或数量略大于设计需求,设计需求尽可能用芯片完成,少用外围器件。

(2)技术性:要从单片机的技术指标角度,对单片机芯片进行选择,以保证单片机应用系统在一定的技术指标下可靠运行;(3)实用性:要从单片机的供货渠道、信誉程序等角度,对单片机的生产厂家进行选择以保证单片机应用系统在能长期、可靠运行;(4)可开发性:选用的单片机要有可靠的可以开发手段,如程序开发工具、仿真调试手段等。

STC90C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

STC90C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。

1.1.2 超声波测距法的论证与选择方案一:强度法是利用声波在空气中的传输损耗值来测量被测物的距离,被测物越远其反射信号越弱,根据反射信号的强弱就可以知道被测物的远近,但在使用这种方法时由于换能器之间的直接耦合信号很难消除,在放大器增益较高时这一直接耦合信号就使放大器饱和从而使整套系统失效,由于直接耦合信号的影响强度法测距只使用与较短距离的且精度要求不高的场合。

方案二:往返时间检测法其原理是超声波传感器发射一定频率的超声波借助空气媒介传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间。

往返时间与超声波传播的路程的远近有关。

根据测试传输时间可以得出距离。

这种方法不受声波强度的影响,直接耦合信号的影响也可以通过设置“时间门”来加以克服,因此这种方法非常适合较远距离的测距,在精度的要求较高的情况下,需要考虑温度对超声波的传播速度的影响。

按式v=331.4+0.607T(T为实际温度单位为摄氏度,v为超声波在介质中的传播速度,单位为m/s)对超声波传播速度加以修正,以减小误差。

因此,本设计中采用第二种方法,即往返时间检测法。

1.1.3 显示器的选择方案一:使用多个数码管显示。

LED数码管是利用二极管发光显示数字和字母,具有亮度大,接口设计业比较容易,价格相对较便宜等优点。

但是由于它工作时电流较大,显示的信息量有限。

方案二:采用液晶显示。

液晶特别是具有字符显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息,信息量丰富且直观易懂。

而且液晶显示功耗低,体积小。

综上考虑,本设计采用方案二。

1.1.4 蓝牙模块的选择本模块分主机和从机,主机能和从机配对通信,从机与从机之间或主机与主机之间不能通信,从机能和电脑、手机等的蓝牙配对通信,购买时默认为从机。

我们在做智能小车控制时,蓝牙模块主要是实现接收从手机端发送过来的指令,所以我们需要的是从机模块。

蓝牙串口在模块功能上,偶数命名的互相兼容,从机命名的也互相兼容,也就是说,HC-04与HC-06,HC-03与HC-05在功能上是兼容的。

HC-04与HC-06是比较早的版本,用户不可以自己切换主机或者从机,AT指令集很少,包括修改蓝牙名(限于从机),修改密码,修改波特率,询问版本号等几个基本功能。

在本次设计中我们只需实现简单的通信,因此选用HC-06模块。

HC-06模块只记忆最后一次配对过的从机,并只与该从机配对,直到KEY(26脚)高电平触发时放弃记忆,26脚默认应该为低电平。

1.2 方案描述通过查找资料进行方案论证和选择,可以确定出该系统的整体构成。

本设计是以STC90c51单片机为核心,以设置手机界面来设置前进、后退、左转、右转、停止等功能。

单片机控制电机驱动来控制电机的正反转以实现小车的前进、后退、左转、右转、停止。

HC-06为蓝牙接收模块,通过与手机端的蓝牙进行连接配对,从而接收从手机端发送过来的动作指令。

接收到的指令再传递给单片机,单片机通过分析传递过来的指令不同,而跳转到不同的子程序来控制电机驱动,从而实现小车的前进、后退、左转、右转、停止等不同的动作。

电源提供给单片机5V直流电,L298需要从外部接两个电压,一个是给电机的,另一个给L298芯片的。

汽车防撞装置可在任何天气、任何车速状态下探测出将要发生的危险情况并及时提醒司机及早采取措施或自动紧急制动,避免严重事故发生。

汽车防撞装置是借助于检测测技术监视汽车前方和后方的车辆、障碍物,并根据当时的距离自动判断是否达到危险距离,及时向司机发出警告。

二、理论分析及计算2.1 超声波传感器的分析与计算假设S 为被测物体到测距仪之间的距离,测的时间为t,超声波传播的速度为v 表示。

则有关系式: S=v*(t/2)在精度的要求较高的情况下,需要考虑温度对超声波传播速度的影响,按式v=331.4+0.607T 对超声波传播速度加以修正,以减少误差。

式中T 为实际温度单位摄氏度,v 为超声波在介质中的传播速度,单位为m/s一些温度下的声速 温度 -30 -20 -10 0 10 20 30 声速3133193223313373443502.2 蓝牙通信模块的分析处理(1)原理 既然使用手机蓝牙控制,那小车上必须要有一个蓝牙模块与手机蓝牙通信。

在这里选用了HC06蓝牙转串口模块。

HC06蓝牙转串口模块的作用是将从手机蓝牙发送过来的指令接收到后转换成串口的形式通过单片机的串口传给单片机。

只需将该模块的RXD 接上51单片机的TXD 引脚,TXD 接51的RXD,然后接单片机的VCC 供电,因为我们只用它接收手机蓝牙信号,不发送数据。

它出厂默认设置的波特率9600 ,不重新设置它的波特率的话,在写单片机串口程序时,也要将波特率设置为9600。

三、电路及程序设计3. 1系统总体框图3. 1.1 各模块原理图及电路 a.超声波传感器 超声波传感器时序图STC90C51块超声波监测模块超声波超声波传感 器液晶屏显模块 报警模块蜂鸣器LE D蓝牙模块小车超声波传感器原理图超声波发射电路超声波接受电路 b.L298N电机驱动模块c.LCDd.蜂鸣器E.蓝牙模块接线方式调试过程蓝牙模块应用电路3.2 程序设计主程序流程图YNNYNY Y开始系统初始化启动T1定时65秒,开T1中断 T1定时器65ms 定时到进入T1中断服务子程序计时发 射超声波脉冲 回波接收成功 关总中断允许EA调用距离计算子程序 距离小于预设值 调用扬声器报警子程序 调用子程序显示距离并延时清回波接收成功标志位 T0溢出 调用子程序a.超声波传感器//启动超声波测量void Start_HCSR04(){//生成20us的脉冲宽度的触发信号Trig=1;delay_20us();Trig=0;//等待回响信号变高电平while(!Echo);TR0=1; //启动定时器0//等待回响信号变低电平While(Echo);TR0=0; //关闭定时器0}b.Lcd1602//检查LCD忙状态bit LCD_Busy_Check(){bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;Delay4us();result=(bit)(P0&0x80);LCD_EN=0;return result;}//写数据void Write_data(uchar dat){while(LCD_Busy_Check());LCD_RS=1;LCD_RW=0;P0=dat;delay_ms(5);LCD_EN=1;delay_ms(5);LCD_EN=0;}//写指令void Write_cmd(uchar cmd){while(LCD_Busy_Check());LCD_RS=0;LCD_RW=0;P0=cmd;delay_ms(5);LCD_EN=1;delay_ms(5);LCD_EN=0;}//1602液晶初始化void LCD_Initialize(){Write_cmd(0x38); //三次显示模式设置delay_ms(5);Write_cmd(0x38);delay_ms(5);Write_cmd(0x38);delay_ms(5);Write_cmd(0x38); //显示模式设置Write_cmd(0x08); //关闭显示Write_cmd(0x01); //显示清屏Write_cmd(0x06); //显示光标移动设置Write_cmd(0x0F); //显示开及光标设置}//按指定位置显示一个字符:X=列位置(0-15) Y=行位置(0,1) void Write_position(uchar X, uchar Y,uchar DData){Y &= 0x1; //限制Y不能大于1(2行,0-1)X &= 0xF; //限制X不能大于15(16个字符,0-15)if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码Write_cmd(X); //发命令字Write_data(DData); //发数据}//按指定位置显示一串字符void Write_str(uchar X, uchar Y, uchar code *DData){uchar ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>0x19){ //若到达字串尾则退出if (X <= 0xF){ //X坐标应小于0xFWrite_position(X, Y, DData[ListLength]); //显示单个字符ListLength++;X++;}}}c.电机驱动//小车启动时初始化void Car_Init(){//暂时处于停车待机状态EN_A = 1;EN_B = 1;Moto_LA = 0;Moto_LB = 0;Moto_RA = 0;Moto_RB = 0;}//停止void stop(){Moto_RA=0;Moto_RB=0;Moto_LA=0;Moto_LB=0;}//前进void ahead(){Moto_LA = 1;Moto_LB = 0;Moto_RA = 1;Moto_RB = 0;}//后退void back(){Moto_LA = 0;Moto_LB = 1;Moto_RA = 0;Moto_RB = 1;}//左转void left(){Moto_LA = 0;Moto_LB = 1;Moto_RA = 1;Moto_RB = 0;}//右转void right(){Moto_LA = 1;Moto_LB = 0;Moto_RA = 0;Moto_RB = 1;}d.蓝牙模块//数据接受处理if (flag1 == 1){ES = 0;//关闭串口if (a == 0x00){ahead();}if (a == 0x01){back();}if (a == 0x02){left();}if (a == 0x03){right();}if (a == 0x04){stop();}flag1 = 0;//清除标志位ES = 1;//打开串口中断}//设置串口中断的工作方式void communication() interrupt 4{RI = 0;//取消本次串口的响应a = SBUF;//接受缓冲区的数据flag1 = 1;//标记位}//初始化子程序void timer0_init(){TMOD=0x21; //设定时器0定时TH0=0;TL0=0;ET0=1;TH1 = 0xfd;//对定时器赋值,高8位与低低8位相同TL1 = 0xfd;//波特率设为9600TR1 = 1;//打开定时器1SM0 = 0;//设置串口的工作方式1SM1 = 1;REN = 1;//允许串口EA = 1;//开总中断ES = 1;//打开串口中断}四、测试方案与测试结果4.1 硬件测试第一步,通电观察。

相关主题