1、 毕 业 设 计 ( 论 文 ) 第 1 页 共 49 页1 引言 1.1 研究背景及研究意义随着科学技术迅猛发展,人民的生活水平不断提高,电动自行车已经进入人们的生活中,并且进一步改善了人们的出行方便。电动自行车以电能为能源,没有废气排放,噪音小又不污染环境,骑行省力,经济适用,通用性很广,上牌手续方便,政府大力支持。目前,摩托车和燃油助力车因污染环境而受到限制。国家出台的燃油含税政策,给电动自行车带来了更多的福音,因此电动自行车成为工薪阶层的最佳选择,受到越来越多人的青睐。然而就在电动自行车进入千家万户的同时,其被盗率连连攀升,给使用者带来了不小的经济损失。为解决广大电动自行车使用者的担忧
2、,急需设计出一套基于单片机的关于电动自行车无线防盗报警器方案,给广大使用者在爱车上装一把“安心锁” 。现在市场上有各式各样的电动车防盗报警装置,一些高档智能报警器由于价格过高,用户不愿意为售价仅两三千的电动车去进行配置,进而得不到推广;另外,也有价格适中且质量可靠的防盗报警器出售,但此类报警器的报警喇叭一般都只是安装在电动车车身上。完成警情传递任务的主要部件都是震动电感器,因其灵敏度较高,容易致使一些外界的环境因素,如刮风打雷,儿童嬉闹等使其动作并触发报警器进行报警,这种由于误报警带来噪音污染的情况常常造成不必要的扰民。种种原因使得大部分电动车用户并没有为它们的车去配备防盗报警装置,导致一些不
3、法分子有机可乘,电动车被盗现象日益严重, “电动自行车保险”也因出险率太高而销声匿迹。报警装置作为电动车一个重要的附属配件,其防盗守护的重要作用众所周知。所以,一种低价位、高品质,且适合于普通用户的防盗报警器将是电动自行车市场翘首以盼的。1.2 国内外研究现状及分析为充分掌握电动车市场防盗报警类产品的现状及其发展动态,我们进行了一番市场调研和文献搜索,从商家提供的电动车年销量和报警器年销量数据的不完全统计,现在购买电动车的用户同时配备防盗报警装置的约占 98。目前市场上出售的电动车防盗报警装置基本上分如下几类:(1)防盗报警锁,将报警器与车锁集成,一旦内部震动电感器感知到车身震动,毕 业 设
4、计 ( 论 文 ) 第 2 页 共 49 页就会立即触发启动锁上的报警喇叭报警。这种防盗报警锁使用较方便,售价也较为大家接受,它一般在 50 元左右,如杰达 KL02、新奇特 FB8224。但用户反映使用这种防盗报警锁,发生误报的频率较高,而且发现如是误报还得不到解除,同时在锁紧状态下无法人为撤防,造成了不必要的干扰。(2)普通防盗报警器,与防盗报警锁相比,这类报警装置体积较小又可独立安装在电动车上较为隐蔽的地方,不易被发现进而拆卸。其布防、撤防都是通过报警器外壳上同一开关按钮实现,探测警情信号的也是各种类型的震动电感器,电源一般是使用两节 7 号电池,性能较稳定,价格在 60 元左右。不过一
5、旦将其安装在车身较为隐蔽的地方,如车底等,车主启动布防和撤防时要按开关就很困难,不易操作;如果安装在方便车主启动开关的地方,此报警器很容易被盗贼发现而将其拆卸。(3)遥控防盗报警器,由车载主机和手持遥控发射器组成,报警喇叭大多是只安装在车载主机上,遥控器作用主要是设防、撤防和启动报警功能,这相当于主机的一个无线遥控电源开关,如新奇特 E-12,龙锐 lr-007。这类报警器是现在是电动车市场上的主流防盗产品,一般灵敏度较高,性能较稳定,报警声响可达到 100 分贝以上,可以满足一般电动车用户的需要,市场价格在 80 元左右。且漏报率和故障率都较低,但是误报率很高,误报警噪音扰民现象严重。(4)
6、无线智能数字报警器,如荣高 VA-2 型、旭飞报警器。这类防盗报警器大多采用微电脑技术,智能化程度高,除了能遥控设防撤防、寻车外,而且还具有遥控熄火、自动延时设防和智能记忆等功能。这类产品设计合理、性能优越,但作为电动车的附属配件,它们的价格相对较高,一般要高于 150 元,普通用户难以接受,因而在电动车市场也就得不到推广。电动自行车之所以能够走进千家万户,为广大消费者所青睐,一个很重要的原因就是其价格相对于摩托车和汽车要低很多,能被一般收入的家庭所接受。因此,开发一种高性能、低价位的电动车防盗报警器是适合市场需要的,也是目前电动车用户这个消费群体给我们提出的一项艰巨而现实的任务。2 单片机语
7、言简介目前对于 51 系列的单片机,现有四种语言的支持,即 PL/M、汇编、BASIC 和C 语言。毕 业 设 计 ( 论 文 ) 第 3 页 共 49 页2.1 BASIC 语言BASIC 一般附在 PC 机上面,是初学编程的第一种语言。一个新变量名定义在程序中作变量的使用,简单又易学,错误能在程序执行完之前显现出来。BASIC 由于逐行解释自然会很慢,每一行必须在执行时转换成机器的代码,需要花费很长时间才能做到实时性。BASIC 为了简化使用变量,所有变量都是使用浮点值。BASIC是用于要求编程简单并且对于编程效率和运行速度要求不高的情况 1。2.2 PL/M 语言PL/M 是 Intel
8、 从 8080 微处理器开始为它系列产品开发的编程语言。它很像PASCAL,是一种结构化的语言,但是它使用关键字去定义结构 2。PL/M 编译器好像汇编器一样可生成紧凑的代码。PL/M 总体来说是“高级汇编语言” ,可以详细控制着代码生成。但对于 51 系列,PL/M 不支持复杂的算术运算、浮点变量无丰富库函数支持。2.3 汇编语言51 单片机汇编语言由于采用了助记符号编写程序,它比用机器语言的二进制代码编程要更方便,在一定程度上简化了编程过程。汇编语言特点是用符号代替机器指令代码,并且助记符与指令代码一一对应,基本保留了机器语言的灵活性 2。使用汇编语言能够面向机器并较好地发挥机器的特性,得
9、到质量较高的程序。2.4 单片机 C 语言的发展C 语言是一种源于编写 UNIX 操作系统的语言,它是一种结构化的语言,可以产生压缩代码。C 语言可进行许多机器级函数控制而不用汇编语言。同汇编语言相比,有如下优点:对单片机的指令系统并不要求了解,只要求对 51 的存储器结构有初步的了解,寄存器分配、不同存储器寻址及数据类型等细节可以由编译器管理。程序有规范的结构,它可分为不同函数。这种方式可使程序结构化,有让可变的选择与特殊操作组合在一起的能力,改善程序的可读性、编程及程序调试时间缩短,从而提高了效率。C 语言提供的库包含许多标准的子程序,其具有较强的数据处理能力,能将已编好的程序很容易地植入
10、新程序,因为它拥有方便的模块化编程技术。C 语言作为一种方便的语言进而得到广泛支持。C 语言程序本身并不依赖于机器硬件系统,基本上不做修改便可根据单片机的不同而较快地移植过来 3。毕 业 设 计 ( 论 文 ) 第 4 页 共 49 页C 语言是一种结构化的语言。它层次清晰便于按模块化方式组织程序,又易于调试和维护。C 语言的表现能力和处理能力非常强。它不仅具有丰富的运算符和数据类型,又便于实现各类复杂的数据结构。它还可直接访问内存的物理地址,进行位(bit)一级的操作。由于 C 语言实现了对硬件的编程操作,所以 C 语言集高级语言和低级语言的功能于一体,既可用于系统软件开发,也适合于应用软件
11、开发。此外 C语言还具有效率高,可移植性强的特点。因此它被广泛地移植到了各类各型计算机上,从而形成了多种版本的 C 语言。对于大多数 51 系列的单片机,使用 C 语言这样的高级语言与使用汇编语言相比具有如下一些优点:(1)不需要了解处理器指令集,也不必了解存储器的结构。(2)寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器寻址和数据类型等细节。(3)指定操作的变量选择组合提高程序的可读性。(4)可使用同人的思维更相近的关键字以及操作函数。(5)同使用汇编语言编程相比,程序开发和调试时间缩短。(6)C 语言中的库文件提供许多标准例程,例如格式化输出、数据转化和浮点运算等。(7)通过
12、 C 语言可以实现模块化编程技术,从而可将已编制好的程序加入到新程序中去。(8)C 语言可移植性好且非常的普及,C 语言编译器几乎适用于所有目标系统,已完成的软件项可以很容易地转化到其它处理器或环境中。所有这些并不能说明汇编语言就没有立足之地,很多系统尤其是实时时钟系统都是用 C 语言和汇编语言联合编写成的。对时钟要求严格时使用汇编语言是唯一方法。此外,包括硬件接口的操作都应该用 C 语言编写。C 语言的特点就是可以使程序员尽量少的对硬件进行操作,它是一种功能性和结构性很强的语言。3 硬件方案设计3.1 硬件总体方案设计电动车无线防盗报警器的总体方案设计是根据其功能和设计要求,从全局的角度,以
13、系统的观点而进行整体方面的设计,主要包括无线收发模块设计,信号触发毕 业 设 计 ( 论 文 ) 第 5 页 共 49 页模块设计和报警电路模块设计等内容。硬件总体方案设计框图如图 3.1 所示图 3.1 总体框架结构体系单片机引脚图如图 3.2 所示图 3.2 单片机引脚图其中单片机作为控制单元模块,震动电感作信号触发模块,采用远距离无线收发装置作无线收发模块,蜂鸣器作报警电路模块。当单片机收到无线收发模块发出的预警信号后,进入预警状态,并让震动电感在收到外界震动影响后,接通电路使报警器报警,以此来威慑犯罪分子,达到保护电动自行车的目的。3.2 使用的主要芯片根据系统的需要,选择AT89C5
14、1单片机作为核心的控制芯片,用震动电感作为AT89C51单片机无线接收模块 无线发送模块报警电路模块信号触发模块毕 业 设 计 ( 论 文 ) 第 6 页 共 49 页所需的输入信号发生模块,用蜂鸣器组成报警电路。用PT2262作为无线发送模块。3.3 主要芯片的介绍3.3.1 AT89C51AT89C51 提供以下标准功能:4K 字节 Flash 闪速存储器, 128 字节内部RAM,32 个 I/O 口线,两个 16 位定时/记数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C51 可降至 0HZ 的静态逻辑操作,并支持两种软件可选的节电工作模式
15、。空闲方式停止 CPU 的工作,但允许RAM,定时/ 记数器,串行通信口及中断系统继续工作。掉电方式保存 RAM 中的内容,但震荡器停止工作直到下一个硬件复位 4。3.3.2 PT2262 PT2262 是一种 CMOS 工艺制造的低功耗低价位通用编码电路,PT2262 最多可有 12 位(A0- A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供 531441 种地址的编码,PT2262 最多可有 6 位(D0-D5)数据端管脚,设定的地址码和数据码从 17 脚串行输出,可用于无线遥控发射电路。3.3.3 315MHz 收发 DF数据发射的工作频率为315M,采用声表谐振器S
16、AW 稳频,频率稳定度极高,当环境温度在2585度之间变化时,频飘仅为3ppm/度。特别适合多发一收无线遥控及数据传输系统。声表谐振器的频率稳定度仅次于晶体,而一般的LC 震荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及震动也很难保证已调好的频点不会发生偏移 5。3.3.4 MAX232 MAX232 由德州仪器公司(TI)推出的一款兼容 RS232 标准的芯片。由于电脑串口 RS232 电平是-10V 、+10V ,一般的单片机应用系统的信号电压是 TTL 电+5V,MAX232 就是用来进行电平转换的,该器件包含 2 驱动器、2 接收器和一个电压发生器电路提供 TIA/EI
17、A-232-F 电平。该器件符合 TIA/EIA-232-F 标准,每一个接收器将 TIA/EIA-232-F 电平转换成 5V TTL/CMOS 电平。每一个发送器将 TTL/CMOS 电平转换成 TIA/EIA-232-F 电平。这些接收器具有 1.3V 的典型门限值及 0.5V 的典型迟滞,而且可以接收30V 的输入 6。所有的驱动器、接收器及电压发生器都可以在德州仪器公司的 LinASIC 元件库中得到标准单元。MAX232 的工作温度范围为毕 业 设 计 ( 论 文 ) 第 7 页 共 49 页0至 70。4 系统软件部分4.1 软件部分总体设计程序主要包括解码子程序、按键判断子程序
18、、蜂鸣器发声处理子程序、震动检测子程序。主流程图如图4.1所示开始系统初始化无线信号?读入无线信号解除设防信号?设防信号?设防成功触发中断子程序设防成功?寻车信号?音乐提示子程序YN解除设防成功YNYNYNNY图4.1 主程序流程图毕 业 设 计 ( 论 文 ) 第 8 页 共 49 页(1)解码子程序:由解码和解码后数据处理两部分组成。它是软件部分的关键环节,是解码的核心部分。(2)按键判断子程序:解码后通过对按键的判断,判断发送出的信号要完成的功能,其中包括设防、静音设防、解除设防、寻车等功能。(3)蜂鸣器发声处理子程序:不同功能下发出不同的提示音。(4)震动检测子程序:这是由于电动车收到
19、外部给予的震动信号而触发的一个中断子程序。4.2 各软件模块设计4.2.1 主程序模块系统基于单片机运用 Keil uVision4 软件编程,使用的编程语言是 C 语言。Keil uVision4 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,使用接近于传统 C 语言的语法来开发,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,它还能嵌入汇编,可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51 标准 C 编译器为 8051 微控制器的软件开发提供了 C
20、语言环境,同时保留了汇编代码高效,快速的特点。C51 编译器的功能不断增强, 可以更加贴近CPU 本身,及其它的衍生产品。C51 已被完全集成到 uVision4 的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器 7。uVision4 IDE 可为它们提供单一而灵活的开发环境。Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面,能在很短的时间内就能学会使用 keil C51 来开发单片机应用程序 。 另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目标代码效率非常之高,多数语句生
21、成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。主程序代码#include #include /方便调用_nop_();做延时用; #define uChar unsigned Char#define uint unsigned int毕 业 设 计 ( 论 文 ) 第 9 页 共 49 页unsigned Char Receive3 ; /解码缓冲区:Receive0:A0 A1 A2 A3 ; Receive1:A4 A5 A6 A7 ; Receive2: D3 D2 D1 D0/Receivex:xx xx xx xx 代表 4bit/bit flag = 0 ;
22、 /解码完成标志位sbit RemPin = P32 ; /编码信号输入脚unsigned Char RemDat = 0x00 ; /解码后数据寄存器bit remotekey.flag=0;bit lock.flag=0;sbit beep=P25;void Initial0(); /外部中断 0 初始化函数声明void Initial1(); /外部中断 1 初始化函数声明bit FINT1; /外部中断 1 标志 void int_1(); /外部中断 1 函数声明void int_0(); /外部中断 0 函数声明void main()Initial0( ); /中断 0 系统初始化
23、Initial1( ); /中断 1 系统初始化if(remotekey.flag) /解码按键标志为 1毕 业 设 计 ( 论 文 ) 第 10 页 共 49 页remotekey.flag=0;switch(remotekey_value)/解码结果判断Case KEY_LOCK:lock.flag=1; play(1); /蜂鸣器响一声/break;return ;Case KEY_QUIET:/ system_state_Change(State,GUARD_QUIET,1);/break;return ;Case KEY_FIND:if(lock.flag) playmusic(); /播放生日快乐歌,提示用户/break;return ;Case KEY_UNLOCK:lock.flag=0; /蜂鸣器响一声play(1);return ; if(lock_flag