当车速≥10Km/h,声光同步报警,声光同步报警3次,频率为0.5Hz,3次后,声音停止,报警灯常亮;在等待60s后如速度仍≥10Km/h,且安全带未系,则开始下一个循环;安全带系好时,报警即刻解除。
安全带未系提示系统组成及工作原理
系统组成:
传感器、安全带卡扣/锁扣(可用开关代替)报警灯、电源、主控制器、蜂鸣器。
图连接图
系统工作原理:
当车启动时,安全带检测装置,车速传感器将检测的信号传输到主控制,控制器根据信号判断当前车辆是否处于行驶状态且有未乘系安全带,当车辆处于行驶状态且未系安全带时,安全带提示灯闪烁,蜂鸣器报警。
图工作原理图
2硬件电路设计
电路总体方案
本设计包括硬件和软件设计两个部分。
模块划分为数据采集、报警提示模块,电路结构可划分为:
安全带传感器、报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。
用户终端完成信息采集、处理、数据传送、功能设定、本地报警等功能。
就此设计的核心模块来说,单片机就是设计的中心单元,所以此系统也是单片机应用系统的一种应用。
单片机应用系统也是有硬件和软件组成的。
硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是各种工作程序的总称。
单片机应用系统的研制过程包括总体设计、硬件设计、软件设计等几个阶段。
驱动电路经控制信号放大并推动声光报警设备完成相应的动作。
图是电路总体框图,包括51单片机最小系统,安全带开关,速度传感器,报警指示灯报警,蜂鸣器,,电源电路。
图电路总体框图
闪光报警
闪光报警时最简单,也是最常用的一种报警方式,单片机应用系统中的闪光报警就是在控制指示灯的程序中加入定时程序,按一定的时间间隔来交替点亮与熄灭指示灯。
闪光报警在硬件连接上也是非常简单,通常利用AT89C52的I/O口直接驱动发光二极管实现。
电路中的发光二极管一般反向连接,其正端接5V,负端通过限流电阻与I/O口线相连。
限流电阻的阻值的选择要同时考虑发光二极管的驱动电流及I/O口的负载能力,一般可选择330或360殴,如使某发光二极管点亮,则只需相应的输出口输出低电平。
由4个发光二极管接上电阻后连上单片的RXD的引脚,外接VCC,当单片机的RXD引脚被置低电平后,发光二极管被点亮,起到报警作用。
下图所示为发光二极管报警电路。
图闪光报警
鸣音报警
鸣音报警的方式有两种,一种是单频音报警,另一种是音乐声报警。
如下图所示,用一个Speaker和三极管、电阻接到单片机的TXD引脚上,构成声音报警电路,下图示为声音报警电路。
图2..3蜂鸣报警
单片机概述
STC89C52单片机简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
这一模块以单片机为中心把程序代码烧进去然后外围接上复位电路、振荡电路、键盘控制、LED显示电路、报警电路等子模块。
STC89C52单片机在一块芯片中集成了CPU、RAM、ROM、定时器/计数器、看门狗和多种功能的I/O口设备的等,相当于一台计算机所需要的基本功能部件。
STC89C52的4个8位I/O口的功能说明如下:
(1)P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
(2)P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,和分别作定时器/计数器2的外部计数输入(T2)和定时器/计数器2的触发输入(T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
(3)P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
(4)P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在flash编程和校验时,P3口也接收一些控制信号。
P3口亦作为AT89C52特殊功能(第二功能)使用。
单片机最小系统
要使单片机工作起来最基本的电路构成为单片机最小系统如图所示
图单片机最小系统
单片机最小系统包括单片机、复位电路、时钟电路构成。
STC89C52单片机的工作电压范围:
所以通常给单片机外界5V直流电源。
连接方式为单片机中的40脚VCC接正极5V,而20脚VSS接电源地端。
复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。
单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。
当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。
本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。
时钟电路好比单片机的心脏,它控制着单片机的工作节奏。
时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。
如采用外部时钟源驱动器件,XTAL2应不接。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us。
复位电路
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延迟才撤销复位,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
当单片机的复位引脚出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
所以复位引脚的电容大一点没多大关系,顶多是复位时间长一点;但如果电容太小,高电平持续时间太短,则单片机无法正常复位,就不能工作,电容通常取10UF或22UF,铝电解电容即可。
单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电源通过电阻给电解电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于秒),正因为这样,复位脚由低电位升到高电位,引起了内部电路的复位工作;当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作。
晶振电路
它是单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作。
假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:
电路将无法通信。
它是由一个晶振和两个瓷片电容组成的,晶振和瓷片电容是没有正负的,两个瓷片电容相连的那端一定要接地。
一般单片机的晶振工作于并联谐振状态,也可以理解为谐振电容的一部分。
它是根据晶振厂家提供的晶振要求负载电容选值的,换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差,也能保证温漂等误差。
一般处理器的一个机器周期由12个时钟周期所组成。
所以单片机用12M晶振,运行速度为1M。
负载电容=[(Cd*Cg)/(Cd+Cg)]+Ci+△C],跟晶振特性、单片机内部时钟电路等效电容有关。
两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。
其起到一个并联协振的作用,这样可以让它的脉冲更平稳与协调。
指示灯和报警电路
在单片机的I/O里会输出高低电平,在P20、P21和P22分别接上LED指示灯而P23接上蜂鸣器而蜂鸣器外接个8550的三极管起到开关作用,当三极管达到饱和状态下就驱动了蜂鸣器工作了。
图指示灯和报警电路
3软件部分设计
总体结构
软件程序主要完成安全带检测、汽车速度及驱动报警电路报警等功能,系统程序主要包括主程序、安全带未系子程序、蜂鸣器报警子程序等。
主程序
主程序的主要功能是负责检测安全带,汽车有效速度,当安全带未系车速小于10km/h时,安全带提示灯闪烁;当安全带未系车速大于10km/h时,安全带提示灯闪烁,蜂鸣器发声报警。
主程序流程图如示:
图主程序流程图
安全带未系提示子程序
安全带未系子程序的主要功能就是汽车启动后未系安全带时,安全带指示灯会不停的闪烁,流程图如图。
图安全带提示流程图
蜂鸣器报警子程序
报警子程序的主要功能是在未系安全带的情况下汽车行驶速度超过10km/h时,能够使蜂鸣器发声从而达到报警的目的。
报警子程序流程图如图:
图蜂鸣器报警流程图
4系统调试
Keil编译器软件简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
图KeilC51
KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图所示,其中uVision与Ishell分别是C51forWindows和forDOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
使用Keil软件建立一个工程
Keil是目前进行51单片机开发最常用的编译软件。
关于Keil的使用,有很多的资料介绍,这里只介绍其整个编译过程,在最短时间内开始使用Easy51DP-2开发板。
对于Keil更详细的介绍,可以参考一些专门书籍资料。
在Keil里,每一个完整的程序,都是以一个工程的形式建立的。
一个工程里可以有一个或多个*.c文件和*.h文件,但只可以有一个main()函数。
一般的做法是将包含main()函数的C文件加入到工程中,其他文件以#include头文件的形式加到这个C文件里。
这样,在编译的时候,其他的文件会被自动的导入到工程里来。
打开Keil软件后,出现(图)所示界面。
当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。
图Keil软件主界面
首先点击Project->NewProject…(Project->OpenProject…为打开一个已经存在的工程),如图所示。
图Keil软件打开新工程界面
点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图所示)界面。
在此界面上选择电路板上所用的单片机型号:
AtmelSTC89C52(或者是AT89S52,视开发板上具体型号而定),单击“确定”。
图选择电路板上所用的单片机型号
设置完成后,软件会提示“是否将8051上电初始化程序添加入工程”如图所示,这个一般选择“否”。
(关于的相关内容可查阅相应资料)
图是否将8051上电初始化程序添加入工程
这样,就建立了一个空的51工程。
接下来的事,就是在这个工程里面加入自己的程序代码。
点击
,或者File->New,便建立了一个空的文本框。
现在,就可以开始在里面输入你的代码了。
保存时注意:
如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。
到目前为步,我们已经建立了一个工程,也写了一个程序代码。
但现在还不能开始编译。
因为还没有将程序代码添加到工程里面去。
下一步就是将写完的程序添加到工程里面,如图所示,在左边ProjectWorkspace里的SourceGroup1上右击,选择AddFilestoGroup‘SourceGroup1’。
在打开的对话框中,选择刚存的文件路径和对应的扩展名。
这样,程序就添加进了这个工程。
图添加文件到工程中
下一步,就开始编译刚输入进去的代码。
点击工具栏中的
按钮。
接着,Keil会打出下面的提示:
Buildtarget'Target1'
assembling...
linking...
ProgramSize:
data=xdata=0code=100
"first"-0Error(s),0Warning(s).
其中“"first"-0Error(s),0Warning(s).”说明现在的工程编译通过,0个错误和0个警告。
建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:
单击
,或者在ProjectWorkspace里Target1上右击,选择“OptionsforTarget‘Target1’”。
出现如图所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。
现在再点击
重新编译,系统提示:
“creatinghexfilefrom"first"...”。
便会在工程所在文件夹里生成HEX文件。
图生成HEX文件
使用Debug进行调试
Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值……能用好这个调试工具对编写单片机程序会有很大的帮助。
同样的,在这里,只对Debug进行简单应用介绍,更详细的使用方法可以参看相关书籍资料。
图调试前设置窗口
首先,单击
,弹出如图所示对话框,在Target页面上设置对应的晶振频率。
其他不用作修改。
设置完成后,单击
,进入调试界面(如图所示)。
图Keil调试界面
点击
中对应的工具按钮则可以开始调试。
另外,“View”下的三个工具在调试中会经常用到如.图所示,“DisassemblyWindow”显示C文件的反汇编程序;“Watch&CallStackWindow”可以显示程序中某一变量的值;“MemoryWindow”可以显示内存中某一地址的值。
图三个常用的调试工具
硬件调试及调试中遇到的问题
第一步为目测,单片机应用系统电路全部手工焊接在洞洞板上,因此对每一个焊点都要进行仔细的检查。
检查它是否有虚焊、是否有毛剌等。
第二步为万用表测试,先用万用表复核目测中认为可疑的连线或接点,查看它们的通断状态是否与设计规定相符,再检查各种电源线与地线之间是否有短路现象。
第三步为加电检查。
当系统加电时,首先检查所有插座或器件引脚的电源端是否有符合要求的电压值,接地端电压值是否接近零,接固定电平的引脚端是否电平正确。
第四步是联机检查,在对硬件电路调试过程中,还遇到了不少问题,第一次把所有的元件都焊上去后,都准备调试了,才发现正负电源的插针离得太近了,不容易接电源,本不该犯的错误,这些都是由于自己的粗心大意造成的,所以说,做任何事情都必需经过“三思而后行”,来不得半点的马虎,否则浪费了时间和精力。
5总结
本设计研究了一种基于单片机技术的安全带未系提示报警器。
该报警器通过以AT89C52单片机为工作处理器核心,外接速度传感器、安全带开关,能够提示机动车驾驶人员佩戴安全带安全行驶,同时能有效的抑制在出现剧烈碰撞的交通事故中,造成对人体的二次伤伤害,平时传感器输出低电平,当汽车启动后切未检测到安全带时出低电平变为高电平,此高电平输入单片机,作为单片机的外部触发信号处理,经单片机内部软件程序处理后,单片机输出控制信号,驱动声光报警电路开始报警。
该报警器的最大特点就是使用户能够操作简单、易懂、灵活;且安装方便、智能性高、误报率低。
随着现代人安全意识的增强以及科学技术的快速发展,相信报警器必将在更广阔的的领域得到更深层次的应用。
在这次的设计中遇到许多问题,例如硬件焊接、Keil调试运用,其中最难的部分是软件部分,我们上网查阅了很多资料,虽然经过自己的修改,但还是有部分功能无法实现,通过此次的课程设计,使我深深的感到自身能力的不足,也使我将学到的知识运用到实践当中,在这段时间里,我学到了很多知识,受益良多,是大学期间最难忘得时光,所谓失败是成功之母,在经历数次失败后,在导师同学的帮助下,艰难的完成此次设计,让我知道在今后的工作中也要不断地去学习充实自己。
参考文献
[1]胡汉才.单片机原理及系统设计[M].北京:
清华大学出版社,2002.
[2]王守中.51单片机开发入门与典型实例[M].北京:
人民邮电出版社,2007.
[3]陈雪丽.单片机原理及接口技术[M].北京:
化学工业出版社,2005.
[4]薛均义,张彦斌.MCS-51系列单片微型计算机及其应用.西安交通大学出版社,2005.
[5]唐颖,程菊花,任条娟.单片机原理与应用及C51程序设计北京:
北京大学出版社,2008.
[6]李全利,迟荣强编着单片机原理及接口技术高等教育出版社,
[7]侯媛彬,凌阳等单片机原理及其毕业设计精选2006年,科学出版社
[8]罗亚非,凌阳等十六位单片机应用基础2003年北京航空航天大学出版社
[9]北京北阳电子有限公司,061A凌阳单片机及其附带光盘2003年
[10]张毅刚等,MCS-51单片机应用设计,哈工大出版社,2004年第2版
[11]霍孟友,单片机原理与应用,机械工业出版社,
[12]霍孟友,单片机原理与应用学习概要及题解,机械工业出版社,
[13]许泳龙,单片机原理及应用,机械工业出版社,
[14]马忠梅,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版
[15]薛均义张彦斌虞鹤松樊波,凌阳十六位单片机原理及应用,2003年,北京航空航天大学出
[16]李广弟等单片机基础北京航空航天出版社,
[17]楼然苗等51系列单片机设计实例北京航空航天出版社,
[18]唐俊翟等单片机原理与应用冶金工业出版社