汽车电子超速报警系统.doc

上传人:本田雅阁 文档编号:2553831 上传时间:2019-04-07 格式:DOC 页数:26 大小:1.13MB
返回 下载 相关 举报
汽车电子超速报警系统.doc_第1页
第1页 / 共26页
汽车电子超速报警系统.doc_第2页
第2页 / 共26页
汽车电子超速报警系统.doc_第3页
第3页 / 共26页
汽车电子超速报警系统.doc_第4页
第4页 / 共26页
汽车电子超速报警系统.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《汽车电子超速报警系统.doc》由会员分享,可在线阅读,更多相关《汽车电子超速报警系统.doc(26页珍藏版)》请在三一文库上搜索。

1、目录1 绪论22 系统方案设计及工作原理32.1 系统方案设计 2.2 工作原理 2.2.1 MCS-512.2.2 lcd 3 硬件设计3.1 protues仿真图3.1.1 protues原理图 3.1.2 protuesPCB图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 绪论随着汽车工业的不断进步,行驶在道路上的车辆越来越多,交通事故发生的频率也不断增加。众所周知,交通事故的发生大部分是由驾驶员的超速驾驶造成的。为提

2、高汽车运行的安全性,减少交通事故的发生,本文讲述了一个由单片机控制的车速报警系统。本文从驾驶员的角度出发,设计了一个检测车辆超速的报警系统。该报警系统允许驾驶员通过自带键盘设置车辆安全行驶的最高速度,在车辆行驶过程中,该系统通过速度传感器时刻监测机动车辆,并通过LED显示车辆的实际车速和用户设置的安全参数。当车辆速度超过驾驶员设置的最高速度时,蜂鸣器开始报警,警告灯不断闪烁,提醒驾驶员减速1。此设计利用8051单片机对机动车超速行驶情况进行蜂鸣报警和灯光报警的。该系统结构简单,可靠性高,操作方便,可广泛应用于摩托车、汽车等机动车辆。该设计详细介绍了系统的总体设计方案,给出了界面模块与8051接

3、口电路,系统硬件电路及外围设计电路,最后介绍了软件设计方法的程序流程图。2 系统方案设计及工作原理2.1 系统方案设计为了获得较高的性能价格比,设计时不应盲目追求复杂高级的方案。在满足性能指标的前提下,应尽可能采用简单的方案,因为方案简单意味着所用的元器件少,可靠性高,而且比较经济。在车速报警系统的硬件和软件设计时,应当考虑操作方便,尽量降低对操作人员的专业知识的要求,以便产品的推广应用。系统的输入输出方式、操作程序应尽量简单明了,无须专门训练就能掌握其使用方法。 系统方案方框图在protues中用方波发生器代替传感器,将输入的一定值的脉冲转换为对应的速度值,并在lcd上显示出来。脉冲与速度的

4、换算关系由程序决定。程序设定,一秒时间内由计数器记到的脉冲个数v=f,v是汽车当前速度值,单位是km/h,f是方波信号的频率,单位为kHz2。当速度在设置的正常速度范围内,在lcd上显示当前速度值,并显示正常状态“Normal”;当速度超过预定的值时,在lcd上显示当前速度值,并显示超速状态“Speeding”由蜂鸣器长鸣发出提示声,红LED灯闪烁提示超速。2.2 工作原理2.2.1 MCS-518051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线 。2.2.2 LCDLCD 的横

5、截面好像是很多层三明治叠在一起。每面最外一层是透明的玻璃基体,玻璃基体中间就是薄膜电晶体。颜色过滤器和液晶层可以显示出红、蓝和绿三种最基本的颜色。通常,LCD后面都有照明灯以显示画面。一般只要电流不变动,液晶都在非结晶状态。这时液晶允许任何光线通过。液晶层受到电压变化的影响后,液晶只允许一定数量的光线通过。光线的反射角度按照液晶控制。当液晶的供应电压变动时,液晶就会产生变形,因而光线的折射角度就会不同,从而产生色彩的变化。一个完整的TFT 显示屏由很多像素构成,每个像素象一个可以开关的晶体管。这样就可以控制TFT 显示屏的分辨率。如果一台LCD的分辨率可以达到1024 x 768 像素 (SV

6、GA),它就有那么多像素可以显示。 3 硬件设计3.1 protues仿真图3.1.1 protues原理图3.1.2 PCB图4 软件设计4.1 程序流程图4.1.1 主程序4.1.2 自检程序 4.1.3 正常(中断)程序4.2 程序清单 程序清单见附录5 调试结束5.1 自检模式 上电运行,自检模式开始,红LED灯和绿LED灯都亮,蜂鸣器长响,LCD显示欢迎界面“Lifes precious!”和“*Safe Driving!*”,4.5秒后,自检模式完成,红LED灯和绿LED灯都灭,蜂鸣器灭,LCD不显示,再过3.5秒,系统开始正常工作。自检模式5.2 正常模式 以方波信号产生的脉冲数

7、模拟车速,当车速不高于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.2 km/h”,并显示警告信息“ WARNING! ”。汽车超

8、速行驶,系统通过红LED灯闪烁,扬声器长鸣报警,提醒司机减速行驶,注意安全。超速状况 警告6 结论 系统上电后进行自检,自检模式完成后,系统开始正常工作。车速不高于设定的最高车速时,系统工作于正常模式,显示当前车速;当车速高于设定的最高车速时,汽车工作于超速模式,红LED灯闪烁,蜂鸣器长鸣,起到报警的作用,提醒司机减速行驶。该系统起到了显示当前车速,超速报警的功能,是一个成功的设计。7 参考文献1周旭艳.彭宣戈.朱兵.8051在车辆超速报警系统中的应用.井冈山学院学报. 2006.(02)2吴有林.安玉.熊飞桥.吴先绪.智能化汽车速度控制报警系统的设计. 重庆大学学报(自然科学版). 2005

9、年.(12).部分内容来源于互联网8 附录程序清单:/*/文件名:qichedianzi.c/作者:Evens/日期:2011-6-21/文件描述:模拟汽车测速MCU:使用AT89C52单片机,12MHz*/*相关定义和声明*/#include /调用头文件(单片机内部的寄存器定义)/*本段为硬件I/O口定义*/sbit LCD_RS = P1 0;sbit LCD_RW = P1 1; sbit LCD_E = P1 2;#define LCD_DATA P2 /LCD DATA#define LCD_BUSY 0x80 / 用于检测LCD的BUSY标识(本程序中用的延时,未检测)#defi

10、ne uchar unsigned char#define uint unsigned int/全局变量声明uint speed;uchar test=1;/自检模式uchar normal=0;/正常模式uchar nor_speed; /不超速uchar exc_speed; /超速uchar cnt_ovtime;/单位时间内计数器溢出次数/uint data dis5=0x00,0x00,0x00,0x00,0x00;/存放速度个,十,百,还有小数点后一位,还有个中间变量/函数声明void lcd_init(void);void display_string(uchar x,uchar

11、 y,uchar *s);void disp_selec(uchar bit_selec,uchar seg); void init_timer0();/初始化计数器T0void init_timer1();/初始化定时器T1/*定义声明结束*/*相关函数*/*函数名:delay_ms*输入:无*输出:无*描述:1ms延时,使用12MHz晶体/*/void delay_ms(uint i) uint j; while(i-) for(j = 0; j =1200) /判断是否超速 exc_speed=1;/速度大于120,标志为超速 nor_speed=0; else nor_speed=1;

12、 exc_speed=0; TH1=TL1=0x00;/THx清0 counter=0;/中断次数清0 cnt_ovtime=0; void it_timer1() interrupt 3 / 中断地址 0x001b TF1 = 0; /定时器T1用于单位时间内收到的脉冲数 cnt_ovtime+; /*定时计数器设置结束*/*LCD1602驱动程序*/* 函数名称: WriteDataLcd* 入口参数:wdata(unsigned char型)* 出口参数:无* 功能描述: 写数据到LCD*/void WriteDataLcd(uchar wdata) LCD_DATA=wdata; LC

13、D_RS=1; LCD_RW=0; LCD_E=0; dellay(100); /短暂延时,代替检测忙状态 LCD_E=1;/* 函数名称: WriteCommandLcd* 入口参数:wdata(unsigned char型)* 出口参数:无* 功能描述: 写命令到LCD*/void WriteCommandLcd(uchar wdata) LCD_DATA=wdata; LCD_RS=0; LCD_RW=0; LCD_E=0; dellay(100); /短暂延时,代替检测忙状态 LCD_E=1;/LCD初始化void lcd_init(void) LCD_DATA=0; WriteCom

14、mandLcd(0x38); dellay(1000); WriteCommandLcd(0x38); /显示模式设置 WriteCommandLcd(0x08); /关闭显示 WriteCommandLcd(0x01); /显示清屏 WriteCommandLcd(0x06); /显示光标移动设置 WriteCommandLcd(0x0c); /显示开及光标移动设置/* 函数名称: display_xy* 入口参数:x(unsigned char型),y(unsigned char型)* 出口参数:无* 功能描述: 设置光标位置, x是列号,y是行号*/void display_xy(uch

15、ar x,uchar y) if(y=1) x+=0x40; x+=0x80; WriteCommandLcd(x);/* 函数名称: display_char* 入口参数:x(unsigned char型),y(unsigned char型),dat(unsigned char型)* 出口参数:无* 功能描述: 在具体位置显示单个字符,x是列号,y是行号*/void display_char(uchar x,uchar y,uchar dat) display_xy(x,y); WriteDataLcd(dat);/* 函数名称: display_string* 入口参数:x(unsigne

16、d char型),y(unsigned char型),s(指针型)* 出口参数:无* 功能描述: 在具体位置显示字符串,以/0结束,x是列号,y是行号*/void display_string(uchar x,uchar y,uchar *s) display_xy(x,y); while(*s) WriteDataLcd(*s); s+; /*LCD1602程序结束*/*主程序*/void main() lcd_init();/初始化LCD init_timer0();/初始化定时器,计数器 init_timer1(); if(test)/检试模式 P3 |=0x07;/绿灯亮,红灯亮,蜂鸣

17、器响 display_string(0,0, Lifes precious! ); display_string(0,1, *Safe Driving!* ); 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:); dis3=speed/10

18、00; /百位 dis4=speed%1000; dis2=dis4/100; /十位 dis4=dis4%100; dis1=dis4/10; /个位 dis0=dis4%10; /小数点后一位 if(dis3!=0) /如果百位为0,屏蔽 display_char(6,0,dis3+0x30); else display_char(6,0,0xA0); display_char(7,0,dis2+0x30); display_char(8,0,dis1+0x30); display_char(10,0,dis0+0x30); display_string(9,0,.);/显示小数点 dis

19、play_string(11,0,km/h);/显示速度单位 display_string(0,1,Status:Normal ); if(exc_speed)/超速 display_string(0,0,Speed:);/显示速度值 dis3=speed/1000; /百位 dis4=speed%1000; dis2=dis4/100; /十位 dis4=dis4%100; dis1=dis4/10; /个位 dis0=dis4%10; /小数点后一位 if(dis3!=0) /如果百位为0,屏蔽 display_char(6,0,dis3+0x30); else display_char(

20、6,0,0xA0); display_char(7,0,dis2+0x30); display_char(8,0,dis1+0x30); display_char(10,0,dis0+0x30); display_string(9,0,.);/显示小数点 display_string(11,0,km/h);/显示速度单位 display_string(0,1,Status:Speeding!); P3 &=0x01;/绿灯灭 P3 |=0x06;/红灯亮,蜂鸣器响 delay_ms(500); display_string(0,1, WARNING! ); P3 &=0x06;/红灯灭,蜂鸣器

21、灭 delay_ms(500); /*主程序结束*/*/文件名:qichedianzi.c/作者:Evens/日期:2009-6-30/文件描述:模拟汽车测速MCU:使用AT89C52单片机,12MHz*/*相关定义和声明*/#include /调用头文件(单片机内部的寄存器定义)/*本段为硬件I/O口定义*/sbit LCD_RS = P1 0;sbit LCD_RW = P1 1; sbit LCD_E = P1 2;#define LCD_DATA P2 /LCD DATA#define LCD_BUSY 0x80 / 用于检测LCD的BUSY标识(本程序中用的延时,未检测)#defin

22、e uchar unsigned char#define uint unsigned int/全局变量声明uint speed;uchar test=1;/自检模式uchar normal=0;/正常模式uchar nor_speed; /不超速uchar exc_speed; /超速uchar cnt_ovtime;/单位时间内计数器溢出次数/uint data dis5=0x00,0x00,0x00,0x00,0x00;/存放速度个,十,百,还有小数点后一位,还有个中间变量/函数声明void lcd_init(void);void display_string(uchar x,uchar

23、y,uchar *s);void disp_selec(uchar bit_selec,uchar seg); void init_timer0();/初始化计数器T0void init_timer1();/初始化定时器T1/*定义声明结束*/*相关函数*/*函数名:delay_ms*输入:无*输出:无*描述:1ms延时,使用12MHz晶体/*/void delay_ms(uint i) uint j; while(i-) for(j = 0; j =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; void it_timer1() interrupt 3 / 中断地址 0x001b TF1 = 0; /定时器T1用于单位时间内收到的脉冲数 cnt_ovtime+; /*定时计数器设置结束*/*LCD1602驱动程序*/* 函数名称: WriteDataLcd* 入口参数:wdata(unsigned char型)* 出口参数:无* 功能描述: 写数据到LCD*

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1