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