资源描述
基于单片机的汽车防盗报警系统设计摘 要汽车防盗报警器是汽车常用的一种主动防盗措施,本防盗报警系统是应用单片机知识,从设计、开发到调试完成一个应用系统的整个过程。本课题即采用PIC16F73单片机,设计具有声光防盗、静音防盗、触发报警等功能的汽车防盗报警系统。车主启动防盗模式后,信号采集系统中的传感器检测模块便处于工作状态,一旦检测到相应的外界干扰信号,防盗系统便被触发。控制系统进行综合判断后,一方面发出报警声阻吓盗车者;另一方面通知车主。报警器进入工作状态后,当振动传感器检测到振动信号,经运算放大器放大后送入单片机,单片机接受到信号后,接通声光报警电路进行声光报警。这些方法取得了良好的应用效果,达到了设计者的预期目标,具有一定的实际推广价值。关键词 汽车防盗,振动报警,单片机,无线设防ABSTRACTMotor vehicle anti-theft alarm system is a pro-active security measures that are commonly used by cars. The anti-theft alarm system is a whole process that completes an application system from design, development and debug with the application MCU knowledge. In the topic, PIC16F73 microcontroller is used to design a cars anti-theft alarm system that has the function of sound and light anti-theft, wireless anti-theft, vibration alarming etc. The owner turn on the anti-theft mode, then sensors detect module in signal acquisition system will work. Once sensors detect the corresponding signal interference, anti-theft system will be triggered. After the control systems integrated judgement, it makes a sound alarm to deter the car theft and tells the owners. After the alarm is working, when the vibration sensors detect vibration signals, signals are amplified by the operational amplifier and passed into the SCM. Then SCM receives signals, the sound and light alarm circuits are connected to the SCM and complete sound and light alarm at last. These measures have obtained good applied results in the actual practice, hence the certainly actual expansion value.KEY WORDS anti-theft, vibration alarming, single chip computer, wireless security目 录前言 1第一章 可行性分析 21.1 技术可行性分析 21.2 经济可行性分析 2第二章 总体方案设计 32.1 硬件设计方案 3 2.2 软件设计方案 4第三章 总体电路原理及设计 53.1 电路原理功能概述 53.2 PIC16F73 单片机简介 53.3 PIC16F73特点 63.4 硬件组成和功能 63.5 电源电路设计 73.6 报警器的线路设计 83.7 刹车部分电路设计 93.8 PIC1673单片机引脚及其功能 10第四章 PIC16F73单片机的内部结构 124.1运算器ALU及工作寄存器W 124.2程序存储器 124.3 数据存储器 124.4堆栈 144.5定时器/计数器TMRO 144.6 中断 154.7中断控制 154.8 复位 16第五章 软件设计 175.1 软件流程 175.2 软件详细设计 195.2.1 声光防盗 225.2.2 静音防盗 235.2.3 触发报警 245.2.4 警戒解除和自动回复 265.2.5 寻车 265.2.6 求救 27第六章 软件调试 28结 论致 谢参 考 文 献前 言 众所周知,汽车是当今世界主要的交通工具之一。随着人民生活水平的不断提高,汽车越来越成为人们生活中不可缺少的一部分,从世界上第一辆T型福特车被盗开始,偷车已成为现今城市最常见的犯罪行为之一。随着汽车数量的增加,特别是轿车正以很快的速度步入家庭,车辆被盗的数量逐年上升,这给社会带来极大的不安定因素,担心车辆被盗,成为困扰每一位汽车用户的难题。人们为了车辆的安全大都安装了汽车防盗报警系统。汽车防盗报警器的使用在很大程度上有效地保护了国家和人民生命财产的安全。使人们有了安全的依靠。同时车辆防盗报警器的使用也减少了盗窃犯罪事件的发生,起到了一定的威慑作用。 随着科学技术的进步,为对付不断升级的盗车手段,人们研制开发不同方式结构的防盗器,目前防盗器发展按其结构和功能。可以分为三大类:机械防盗电子防盗网络防盗。机械防盗主要是靠锁定离合制动,油门或变速档来达到防盗目的,但只防盗不报警,目前市场已不多见,属淘汰落伍产品。电子防盗是目前市场比较常见的防盗产品,其主要靠锁定点火或启动来达到防盗的目的。随着科技的发展和技术的进步汽车防盗的至高点将是网络防盗。无论车辆行驶到何处,随时处于自己的掌握之中,真正做到“车居四海皆安心”。 目前,用于汽车的防盗报警器种类繁多,功能也较单一,多数是汽车门被打开只有报警功能,切断点火电路汽车不能起动。正是由于诸多的汽车防盗报警器起不到应有的保护作用方导致汽车开始安装防盗网,将乘客与司机隔开,以防不测,虽然有一定的效果,但作用不大,也不雅观,且给乘客造成不舒服感,同时安装价格也较昂贵,为此我们的毕业设计为基于单片机的汽车防盗报警系统设计。如果有行窃者盗窃汽车或汽车上的物品,防盗系统不仅具有切断起动电路、点火电路、喷油电路、供油电路和变速电路、将制动锁死等的功能,同时,还会发出不同的声光信号,给窃贼一个精神上的打击,以阻止窃贼行窃。本设计中就是采用PIC16F73单片机,以其为核心,设计具有声光防盗、静音防盗、触发报警等功能的汽车防盗报警系统。第一章 可行性分析1.1 技术可行性分析随着科技的不断发展,微处理器技术再次发生巨大变革,使用微处理器实现控制功能不仅可以简化控制硬件,而且可以加入智能化对系统运行状态的诊断。单片机是单片微型计算机的简称,随着制造集成电路技术的发展可以将完成计算机功能的零部件集成在一个芯片上,这样的一个芯片就具有计算机的全部或大部分功能,称为单片微型计算机,简称单片机。自从20世纪70年代问世以来,得到了快速发展,从早期的8位机到现在的32位机,其硬件资源和软件资源都在不断丰富与完善,而这种以软件(编程序)取代硬件并能提高系统性能的控制技术必将随着单片机应用的推广普及而不断发展完善。特别是近20年时间里,微型计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志。单片机由于其集成度高、体积小、抗干扰能力强和价格低廉、具有独特的控制功能,它已经成为计算机世界中的重要成员。单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。1.2 经济可行性分析开发一个硬件的初衷就是期望将来获得更大的经济效益。经济效益通常表现为降低成本的同时增加收入。因此在开发一个硬件之前必须进行经济可行性分析。目前汽车防盗报警器的硬件部分可以采用廉价的芯片控制处理器,以及各种便宜的电子元器件来完成,软件部分成本投资也不高,经济上基本可行。综合以上的技术、资金、人员等因素,该课题可行。第二章 总体方案设计单片机防盗报警系统用于集中检测报警,能对受控制的多个点进行实时检测,当检测到一个或多个点有报警信号时,能用声和数码显示出报警地点。当检测到有报警信号时,为防止误报,该系统延时1秒钟再检测一次,若确实有情况才报警。该系统的传感器可选用接触式、断开式等开关量传感器,也可以组成相应的控制和报警系统。在本设计中,整个防盗报警电路由三部分组成:主机板、报警器、震动传感采集器。再加上其他一些主要的工作模块构成整个汽车防盗报警系统。此防盗报警系统能够实现检测盗警信号、设防、报警等功能。电路的主芯片采用美国Microchip 公司的PIC16F73 ,93LC46 为EEPROM数据存储器与PIC16F73一起构成了软件编码解码电路。PIC16F73是美国Microchip 公司采用的RISC结构的高性价比嵌入式控制器,其高速度、低电压、低功耗、强大的驱动能力、低价OTP 技术、体积小巧等都体现了单片微控制器工业的趋势。本课程设计中设计的汽车防盗报警器系统主要分为主机工作状态遥控设置模块,震动信号的产生与采集模块,发动机工作状态检测模块,,发动机工作状态检测模块,状态声、光控制模块等。2.1 硬件设计方案硬件的设计主要是以PIC16F73单片机为核心与外部的各各模块进行连接。外部模块主要有主机工作状态遥控设置模块,这一部分包括遥控信号编码、发射,信号接收、解码,遥控器身份(ID码)学习等功能电路完成主机工作状态的设置。震动信号的产生与采集模块,震动信号由震动传感器产生,信号产生后经过放大、滤波、硬件比较,产生一个500ms 的高电平脉冲。在信号采集电路中,把正脉冲取反。刹车信号采集模块,这部分是由刹车信号电路完成的。发动机工作状态检测模块,测发动机的工作状态,配合其他部分的电路,实现不同功能。车门状态检测模块,电路通过检测车门灯的电平来判断车门的开关状态。状态声、光控制模块,检测到有震动信号、车门被打开或发动机启动时,本模块产生声、光报警。在引擎控制和中央门锁控制模块,设置防盗时,自动上锁车门和锁定引擎,使汽车无法启动;在解除防盗设置时,车门自动开锁和引擎解锁。本方案的设计可以满足本次设计的要求,各部分硬件的能够协调的工作,所以本方案可行。2.2 软件设计方案软件的设计主要是对汽车防盗系统控制和程序的设计。程序的设计主要有汽车声光防盗,当汽车处于停车厂停放就可以使用声光防盗。如果有盗车者试图去打开车门或启动汽车时,通过传感器车主可以知道有盗车者,车主控制汽车发动机停止运转,从而使盗车者不能盗走汽车给车主避免不必要的经济损失。当车主需要使用汽车时,车主可以按一下撤防键车主进入汽车不会造成误报。静音防盗的程序设计是主要是针对安静的场合所设计,比如有些地方是不允许呜笛或发出有刺激的响声。这时可以使用静音防盗系统,静音防盗系统的工作方式是在有盗车者实施犯罪的时候静音防盗程序启用,此时只有方向灯闪亮而喇叭不会发出响声。求救程序的设计主要是针对盗车贼把汽车盗走,方便车主和警察快速找到汽车所设计的程序。车主发现自己的汽车已被盗走,此时车主可以按下寻车键,汽车通过传感器接收到车主遥控器的指令,汽车会发出刺激的响声同时LED灯同步闪亮。这时车主可以很快定位自己汽车的位置找到自己的汽车。还有一种情况是在汽车停车厂停放时,停车厂的汽车肯定很多同时和自己汽车车型和品牌相同的车辆也很多。如果车主一时间又忘了自己汽车的停放位置会给车主带来很我不必要的麻烦,浪费车主的保贵时间。有了寻车程序的设计,车主按下寻车键,自己的汽车喇叭会发出响声,同时LED灯也同步闪亮。车主可以方便的找到自己汽车的位置,避免的不必要的麻烦。有了这几种汽车防盗系统和寻车系统的设计,车主在使用汽车时可以放心的使用。防盗系统和寻车系统的设计也使汽车的安全性有了很大的提高,这也就刺激了汽车行业的发展,同时根据本次设计的的要求,这几种防盗系统的设计简单易懂,可以保证汽车的安全性。所以此软件设计方案可行。第三章 总体电路原理及设计3.1 电路原理功能概述该汽车防盗报警系统,采用PIC16F73单片机,以其为核心,设计具有自动设防、无线设防、振动报警等功能模块的汽车防盗报警系统。本课程设计中设计的汽车防盗报警器系统主要集合主机工作状态遥控设置模块,震动信号的产生与采集模块,发动机工作状态检测模块,状态声、光控制模块等,整个系统处于协调工作的状态,实现汽车防盗报警功能。3.2 PIC16F73 单片机简介PIC系列单片机硬件系统设计简洁,指令系统设计精练。它有以下优点:1)哈佛总线结构。PIC系列单片机内部总线结构不同于普通单片机的冯诺依曼结构,它采用的是哈佛结构。这就意味着,在PIC 系列单片机的内部,数据总线和地址总线是分离的,并且采用不同的宽度。这样可以实现指令提取的“流水作业”,可以实现指令的单字节化、单周期化,提高指令的执行速度。2)精简指令系统。PIC 系列单片机指令系统采用精简指令集RISC(Reduced Instruction Set Collection)技术,不仅便于记忆和学习,而且绝大部分的指令都是单字节、单周期指令,有利于提高指令运行速度。PIC16F73单片机采用13位指令系统,使用4K14位可反复擦写的FLASH存储器。PIC16F73最高时钟频率为20MHZ,每条指令执行周期200ns,由于大多数指令执行时间为一个周期,因此速度相当快。其内含192字节的RAM,4K程序存储器、5路A/D转换及2路PWM波发生器,应用时外围电路极其简单。它的这个特点为其电路设计以及软件调试带来了极大的方便。PIC16F73单片机的工作频率为DC20 MHz,RA0RA 5、RB0RB7、RC0RC7为 I/O 输入输出端口A、B、C,可以实现位控。有8位模数转换模块和5个输入通道,能够进行串行通信SSP和USART,有中断端口。3个定时器,2个捕捉/比较/PWM 模块。4K的flash ROM 程序存储器(14位字)以及35条指令集。MCLR:主复位端,当MCLR为高电平时对PIC16F73 单片机复位。OSC1:振荡信号输入端,这个端用于输入外部振荡器的信号,用RC振荡器时,它接RC电路;在用石英振荡器时,它接石英晶体的一端。OSC2:振荡信号输入端,在用石英振荡器或陶瓷振荡器时,通过一个串联电阻RS接振荡晶体的一个端。VDD:电源电压,一般为5V,也可在2.56.26V之间选取。VSS:地端。这些基本特征和功能,完全满足汽车防盗报警器系统设计的要求。3.3 PIC16F73特点 PIC16F73单片机为28 引脚微处理器,除了具有PIC 系列单片机的共同特点外,还具有以下特点: (1) 具有4KB 的FLASH程序存储器; (2) 22 条I/ O 口线; (3) 192 字节数据存储器; (4) 3个定时器; (5) PIC16F73 有5 路8 位A/ D 通道; (6) PIC16F73 有5 路10 位A/ D 通道; (7) PIC16F73 有128 字节的EEPROM。可见, PIC16F73特别适用于步进电机的驱动控制。3.4硬件组成和功能用单片机控制一个检测报警系统,与以往用数字逻辑电路组成的控制系统相比,用单片机组成的检测报警系统,应具有更大的灵活性,功能也更强,并具有智能性。本设计采用PIC16F73单片机实现声光同时作用的汽车防盗报警器。PIC16F73系列单片机是由Microchip公司生产的一种低功耗、高速、全静态CMOS 器件,内含有E2PROM,ROM,I/O及一个中央处理单元, 具有引脚少、功能强、可带LED 负载等特点。本设计汽车防盗报警器系统的主机功能模块框图如图3.1所示。图3.1功能能模块框图主机工作状态遥控设置模块,这一部分包括遥控信号编码、发射,信号接收、解码,遥控器身份(ID码)学习等功能电路完成主机工作状态的设置。用硬件编码方式,编码器为HCS301。用软件解码方式,相关硬件是CPU 和93LC46。遥控器上的编码器和射频发射模块均是采用按键供电,无按键时,耗电流为0mA ,这样可延长电池的使用时间。本部分按键和接收电路接收无线信号输入各用1个I/O口,CPU对93LC46的操作用3个I/O口,共用单片机的5个I/O口。震动信号的产生与采集模块包括震动信号的产生和采集电路。震动信号由震动传感器产生,信号产生后经过放大、滤波、硬件比较,产生一个500ms 的高电平脉冲。在信号采集电路中,把正脉冲取反。CPU的外部事件中断口检测到负电平后,产生中断,进行报警处理。本模块使用了单片机1个外部事件中断口RB0。刹车信号采集模块部分包括手刹和脚刹电路,手刹电路产生高电平信号,脚刹电路产生低电平信号,用硬件“与”电路把两种信号相与,有刹车时单片机I/O口检测到低电平。本部分仅采集是否有刹车信号,在程序中做标志位处理。使用了单片机的1个I/O口,具体的电路设计在单元设计电路中有详细的论述与介绍。发动机工作状态检测模块包括发动机工作状态检测电路。在程序中,检测发动机的工作状态,配合其他部分的电路,实现不同功能,如车门的自动开关,遥控关车,设防状态下的发动机工作报警等。本部分模块使用了单片机的2个I/O口。车门状态检测模块电路通过检测车门灯的电平来判断车门的开关状态。在设置防盗警戒时,若车门被打开,则启动报警;在未设置防盗警戒时,若上车或离车时车门未关妥,则车的方向灯一直闪,以提醒车主。本部分模块使用单片机的1个I/O口。状态声、光控制模块为声光报警电路。在防盗设置状态下,检测到有震动信号、车门被打开或发动机启动时,本部分电路产生声、光报警信号;按寻车键寻车时,此部分电路以声、光信号提示车主车辆的位置;按防抢键时,本部分电路产生声、光信号,发出警告和呼叫救援。本部分模块使用了单片机的3个I/O口。在引擎控制和中央门锁控制模块中,包括引擎状态控制电路和中央门锁控制电路。在设置防盗时,自动上锁车门和锁定引擎,使汽车无法启动;在解除防盗设置时,车门自动开锁和引擎解锁。由于不同的车辆的中央锁控制的触发方式不同,开关门各用了1个I/O口,本部分共使用了单片机的3个I/O口。3.5电源电路设计电源电路由桥式整流、滤波电容。7805稳压芯片及电源指示灯组成。交流电经过桥式整流变成直流电,再经过电容滤波,7805稳压芯片稳压成为稳定的5V电源,用一个发光二极管指示灯指示电源状态。具体的电路设计如图3.2所示:图3.2 电源电路3.6报警器的线路设计报警器的线路原理图由PIC16F73单片机、振动传感器、放大电路和声光报警电路几部分组成。振动传感器是自制器,当汽车外壳被触摸时,它把接收到的信号传送给放大电路。放大电路由二级放大器组成,用于把振动传感器传送来的小信号电平放大成PIC芯片接口所要求的电平信号。为了提高电路抗干扰能力,减少失误动作的出现,设计一个可调电位器RW,用于调节检测信号的灵敏度,它可根据汽车被触摸程度的强弱而设定。声光报警电路由发光二极管和蜂鸣器组成。按键S1是起触发电路启动/复位的作用。系统上电后,PIC16F73单片机复位,完成对各I/O端口的初始化工作。按动S1后,报警器进入工作状态。当振动传感器检测到振动信号,经AR1、AR2放大后送入单片机,单片机接受到信号后,接通声光报警电路进行声光报警。此时,即使振动传感器信号消失,报警电路也不会停止工作,只有再次触发S1后,声光报警电路才被切断。具体的电路设计如图3.3所示:图3.3 声光报警的线路原理图3.7 刹车部分电路设计如图3.4所示:Hbrake in为手刹开关,Fbrake in为脚刹开关,没有刹车信号时,Hbrake in和Fbrake in悬空时,芯片的采集端口brake out为4.2V的高电平。当有脚刹信号时,即Fbrake in接通12V电压,则Q3工作在饱和区,则brake out处的电压即跳变为0.8V的低电平;当有手刹信号时,即Hbrake in接地,则D7导通,brake out处的电压同样跳变为0.8V。图3.4 刹车电路设计3.8 PIC16F73单片机引脚及其功能引脚的复用功能和符号单片机的信号引脚是单片机外特性的体现,在硬件上用户只能使用引脚,通过引脚的连接组建单片机系统。PIC单片机系列和MCS51系列单片机一样,其引脚除电源VDD、VSS为单一功能外,其余的信号引脚常是多个功能,即引脚的复用功能。其封装管脚图如图3.5所示。图3.5 PIC16F73的管脚图常见的引脚符号和主要功能如下:1.MCLR/Vpp清除(复位)输入/编程电压输入。其中MCLR为低电平时,对芯片复位。该脚上的电压不能超过VDD,否则会进入测试方法。Vpp代表编程电压。 2.OSC1/CLKIN 振荡器晶体/外部时钟输入端。3.OSC2/CLKOUT振荡器晶体输出端,在晶体振荡方式接晶体,在RC方式输出OSC1频率的1/4信号CLKOUT。4.TOCK1TMRO计数器输入端,如不用,为了减少功能应接地或接VDD。5.TICK1TMR1时钟输入端。6.TIOSITMR1的振荡输入端。7.TIOSOTMR1的振荡输出端。8.RD、WR、CS分别代表并行口读信号、写信号和片选控制线。9.AN0AN7A/D转换的模拟量输入端。AN0、AN1分别表示通道的个数。10.CCP捕捉/比较/脉宽调制等功能端。CCP是Capture/Compare/PWM的缩写。有的PIC芯片内有两个CCP部件,其引脚用符号CCP1和CCP2表示。 11.SCK/SCL同步串行通信时钟输入端。12.TX/CK异步通信发送端/SCI同步传输的时钟端。13.SDI/SDASPI通信数据输入端。14.SD0SPI通信数据输出端。15.RD0/PSP0RD7/PSP7D口,双向可编程,亦可作为并行口。作并行口对 TTL输入,作I/O口时为斯米特输入。第四章 PIC16F73单片机的内部结构4.1运算器ALU及工作寄存器W运算器ALU是一个通用算术、逻辑运算单元,用它可以对工作寄存器W和任何通用寄存器中的两个数进行算术(如加、减、乘、除等)和逻辑运算(如与、或、异或等)。16F73是八位单片机,ALU的字长是八位。在有两个操作数的指令中,典型的情况是一个操作数在工作寄存器W中,而另一个操作数是在通用寄存器中,或者是一个立即数。在只有一个操作数的情况下,该数要么是在工作寄存器W中,要么是在通用寄存器中。W寄存器是一个专用于ALU操作的寄存器,它是不可寻址的。根据所执行的指令,ALU还可能会影响框图中状态寄存器STATUS的进位标志C、全零标志Z等。4.2程序存储器单片机内存放程序指令的存储器称为程序存储器。PIC16F73的所有指令字长为14位。所以程序存储器的各存储单元是14位宽。一个存储单元存放一条指令。16F73的程序存贮器有1024(28)个存储单元(存储容量为1k)。这些程序存储器都是由FPEROM构成的。程序存储器是由程序计数器PC寻址的。16F73的程序计数器为13位宽,可寻址8K(81024)的程序存储器空间,但16F73实际上只使用了1k的空间(单元地址为03FFH)。当访问超过这些地址空间的存储单元时,将导致循环回到有效的存储空间。4.3 数据存储器在单片机PIC16F73中,除了有存放程序的程序存储器外,还有数据存储器。单片机在执行程序过程中,往往需要随时向单片机输入一些数据,而且有些数据还可能随时改变。在这种情况下就需用数据存储器。由于数据存储器不但要能随时读取存放在其各个单元内的数据,而且还需随时写进新的数据,或改写原来的数据。因此,数据存储器需由随机存储器RAM构成。RAM存储器在断电时,所存数据随即丢失,这在实际应用中有时会带来不便。但是,在16F73中有648位E2PROM数据存储器。存放在E2PROM中的数据在断电时不会丢失。16F73中的RAM数据存储器可分为两个存储体:即存储体0(Bank0)和存储体1(Bank1)。每个存储体均可以直接用内部总线传送信息,所以它们都是以寄存器方式工作和寻址。这些八位寄存器,又可分为通用寄存器和专用寄存器两个部分。通用寄存器存放数据,专用寄存器存放控制单片机运作的信息。每个存储体最大可扩展到7FH(128个字节)。在每个存储体中,专用寄存器被安排在低位地址空间,通用寄存器被安排在高位地址空间。通用寄存器用法单一,但专用寄存器却各有各的用处,现将较基本的专用寄存器作一简单介绍。(1)程序计数器(PCL、PCLATH)。程序计数器PC是对程序进行管理的计数器。PIC16F73的程序计数器为13位宽,最大可寻址的存储空间为8k14位。实际上16F73只使用前1k14位(000003FFH)存储空间。因程序计数器有13位宽,而专用寄存器只有8位。因此PC由两个专用寄存器构成。其低八位PCL是一个可读/写寄存器(地址为02H或82H),而高字节PCH(有效位5位)不能直接进行读/写操作,它是通过一个8位的保持寄存器PCLATH(地址为0A或8AH)把高5位地址传送给程序计数器的高字节。当执行CALL、GOTO指写PCL时,PC值的高字节就从PCLATH寄存器中装入。(2)状态寄存器STATUS。状态寄存器STATUS含有算术逻辑单元ALU运算结果的状态(如有无进位等)、复位状态及数据存储体选择位。功能如下:IRPRP1RP0TOPDZDCC 1.第0位。进位/借位位C。执行加、减运算指令2.第1位。辅助进位/借位位DC。执行加、减运算指令后,若结果的低四位向高四位有进位或借位,则DC置1,否则置0。3.第2位。零标志位运算结果为零,Z被置1;运算结果不为零,Z被清零。4.第3位。低功耗标志位PD。上电复位或执行CLRWDT指令后置1,执行SLEEP指令后被清零。5.第4位。定时时间到标志位TO。上电复位或执行CLRWDT、SLEEP指令后被置1,监视定时器的定时时间到被清零。6.第5位和第6位(RP0、RP1)。这两位是用于直接寻址时的寄存器体选择位。即00选中Bank0(00H7FH);01选中Bank1(80HFFH),16F73只有两个存储体。故10、11不用。7.第7位IRP。这是间接寻址的寄存体选择位。0选中Bank0、1(00HFFH),1选中Bank2、3。16F73只有Bank0、1,所以此IRP位应被置为0。(3)间接寻址INDF和FSR寄存器INDF寄存器不是一个物理寄存器,而是一个逻辑功能的寄存器(地址为00H或80H),当对INDF寄存器进行寻址时,实际上是访问FSR寄存器内容所指的单元,即把FSR寄存器作为间接寄存器使用。FSR称为“寄存器选择”寄存器,地址为(04H或84H)。对INDF寄存器本身进行间接寻址访问,将读出FSR寄存器的内容,例如当FSR=00H时,间接寻址读出INDF的数据将为00H。用间接寻址方式写入INDF寄存器时,虽然写入操作可能会影响STATUS中的状态字,但写入的数据是无效的。 4.4堆栈单片机执行程序时,常常要执行调用子程序。这样就产生了一个问题:如何记忆是从何处调用的子程序,以便执行子程序之后正确返回。此外,在程序执行过程中,还可能会发生中断,转而执行中断子程序,这时,又如何记忆从何处中断,以便返回呢?满足上述功能的方法就是“堆栈”技术。“堆栈”是一个用来保存临时数据的栈区。当主程序调用子程序时,单片机执行到CALL指令或发生中断时,就自动将下一条指令的地址“压栈”保存到栈区。当子程序结束,单片机执行返回指令时,就自动地把栈区的内容“弹出”,作为下步指令执行的新地址。PIC16F73芯片内有一个8级13位宽(与PC同宽)的硬件堆栈,此堆栈既不占用程序存储空间,也不占用数据存储空间。当执行一条CALL指令或一个中断被响应后,程序计数器PC中的断点地址就自动被压栈(PUSH)保护,而当执行RETURN、RETLW或者RETFIE指令时,堆栈中的断点地址会弹回(POP)程序计数器PC中。无论是PUSH还是POP操作,都不影响PCLATH寄存器的内容。4.5定时器/计数器TMROPIC单片机16F73中有一个定时器,此定时器也可用于计数,因此称为定时器/计数器,符号为TMRO。TMRO可用于定时控制、延时、对外部事件计数和检测等场合。TMRO是一个8位增量(加1)计数器。它在数据存贮器中的地址为01。定时器所用的时钟源可以是内部系统时钟(OSC/4,即四倍振荡周期),也可以是外部时钟。若TMRO对内部系统时钟的标准脉冲系列进行计数时,就成为定时器;对外部脉冲进行计数时TMRO就成为计数器。不管是定时还是计数方式,TMRO在对内部时钟或对外部事件计数时,都不占用CPU时间,除非TMRO溢出,才可能中断CPU的当前操作。可见,定时器是单片机16F84中效率高且工作灵活的部件。为了扩大定时或计数的范围,配合TMRO的使用,还有一个可编程预定标器。此定标器实际上是一个可编程分频器。TMRO的工作方式由数据存储器中的项选寄存器OPTION控制。OPTION是一个可读/写的寄存器。它含有配置TMRO/WDT预定标器、外部INT中断、TMRO等的各种控制位。TMRO的定时、计数方式是由OPTION寄存器中的D5(即TOCS位)确定。当TOCS=0时,工作于定时器方式;当TOCS=1时,工作于计数器方式。作定时器时,每个指令周期加1(无预分频时);而作计数器时,则在每个RA4/TOCKI引脚上电平变化时加1。OPTION寄存器的位4(TOCS位)决定外部脉冲的触发方式,当TOSE=1,下降沿触发;TOSE=0,上升沿触发。当TMRO内部计数器发生计数溢出(从FFh00h)时,溢出位送入中断控制寄存器INTCON。4.6中断PIC单片机16F73具有实时处理功能,能对外界异常发生的事件由中断技术作及时处理。当单片机的CPU正在处理某事件时,若外部发生了某一事件(如定时器溢出、引脚上电平变化),请求CPU迅速去处理,于是CPU就暂时中止当前的工作,转去处理所发生的事件。中断处理完该事件后,再回到原来被中止的地方,继续执行原来的工作。实现这种功能的部件称为中断系统。产生中断的请求源称为中断源。中断源向CPU提出的处理请求,称为中断请求或中断申请。CPU暂时中断自身的事务,转去处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,称为中断服务(或中断处理)。处理完毕,再回到原来被中止的地方,称为中断返回。4.7中断控制中断主要由中断控制寄存器INTCON来控制。INTCON是一个可读/写寄存器,含有定时器TMRO溢出、RB口的变化和外部INT引脚中断等各种允许控制和标志位。全局中断允许位GIE(D7)置1,将开放所有未被屏蔽的中断,如将该位清零,将禁止所有的中断。在响应中断时,GIE位将被清零,以禁止其它中断,返回的断点地址被压栈保护,接着把中断入口地址0004h装入程序计数器PC。在中断服务程序中,通过对中断标志位进行查询,确定中断标志位必须在重新开放中断之前用软件清零,以避免不断地中断申请而反复进入中断。(1)INT中断。RBO/INT引脚上的外部中断由边沿触发,当INTEDG位(OPTION寄存器第6位)被置1时,选用上升沿触发,如该位被清零,则由下降沿触发。当检测到引脚上有规定的有效边沿时,便把INTE位(INTCON的D4位)置1。在重新开放这个中断之前,必须在中断服务程序中对INTE位清零。(2)TMRO中断。当定时器TMRO的计数器计满溢出(即由FFH变成00H)时,硬件自动把TOIF(INTCON的D2位)置1。其中断可以通过对TOIE(INTCOND的D5位)置1或清零来控制该中断是否开放。(3)PORTB口引脚电平变化中断。在PORTB口的D7D0引脚上一旦有电平变化,就会把RBIF(INTCON的D0位)置1。这个中断可以通过对RBIE(INTCON的D3位)置1或清零来控制该中断是否开放。(4)中断的现场保护。在发生中断时,只有返回断点的地址被压栈保护。若用户还希望保护关键的寄存器(如W寄存器和STATUS寄存器)。4.8复位复位是单片机的初始化操作。其主要功能是把程序计数器PCL初始化为000H,可使16F73单片机从000H单元开始执行程序。PIC16F73芯片有下列几种不同的复位方式。(1)芯片上电复位POR。(2)正常工作状态下通过外部MCLR引脚加低电平复位。(3)在省电休眠状态下通过外部MCLR引脚加低电平复位。(4)监视定时器WDT超时溢出复位。PIC16F73片内集成有“上电复位”POR电路,对于一般应用,只要把MCLR引脚接高电位即可。在正常工作或休眠状态下用MCLR复位,只需在MCLR引脚上加一按键瞬间接地即可。第五章 软件设计5.1 软件流程报警器软件设计主要分为:主程序(报警器初始化、键控和解码);报警器中断处理程序。主程序这一部分主要完成对各中断入口的设定,对各锁定单元和报警存放单元的初始化,设定特殊的标志值及对按键的中断处理。主程序设计框图5.1所示。开始程序初始化等待按键按键N软件解码Y结束吗?NY结束 图5.1 程序主流程图报警器中断处理程序防盗报警器的处理程序采用时间中断查询处理,每一次时间中断,仅是去查询各种控制标志位,根据它的状态来控制各路输出。程序没有采用有循环处理的方式,所以控制未结束时,不能清除控制标志位,仅是复位现场,等待下一次时间中断,再判断是否控制结束。该报警器安装在汽车方向盘上。安装好后,动报警器,报警器自动延迟2030s 开始工作,便让使用人有足够的时间锁好门离开汽车。延时后报警器进入值守工作状态,但车门被打开或窗玻璃被敲碎,动传感器检测到信号,时20s开始报警。延时的目的是使车主在开门进入车内能关闭报警器,免误报警。系统软件流程设计如图5.2所示。开始现场保护车辆受撞击?时间中断N检测刹车N检测车门开关状态提示设防自动设防N提示设防处理Y自动设防处理Y置撞击标志位新按键按键功能处理Y撞击报警警?N报警处理Y寻车N寻车处理Y防抢N防抢处理Y引擎控制N控制引擎YLED显示控制恢复现场返回Y图5.2 系统程序框图5.2 软件详细设计图5.3 系统功能框图该程序设计有设防、撤防、静音、求救四种防盗方式。当按下设防键时,方向灯闪亮初始化完成,自动进入设防状态。如果汽车受到震动或尾门有人想要打开时,喇叭会长时间报警达到警告作用,直到车主看到汽车是不是故意被震动此时按下撤防键时才停止报警。为的避免误报,当汽车第一次受到震动后,在25秒内车门没打开或没被触发,防盗系统会视为误解除,会自动回复到原防盗警戒状态。当车主需要使有汽车时,可以按一下撤防键此时方向灯闪亮,喇叭不会长时间报警。按下静音防盗键时,方向灯闪亮,此时汽车处于静音防盗工作状态,软件会自动检查汽车有无受到震动是否需要报警。同设防工作状态要样当汽车第一次受到震动后,在25秒内车门没打开或没被触发,防盗系统会视为误解除,会自动回复到原防盗警戒状态。如果在车辆较多的场合想要很快找到自己的汽车这也不是什么困难的事情,只要按一寻车键你就会快速找到自己的汽车。还有一种情况就是如果自己的汽车被盗,为了能很快找到被盗的汽车此时按下寻车键汽车喇叭会长时间报警并且LED警示灯同步闪亮。有了这四种防盗作用,车主会比较放心的停放自己的汽车,不用担心汽车会被盗。以下分别介绍这几种防盗系统的程序设计。-定义缓冲区-P_TMP_HEQU 2CHP_TMP_L EQU 2DHSUMHEQU 2EHSUMLEQU 2FHT1_LED EQU 32H ;LED计时T1_LOCK EQU 33H ;锁门计时T1_SPEAK EQU 34H ;喇叭计时T1_LIGHT EQU 35H ;方向灯计时-计数器-LED_COUNTEQU 38H ;LED闪烁次数LOCK_COUNTEQU 39H ;锁门次数SPEAK_COUNTEQU 3AH ;喇叭报警次数LIGHT_COUNTEQU 3BH ;方向灯闪烁次数VIBRATION_COUNT EQU 3CH ;振动次数FAN_COUNTH EQU 48H ;计时,TMR2中加1FAN_COUNTL EQU 49H AD_COUNTH EQU 4AH ;AD计数,TMR2中加1,AD_COUNTL EQU 4BH LED_COUNT EQU 4CH ;LED闪烁次数-状态标志寄存器-STATE_FLAGEQU 5AH ;状态标志寄存器F_SET EQU 0 ;设置标志F_RELEASE EQU 1 ;解除标志F_WHISHT_SET EQU 2 ;静音设置标志F_FIND_CAR EQU 3 ;寻车标志F_HELP EQU 4 ;求救标志F_ALL_RELEASE EQU 5 ;完全解除标志-动作标志寄存器-STATE_FLAGEQU 5BH ;动作标志寄存器F_LOCK EQU 0 ;锁门动作标志F_SPEAK EQU 1 ;喇叭动作标志F_LIGHT EQU 2 ;方向灯动作标志-设置标志寄存器-STATE_FLAGEQU 5CH ;设置标志寄存器F_PROMPT_AGAINST_THEFT EQU 0F_AUTO_AGAINST_THEFT EQU 1F_ELEC_LOCK EQU 2-端口定义-SETTING EQU 0 ;RA.0 设防端口RELEASE EQU 1 ;RA.1 解除端口WHISHT_SET EQU 2 ;RA.2 静音设防端口HELP_FINDEQU 3 ;RA.3 寻车求救端口EXIGENCE_RELEASE EQU 4 ;RA.4 紧急解除端口VIBRATION_IN EQU 5 ;RA.5 振动输入端口INTEQU 0 ;RB.0 中断输入,用于无线接收LED EQU 1 ;RB.1 LED灯BACK_BOXEQU 2 ;RB.2 尾门负触发SOUND_RELAYEQU 3 ;RB.3 报警喇叭继电器LIGHT_RELAYEQU 4 ;RB.4 方向灯继电器OPEN_RELAYEQU 5 ;RB.5 开中控锁继电器CLOSE_RELAYEQU 6 ;RB.6 关中控锁继电器BOX_RELAYEQU 7 ;RB.7 行李箱继电器PROMPT_THEFT EQU 0 ;RC.0 跳线,提示/不提示 开启防盗AUTO_SET EQU 1 ;RC.1 跳线,自动/不自动 开启防盗AIR_OR_ELEC EQU 2 ;RC.2 跳线,气动/电动 锁ACC_12V EQU 3 ;RC.3 接钥匙锁打开后12V电源CAR_DOOR EQU 4 ;RC.4 边门检测BACK_DOOR EQU 5 ;RC.5 尾门检测TX EQU 6 ;RC.6 串口发送RX EQU 7 ;RC.7 串口接收5.2.1 声光防盗当有盗车贼想要接近或实施犯罪的时候,声光防盗会启动。首先,触发声光报警电路汽车喇叭会通过声光报警器发出提示“BI”的响声。其次,汽车转向灯也会同步的闪亮。此时车主手上的遥控装置会提示车主自己的汽车现在受到振动,提示车主检查自己的汽车现在是否安全。按一下设定键,车门上锁,方向灯闪一下,喇叭发出“BI”一声提示,LED警灯闪亮,自动进入声光防盗警戒状态。相关代码分析如下:SET_AGAINST_THEFT BSF RB, CLOSE_RELAY ;锁门 MOVLW D1 MOVWF LOCK_COUNT BSF ACT_FLAG,F_LOCK ;锁门标志置位,主程序可以进入 BSF RB, SOUND_RELAY ;喇叭报警 MOVLW D1 MOVWF SPEAK_COUNT BSF ACT_FLAG,F_SPEAK ;喇叭标志置位,主程序可以进入 BSF RB, LIGHT_RELAY ;方向灯亮 MOVLW D2 MOVWF LIGHT_COUNT BSF ACT_FLAG,F_LIGHT ;方向灯标志置位,主程序可以进入 BSF T1CON,TMR1ON ;打开定时器1 BCF STATE_FLAG,F_SET ;设置标志位复位,主程序不能进入RETURN5.2.2 静音防盗静音防盗主要使用在需要安静禁止汽车发出刺激性的声响的场合。静音防盗是在盗车贼实施犯罪的时候,会触发静音防盗电路,此时汽车喇叭不会发出响声,但汽车方向灯会不停的闪亮。汽车会通过无线电把信号发送到车主手上的遥控装置,此时车主可以根据实际情况动处理。 按一下静音键,车门上锁,方向灯闪一下,LED警示灯闪亮,自动进入静音防盗警戒状态。相关代码分析如下: WHISHT_SET BSF RB, CLOSE_RELAY ;锁门 MOVLW D1 MOVWF LOCK_COUNT BSF ACT_FLAG,F_LOCK ;锁门标志置位,主程序可以进入 BCF RB, SOUND_RELAY ;喇叭不报警 BSF RB, LIGHT_RELAY ;方向灯亮 MOVLW D1 MOVWF LIGHT_COUNT BSF ACT_FLAG,F_LIGHT ;方向灯标志置位,主程序可以进入 BSF T1CON,TMR1ON ;打开定时器1 BCF STATE_FLAG,F_WHISHT_SET ;静音标志位复位,主程序不能进入RETURN5.2.3 触发报警
展开阅读全文