汽车电子超速报警系统.docx
- 文档编号:6521474
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:32
- 大小:715.80KB
汽车电子超速报警系统.docx
《汽车电子超速报警系统.docx》由会员分享,可在线阅读,更多相关《汽车电子超速报警系统.docx(32页珍藏版)》请在冰豆网上搜索。
汽车电子超速报警系统
目录
1绪论………………………………………………………………………………………2
2系统方案设计及工作原理………………………………………………………………3
2.1系统方案设计……………………………………………………………………
2.2工作原理…………………………………………………………………………
2.2.1MCS-51……………………………………………………………………
2.2.2lcd………………………………………………………………………
3硬件设计…………………………………………………………………………………
3.1protues仿真图……………………………………………………………………
3.1.1protues原理图…………………………………………………………
3.1.2protuesPCB图……………………………………………………………
4软件设计…………………………………………………………………………………
4.1软件流程图………………………………………………………………………
4.1.1主程序……………………………………………………………………
4.1.2自检程序…………………………………………………………………
4.1.3正常(中断)程序………………………………………………………
4.2程序清单…………………………………………………………………………
5调试结束…………………………………………………………………………………
5.1自检模式…………………………………………………………………………
5.2正常模式…………………………………………………………………………
5.3超速模式…………………………………………………………………………
6结论………………………………………………………………………………………
7参考文献…………………………………………………………………………………
8附录……………………………………………………………………………………
1绪论
随着汽车工业的不断进步,行驶在道路上的车辆越来越多,交通事故发生的频率也不断增加。
众所周知,交通事故的发生大部分是由驾驶员的超速驾驶造成的。
为提高汽车运行的安全性,减少交通事故的发生,本文讲述了一个由单片机控制的车速报警系统。
本文从驾驶员的角度出发,设计了一个检测车辆超速的报警系统。
该报警系统允许驾驶员通过自带键盘设置车辆安全行驶的最高速度,在车辆行驶过程中,该系统通过速度传感器时刻监测机动车辆,并通过LED显示车辆的实际车速和用户设置的安全参数。
当车辆速度超过驾驶员设置的最高速度时,蜂鸣器开始报警,警告灯不断闪烁,提醒驾驶员减速[1]。
此设计利用8051单片机对机动车超速行驶情况进行蜂鸣报警和灯光报警的。
该系统结构简单,可靠性高,操作方便,可广泛应用于摩托车、汽车等机动车辆。
该设计详细介绍了系统的总体设计方案,给出了界面模块与8051接口电路,系统硬件电路及外围设计电路,最后介绍了软件设计方法的程序流程图。
2系统方案设计及工作原理
2.1系统方案设计
为了获得较高的性能价格比,设计时不应盲目追求复杂高级的方案。
在满足性能指标的前提下,应尽可能采用简单的方案,因为方案简单意味着所用的元器件少,可靠性高,而且比较经济。
在车速报警系统的硬件和软件设计时,应当考虑操作方便,尽量降低对操作人员的专业知识的要求,以便产品的推广应用。
系统的输入—输出方式、操作程序应尽量简单明了,无须专门训练就能掌握其使用方法。
系统方案方框图
在protues中用方波发生器代替传感器,将输入的一定值的脉冲转换为对应的速度值,并在lcd上显示出来。
脉冲与速度的换算关系由程序决定。
程序设定,一秒时间内由计数器记到的脉冲个数v=f,v是汽车当前速度值,单位是km/h,f是方波信号的频率,单位为kHz[2]。
当速度在设置的正常速度范围内,在lcd上显示当前速度值,并显示正常状态“Normal”;当速度超过预定的值时,在lcd上显示当前速度值,并显示超速状态“Speeding”由蜂鸣器长鸣发出提示声,红LED灯闪烁提示超速。
2.2工作原理
2.2.1MCS-51
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
2.2.2LCD
LCD的横截面好像是很多层三明治叠在一起。
每面最外一层是透明的玻璃基体,玻璃基体中间就是薄膜电晶体。
颜色过滤器和液晶层可以显示出红、蓝和绿三种最基本的颜色。
通常,LCD后面都有照明灯以显示画面。
一般只要电流不变动,液晶都在非结晶状态。
这时液晶允许任何光线通过。
液晶层受到电压变化的影响后,液晶只允许一定数量的光线通过。
光线的反射角度按照液晶控制。
当液晶的供应电压变动时,液晶就会产生变形,因而光线的折射角度就会不同,从而产生色彩的变化。
一个完整的TFT显示屏由很多像素构成,每个像素象一个可以开关的晶体管。
这样就可以控制TFT显示屏的分辨率。
如果一台LCD的分辨率可以达到1024x768像素(SVGA),它就有那么多像素可以显示。
3硬件设计
3.1protues仿真图
3.1.1protues原理图
3.1.2PCB图
4软件设计
4.1程序流程图
4.1.1主程序
4.1.2自检程序
4.1.3正常(中断)程序
4.2程序清单
程序清单见附录
5调试结束
5.1自检模式
上电运行,自检模式开始,红LED灯和绿LED灯都亮,蜂鸣器长响,LCD显示欢迎界面“Life'sprecious!
”和“*SafeDriving!
*”,4.5秒后,自检模式完成,红LED灯和绿LED灯都灭,蜂鸣器灭,LCD不显示,再过3.5秒,系统开始正常工作。
自检模式
5.2正常模式
以方波信号产生的脉冲数模拟车速,当车速不高于120Km/h,系统处于正常模式,绿LED灯长亮,红LED灯灭,蜂鸣器不响,LCD显示当前速度“Speed:
112.5km/h”并显示当前状态是正常状态“Status:
Normal”。
正常速度
5.3超速模式
方波的频率增加,模拟的车速增加,当车速超过120km/h时,系统工作于超速模式,绿LED灯灭,蜂鸣器长响报警,红LED灯不断闪烁,红LED灯亮时,LCD显示当前速度“Speed:
124.7km/h”,并显示当前状态是超速状态“Status:
Speeding!
”;红LED灯灭时,LCD显示当前速度“138.2km/h”,并显示警告信息“WARNING!
!
”。
汽车超速行驶,系统通过红LED灯闪烁,扬声器长鸣报警,提醒司机减速行驶,注意安全。
超速状况
警告
6结论
系统上电后进行自检,自检模式完成后,系统开始正常工作。
车速不高于设定的最高车速时,系统工作于正常模式,显示当前车速;当车速高于设定的最高车速时,汽车工作于超速模式,红LED灯闪烁,蜂鸣器长鸣,起到报警的作用,提醒司机减速行驶。
该系统起到了显示当前车速,超速报警的功能,是一个成功的设计。
7参考文献
[1]周旭艳.彭宣戈.朱兵.8051在车辆超速报警系统中的应用.井冈山学院学报.2006.(02)
[2]吴有林.安玉.熊飞桥.吴先绪.智能化汽车速度控制报警系统的设计.重庆大学学报(自然科学版).2005年.(12).
部分内容来源于互联网
8附录
程序清单:
/**********************************************************
//文件名:
qichedianzi.c
//作者:
Evens
//日期:
2011-6-21
//文件描述:
模拟汽车测速
MCU:
使用AT89C52单片机,12MHz
***********************************************************/
/*****************************相关定义和声明***********************************/
#include
/******本段为硬件I/O口定义********/
sbitLCD_RS=P1^0;
sbitLCD_RW=P1^1;
sbitLCD_E=P1^2;
#defineLCD_DATAP2//LCDDATA
#defineLCD_BUSY0x80//用于检测LCD的BUSY标识(本程序中用的延时,未检测)
#defineucharunsignedchar
#defineuintunsignedint
//全局变量声明
uintspeed;
uchartest=1;//自检模式
ucharnormal=0;//正常模式
ucharnor_speed;//不超速
ucharexc_speed;//超速
ucharcnt_ovtime;//单位时间内计数器溢出次数
//
uintdatadis[5]={0x00,0x00,0x00,0x00,0x00};//存放速度个,十,百,还有小数点后一位,还有个中间变量
//函数声明
voidlcd_init(void);
voiddisplay_string(ucharx,uchary,uchar*s);
voiddisp_selec(ucharbit_selec,ucharseg);
voidinit_timer0();//初始化计数器T0
voidinit_timer1();//初始化定时器T1
/**********************************定义声明结束***********************************/
/*************************************相关函数************************************/
/**************************************************
**函数名:
delay_ms
**输入:
无
**输出:
无
**描述:
1ms延时,使用12MHz晶体
/*************************************************/
voiddelay_ms(uinti)
{
uintj;
while(i--)
{
for(j=0;j<125;j++);
}
}
/**************************************************
**函数名称:
dellay
**入口参数:
h(unsignedint型)
**出口参数:
无
**功能描述:
短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
voiddellay(uinth)
{
while(h--);//0.01MS
}
/***************************************************
**函数名:
cont_buzz_led
**输入:
灯和蜂鸣器的编码
**输出:
灯和蜂鸣器的状态
**描述:
控制灯和蜂鸣器的状态
****************************************************/
/*************************************相关函数结束**************************************/
/**************************************定时计数器设置************************************/
//初始化定时器T0
voidinit_timer0()//定时10毫秒
{
TMOD=0x51;//GATE0=0;C/T0#=0;M10=0;M00=1;
TH0=0xD8;//初始值
TL0=0xF0;
ET0=1;//允许T0中断
EA=1;//开总中断
TR0=1;//启动T0
}
//初始化定时器T1
voidinit_timer1()
{
TMOD=0x51;//GATE0=0;C/T0#=0;M10=0;M00=1;
TH1=0x00;//初始值
TL1=0x00;
ET1=1;//允许T1中断
EA=1;//开总中断
TR1=1;//启动T1
}
voidit_timer0()interrupt1//中断地址0x000b
{
ucharcounter;
TF0=0;
TH0=0xD8;//初始值,10ms中断一次
TL0=0xF0;
counter++;
if(counter==100)//中断100次就是1秒
{
speed=(TH1*256+TL1+65536*cnt_ovtime)/100;//提取脉冲数以KHz为单位,即相当于模拟一个速度
if(speed>=1200)//判断是否超速
{
exc_speed=1;//速度大于120,标志为超速
nor_speed=0;
}
else
{
nor_speed=1;
exc_speed=0;
}
TH1=TL1=0x00;//THx清0
counter=0;//中断次数清0
cnt_ovtime=0;
}
}
voidit_timer1()interrupt3//中断地址0x001b
{
TF1=0;//定时器T1用于单位时间内收到的脉冲数
cnt_ovtime++;
}
/**************************************定时计数器设置结束***********************************/
/***************************************LCD1602驱动程序**************************************/
/**************************************************
**函数名称:
WriteDataLcd
**入口参数:
wdata(unsignedchar型)
**出口参数:
无
**功能描述:
写数据到LCD
****************************************************/
voidWriteDataLcd(ucharwdata)
{
LCD_DATA=wdata;
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=1;
}
/**************************************************
**函数名称:
WriteCommandLcd
**入口参数:
wdata(unsignedchar型)
**出口参数:
无
**功能描述:
写命令到LCD
****************************************************/
voidWriteCommandLcd(ucharwdata)
{
LCD_DATA=wdata;
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
dellay(100);//短暂延时,代替检测忙状态
LCD_E=1;
}
//LCD初始化
voidlcd_init(void)
{
LCD_DATA=0;
WriteCommandLcd(0x38);
dellay(1000);
WriteCommandLcd(0x38);//显示模式设置
WriteCommandLcd(0x08);//关闭显示
WriteCommandLcd(0x01);//显示清屏
WriteCommandLcd(0x06);//显示光标移动设置
WriteCommandLcd(0x0c);//显示开及光标移动设置
}
/**************************************************
**函数名称:
display_xy
**入口参数:
x(unsignedchar型),y(unsignedchar型)
**出口参数:
无
**功能描述:
设置光标位置,x是列号,y是行号
****************************************************/
voiddisplay_xy(ucharx,uchary)
{
if(y==1)
x+=0x40;
x+=0x80;
WriteCommandLcd(x);
}
/********************************************************************
**函数名称:
display_char
**入口参数:
x(unsignedchar型),y(unsignedchar型),dat(unsignedchar型)
**出口参数:
无
**功能描述:
在具体位置显示单个字符,x是列号,y是行号
*********************************************************************/
voiddisplay_char(ucharx,uchary,uchardat)
{
display_xy(x,y);
WriteDataLcd(dat);
}
/*********************************************************************
**函数名称:
display_string
**入口参数:
x(unsignedchar型),y(unsignedchar型),s(指针型)
**出口参数:
无
**功能描述:
在具体位置显示字符串,以/0结束,x是列号,y是行号
**********************************************************************/
voiddisplay_string(ucharx,uchary,uchar*s)
{
display_xy(x,y);
while(*s)
{
WriteDataLcd(*s);
s++;
}
}
/**************************************LCD1602程序结束********************************************/
/*******************************************主程序*************************************************/
voidmain()
{
lcd_init();//初始化LCD
init_timer0();//初始化定时器,计数器
init_timer1();
if(test)//检试模式
{
P3|=0x07;//绿灯亮,红灯亮,蜂鸣器响
display_string(0,0,"Life'sprecious!
");
display_string(0,1,"*SafeDriving!
*");
delay_ms(2000);//延时
P3&=~0x07;//绿灯灭,红灯灭,蜂鸣器灭
lcd_init();//初始化LCD
test=0;
normal=1;
delay_ms(2000);
}
if(normal)//正常模式
{
while
(1)
{
if(nor_speed)//不超速
{
P3|=0x01;//绿灯亮
P3&=~0x06;//红灯灭,蜂鸣器灭
display_string(0,0,"Speed:
");
dis[3]=speed/1000;//百位
dis[4]=speed%1000;
dis[2]=dis[4]/100;//十位
dis[4]=dis[4]%100;
dis[1]=dis[4]/10;//个位
dis[0]=dis[4]%10;//小数点后一位
if(dis[3]!
=0)//如果百位为0,屏蔽
{
display_char(6,0,dis[3]+0x30);
}
else
{
display_char(6,0,0xA0);
}
display_char(7,0,dis[2]+0x30);
display_char(8,0,dis[1]+0x30);
display_char(10,0,dis[0]+0x30);
display_string(9,0,".");//显示小数点
display_string(11,0,"km/h");//显示速度单位
display_string(0,1,"Status:
Normal");
}
if(exc_speed)//超速
{
display_string(0,0,"Speed:
");//显示速度值
dis[3]=speed/1000;//百位
dis[4]=speed%1000;
dis[2]=dis[4]/100;//十位
dis[4]=dis[4]%100;
dis[1]=dis[4]/10;//个位
dis[0]=dis[4]%10;//小数点后一位
if(dis[3]!
=0)//如果百位为0,屏蔽
{
display_char(6,0,dis[3]+0x30);
}
else
{
display_char(6,0,0xA0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 电子 超速 报警 系统