某某工学院毕业设计电动车遥控报警装置设计正文终稿.docx
- 文档编号:1670207
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:49
- 大小:244.16KB
某某工学院毕业设计电动车遥控报警装置设计正文终稿.docx
《某某工学院毕业设计电动车遥控报警装置设计正文终稿.docx》由会员分享,可在线阅读,更多相关《某某工学院毕业设计电动车遥控报警装置设计正文终稿.docx(49页珍藏版)》请在冰点文库上搜索。
某某工学院毕业设计电动车遥控报警装置设计正文终稿
1引言
1.1研究背景及研究意义
随着科学技术迅猛发展,人民的生活水平不断提高,电动自行车已经进入人们的生活中,并且进一步改善了人们的出行方便。
电动自行车以电能为能源,没有废气排放,噪音小又不污染环境,骑行省力,经济适用,通用性很广,上牌手续方便,政府大力支持。
目前,摩托车和燃油助力车因污染环境而受到限制。
国家出台的燃油含税政策,给电动自行车带来了更多的福音,因此电动自行车成为工薪阶层的最佳选择,受到越来越多人的青睐。
然而就在电动自行车进入千家万户的同时,其被盗率连连攀升,给使用者带来了不小的经济损失。
为解决广大电动自行车使用者的担忧,急需设计出一套基于单片机的关于电动自行车无线防盗报警器方案,给广大使用者在爱车上装一把“安心锁”。
现在市场上有各式各样的电动车防盗报警装置,一些高档智能报警器由于价格过高,用户不愿意为售价仅两三千的电动车去进行配置,进而得不到推广;另外,也有价格适中且质量可靠的防盗报警器出售,但此类报警器的报警喇叭一般都只是安装在电动车车身上。
完成警情传递任务的主要部件都是震动电感器,因其灵敏度较高,容易致使一些外界的环境因素,如刮风打雷,儿童嬉闹等使其动作并触发报警器进行报警,这种由于误报警带来噪音污染的情况常常造成不必要的扰民。
种种原因使得大部分电动车用户并没有为它们的车去配备防盗报警装置,导致一些不法分子有机可乘,电动车被盗现象日益严重,“电动自行车保险”也因出险率太高而销声匿迹。
报警装置作为电动车一个重要的附属配件,其防盗守护的重要作用众所周知。
所以,一种低价位、高品质,且适合于普通用户的防盗报警器将是电动自行车市场翘首以盼的。
1.2国内外研究现状及分析
为充分掌握电动车市场防盗报警类产品的现状及其发展动态,我们进行了一番市场调研和文献搜索,从商家提供的电动车年销量和报警器年销量数据的不完全统计,现在购买电动车的用户同时配备防盗报警装置的约占98%。
目前市场上出售的电动车防盗报警装置基本上分如下几类:
(1)防盗报警锁,将报警器与车锁集成,一旦内部震动电感器感知到车身震动,就会立即触发启动锁上的报警喇叭报警。
这种防盗报警锁使用较方便,售价也较为大家接受,它一般在50元左右,如杰达KL02、新奇特FB-8224。
但用户反映使用这种防盗报警锁,发生误报的频率较高,而且发现如是误报还得不到解除,同时在锁紧状态下无法人为撤防,造成了不必要的干扰。
(2)普通防盗报警器,与防盗报警锁相比,这类报警装置体积较小又可独立安装在电动车上较为隐蔽的地方,不易被发现进而拆卸。
其布防、撤防都是通过报警器外壳上同一开关按钮实现,探测警情信号的也是各种类型的震动电感器,电源一般是使用两节7号电池,性能较稳定,价格在60元左右。
不过一旦将其安装在车身较为隐蔽的地方,如车底等,车主启动布防和撤防时要按开关就很困难,不易操作;如果安装在方便车主启动开关的地方,此报警器很容易被盗贼发现而将其拆卸。
(3)遥控防盗报警器,由车载主机和手持遥控发射器组成,报警喇叭大多是只安装在车载主机上,遥控器作用主要是设防、撤防和启动报警功能,这相当于主机的一个无线遥控电源开关,如新奇特E-12,龙锐lr-007。
这类报警器是现在是电动车市场上的主流防盗产品,一般灵敏度较高,性能较稳定,报警声响可达到100分贝以上,可以满足一般电动车用户的需要,市场价格在80元左右。
且漏报率和故障率都较低,但是误报率很高,误报警噪音扰民现象严重。
(4)无线智能数字报警器,如荣高VA-2型、旭飞报警器。
这类防盗报警器大多采用微电脑技术,智能化程度高,除了能遥控设防撤防、寻车外,而且还具有遥控熄火、自动延时设防和智能记忆等功能。
这类产品设计合理、性能优越,但作为电动车的附属配件,它们的价格相对较高,一般要高于150元,普通用户难以接受,因而在电动车市场也就得不到推广。
电动自行车之所以能够走进千家万户,为广大消费者所青睐,一个很重要的原因就是其价格相对于摩托车和汽车要低很多,能被一般收入的家庭所接受。
因此,开发一种高性能、低价位的电动车防盗报警器是适合市场需要的,也是目前电动车用户这个消费群体给我们提出的一项艰巨而现实的任务。
2单片机语言简介
目前对于51系列的单片机,现有四种语言的支持,即PL/M、汇编、BASIC和C语言。
2.1BASIC语言
BASIC一般附在PC机上面,是初学编程的第一种语言。
一个新变量名定义在程序中作变量的使用,简单又易学,错误能在程序执行完之前显现出来。
BASIC由于逐行解释自然会很慢,每一行必须在执行时转换成机器的代码,需要花费很长时间才能做到实时性。
BASIC为了简化使用变量,所有变量都是使用浮点值。
BASIC是用于要求编程简单并且对于编程效率和运行速度要求不高的情况[1]。
2.2PL/M语言
PL/M是Intel从8080微处理器开始为它系列产品开发的编程语言。
它很像PASCAL,是一种结构化的语言,但是它使用关键字去定义结构[2]。
PL/M编译器好像汇编器一样可生成紧凑的代码。
PL/M总体来说是“高级汇编语言”,可以详细控制着代码生成。
但对于51系列,PL/M不支持复杂的算术运算、浮点变量无丰富库函数支持。
2.3汇编语言
51单片机汇编语言由于采用了助记符号编写程序,它比用机器语言的二进制代码编程要更方便,在一定程度上简化了编程过程。
汇编语言特点是用符号代替机器指令代码,并且助记符与指令代码一一对应,基本保留了机器语言的灵活性[2]。
使用汇编语言能够面向机器并较好地发挥机器的特性,得到质量较高的程序。
2.4单片机C语言的发展
C语言是一种源于编写UNIX操作系统的语言,它是一种结构化的语言,可以产生压缩代码。
C语言可进行许多机器级函数控制而不用汇编语言。
同汇编语言相比,有如下优点:
对单片机的指令系统并不要求了解,只要求对51的存储器结构有初步的了解,寄存器分配、不同存储器寻址及数据类型等细节可以由编译器管理。
程序有规范的结构,它可分为不同函数。
这种方式可使程序结构化,有让可变的选择与特殊操作组合在一起的能力,改善程序的可读性、编程及程序调试时间缩短,从而提高了效率。
C语言提供的库包含许多标准的子程序,其具有较强的数据处理能力,能将已编好的程序很容易地植入新程序,因为它拥有方便的模块化编程技术。
C语言作为一种方便的语言进而得到广泛支持。
C语言程序本身并不依赖于机器硬件系统,基本上不做修改便可根据单片机的不同而较快地移植过来[3]。
C语言是一种结构化的语言。
它层次清晰便于按模块化方式组织程序,又易于调试和维护。
C语言的表现能力和处理能力非常强。
它不仅具有丰富的运算符和数据类型,又便于实现各类复杂的数据结构。
它还可直接访问内存的物理地址,进行位(bit)一级的操作。
由于C语言实现了对硬件的编程操作,所以C语言集高级语言和低级语言的功能于一体,既可用于系统软件开发,也适合于应用软件开发。
此外C语言还具有效率高,可移植性强的特点。
因此它被广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
对于大多数51系列的单片机,使用C语言这样的高级语言与使用汇编语言相比具有如下一些优点:
(1)不需要了解处理器指令集,也不必了解存储器的结构。
(2)寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器寻址和数据类型等细节。
(3)指定操作的变量选择组合提高程序的可读性。
(4)可使用同人的思维更相近的关键字以及操作函数。
(5)同使用汇编语言编程相比,程序开发和调试时间缩短。
(6)C语言中的库文件提供许多标准例程,例如格式化输出、数据转化和浮点运算等。
(7)通过C语言可以实现模块化编程技术,从而可将已编制好的程序加入到新程序中去。
(8)C语言可移植性好且非常的普及,C语言编译器几乎适用于所有目标系统,已完成的软件项可以很容易地转化到其它处理器或环境中。
所有这些并不能说明汇编语言就没有立足之地,很多系统尤其是实时时钟系统都是用C语言和汇编语言联合编写成的。
对时钟要求严格时使用汇编语言是唯一方法。
此外,包括硬件接口的操作都应该用C语言编写。
C语言的特点就是可以使程序员尽量少的对硬件进行操作,它是一种功能性和结构性很强的语言。
3硬件方案设计
3.1硬件总体方案设计
电动车无线防盗报警器的总体方案设计是根据其功能和设计要求,从全局的角度,以系统的观点而进行整体方面的设计,主要包括无线收发模块设计,信号触发模块设计和报警电路模块设计等内容。
硬件总体方案设计框图如图3.1所示
AT89C51
单片机
信号触发模块
无线发送模块
无线接收模块
报警电路模块
图3.1总体框架结构体系
单片机引脚图如图3.2所示
图3.2单片机引脚图
其中单片机作为控制单元模块,震动电感作信号触发模块,采用远距离无线收发装置作无线收发模块,蜂鸣器作报警电路模块。
当单片机收到无线收发模块发出的预警信号后,进入预警状态,并让震动电感在收到外界震动影响后,接通电路使报警器报警,以此来威慑犯罪分子,达到保护电动自行车的目的。
3.2使用的主要芯片
根据系统的需要,选择AT89C51单片机作为核心的控制芯片,用震动电感作为所需的输入信号发生模块,用蜂鸣器组成报警电路。
用PT2262作为无线发送模块。
3.3主要芯片的介绍
3.3.1AT89C51
AT89C51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/记数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/记数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作直到下一个硬件复位[4]。
3.3.2PT2262
PT2262是一种CMOS工艺制造的低功耗低价位通用编码电路,PT2262最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441种地址的编码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。
3.3.3315MHz收发
DF数据发射的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm/度。
特别适合多发一收无线遥控及数据传输系统。
声表谐振器的频率稳定度仅次于晶体,而一般的LC震荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及震动也很难保证已调好的频点不会发生偏移[5]。
3.3.4MAX232
MAX232由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。
由于电脑串口RS232电平是-10V、+10V,一般的单片机应用系统的信号电压是TTL电+5V,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5VTTL/CMOS电平。
每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。
这些接收器具有1.3V的典型门限值及0.5V的典型迟滞,而且可以接收±30V的输入[6]。
所有的驱动器、接收器及电压发生器都可以在德州仪器公司的LinASIC元件库中得到标准单元。
MAX232的工作温度范围为0℃至70℃。
4系统软件部分
4.1软件部分总体设计
程序主要包括解码子程序、按键判断子程序、蜂鸣器发声处理子程序、震动检测子程序。
主流程图如图4.1所示
图4.1主程序流程图
(1)解码子程序:
由解码和解码后数据处理两部分组成。
它是软件部分的关键环节,是解码的核心部分。
(2)按键判断子程序:
解码后通过对按键的判断,判断发送出的信号要完成的功能,其中包括设防、静音设防、解除设防、寻车等功能。
(3)蜂鸣器发声处理子程序:
不同功能下发出不同的提示音。
(4)震动检测子程序:
这是由于电动车收到外部给予的震动信号而触发的一个中断子程序。
4.2各软件模块设计
4.2.1主程序模块
系统基于单片机运用KeiluVision4软件编程,使用的编程语言是C语言。
KeiluVision4是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,它还能嵌入汇编,可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,可以更加贴近CPU本身,及其它的衍生产品。
C51已被完全集成到uVision4的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器[7]。
uVision4IDE可为它们提供单一而灵活的开发环境。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,能在很短的时间内就能学会使用keilC51来开发单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
主程序代码
#include
#include
#defineuCharunsignedChar
#defineuintunsignedint
unsignedCharReceive[3];//解码缓冲区:
Receive[0]:
A0A1A2A3;Receive[1]:
A4A5A6A7;Receive[2]:
D3D2D1D0
//Receive[x]:
xxxxxxxx代表4bit
//bitflag=0;//解码完成标志位
sbitRemPin=P3^2;//编码信号输入脚
unsignedCharRemDat=0x00;//解码后数据寄存器
bitremotekey.flag=0;
bitlock.flag=0;
sbitbeep=P2^5;
voidInitial0();//外部中断0初始化函数声明
voidInitial1();//外部中断1初始化函数声明
bitFINT1;//外部中断1标志
voidint_1();//外部中断1函数声明
voidint_0();//外部中断0函数声明
voidmain()
{
Initial0();//中断0系统初始化
Initial1();//中断1系统初始化
if(remotekey.flag)//解码按键标志为1
{
remotekey.flag=0;
switch(remotekey_value)//解码结果判断
{
CaseKEY_LOCK:
lock.flag=1;
play
(1);//蜂鸣器响一声
//break;
return;
CaseKEY_QUIET:
//system_state_Change(State,GUARD_QUIET,1);
//break;
return;
CaseKEY_FIND:
if(lock.flag)playmusic();//播放生日快乐歌,提示用户
//break;
return;
CaseKEY_UNLOCK:
lock.flag=0;//蜂鸣器响一声
play
(1);
return;
}
if(lock_flag&FINT1)//在设防的情况下,如果震动电感检测到车身震动则蜂鸣器发出报警
{
uinti;
FINT1=0;
for(i=1;i<3;i++)
{
play
(2);
delay(1000);
}
}
}
}
4.2.2解码及数据处理子程序模块
当2262的D0~D3引脚出现高电平时,2262便通过TXD脚输出相应的编码波形,每次发射时至少发射5组相同的编码波形,每组编码由同步头、两个字节宽度的地址码以及一个字节宽度的按键码这三部分构成。
图4.2是2262地址引脚全部悬空时按下D3时输出的一段波形。
地址码由2262的地址引脚的高、低、悬空3种状态确定,分别用“11”、“00”、“01”表示,按键码由4个按键输入引脚确定,共有15种组合。
图4.22262发出的一组完整波形
编码波形的周期由2262的外接震荡电阻决定,震荡电阻不同输出的编码波形的周期也不相同。
从图4.2中可以发现2262所发出的波形实是由“0码”、“1码”以及“同步头”3种基本波形构成,对2262的软件解码实际上也就是对3种基本波形的识别。
图4.3是这3种基本波形的放大图。
从图4.3可以发现无论是“0码”还是“1码”都是从高电平开始并且其周期都是一样的为T,“0码”和“1码”的区别仅仅在于高电平的宽窄,“1码”时高电平是低电平的3倍,“0码”时情况相反,而同步头是一个周期较长的脉冲信号,其周期是8T,高电平时间和“0码”的一样。
在同步头中包含了两部分信息,一是告知了2262发码的波特率;二是告知编码的开始,正确的处理同步头就能正确地进行软件解码。
图4.3基本波形的放大图
在使用中,一般采用8位地址码和4位数据码,这时编码电路PT2262和单片机解码程序相对应,PT2262有三种状态可供选择:
悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端单片机的地址编码完全相同,才能配对使用,例如将发射机的PT2262的第2脚接地第3脚接正电源,其它引脚悬空,那么接收机单片机相应引脚接正电源,其它引脚悬空就能实现配对接收。
当两者地址编码完全一致时,接收机对应的D1~D4端输出约4V互锁高电平控制信号,同时VT端也输出解码有效高电平信号。
然后将这些信号加一级三极管放大,便可驱动继电器等负载进行遥控操纵。
设置地址码的原则是:
同一个系统地址码必须一致;不同的系统可以依靠不同的地址码加以区分。
本设计使用高低电平抽样比较法来判断接收到的是“0码”还是“1”码,如图4.4。
每个编码的解码从高电平开始,每隔一段延时对电平高低状态进行一次抽样,若持续为高则对寄存器C_HBIT进行一次加一,若变为低电平则认为高电平状态结束开始对低电平进行计数,结果保存在寄存器C_LBIT中,当电平状态从新回到高电平状态,则认为完成了一个码的接收,对C_HBIT、C_LBIT进行比较,若C_HBIT大于C_LBIT则认为收到是“1码”,C_HBIT小于C_LBIT则为“0码”。
图4.4高低电平抽样判断图
仅有对“0码”和“1码”的接收还不足以完成一次正确的解码,捕捉到了同步头才能保证解码的正确性,而在不知道编码的波特率的情况下是不能保证同步头的捕捉,因此必须先对2262发出的编码的波特率进行测量。
由图4.3可知在2262输出的编码中同步头的高电平时间和“0码”的高电平时间以及“1码”的低电平时间一样,从另外一个角度讲无论是“0码”、“1码”还是“同步头”中都包含了波特率的信息。
因此完整接收到一个“0码”、“1码”或者“同步头”就可以得到编码的波特率。
编码的波特率可以通过接收任意相连的两个码得到,由于检测波特率的程序进入的时间不确定,第一个码的高电平是否完全接收无法保证,把得到第一个码丢弃,把第二码中接收到的高、低电平的记数值进行比较,取较小的那个作为波特率的标准,把该记数值乘4,得到的结果就是1个T对应值C_BAUD,这个C_BAUD是用来捕捉编码中同步头的关键。
本文的解码方法中把同步头的捕捉放到了解码程序中,图4.4是解码的流程。
在每次进行计数加一后都把C_HBIT或C_LBIT与C_BAUD进行了一次比较,因为同步头的低电平时间宽度为7.75T远大于一个码的周期T,若C_LBIT大于C_BAUD则说明接收到的是同步头,而C_HBIT大于C_BAUD则说明接收到的是误码,都必须重新开始解码。
在接收到同步头后解码的正确率可达百分之百。
需要注意的是在对2262进行解码时必须要保证解码的时间窗口要大于一组完整的编码的时间。
这个时间窗口可以根据前面得到的波特率的记数值C_BAUD来计算,一个完整的编码要接收24码和一个同步头,既32T,按照最坏情况接收是从第二码开始来计算,要保证能够接收到一个完整的编码必须要63T,所以在程序中要给出一个宽度为63T的时间窗口来保证正确解码。
将解调部分接收的编码信号送入单片机的P3.2口,采用外部中断0对编码信号进行解码,解码部分流程图如图4.5所示
图4.5解码流程图
解码程序代码
/******************************************
*******描述:
对PT226的编码信号进行解码
*******PT2262的输出信号经三极管
*******反向后送入单片机的中断引脚
*******代码:
A0--A11中的每bit用2bit表示:
0码:
00;1码:
11
*******备注:
PT2262输出数据的顺序:
A0A1--A10A11+同步码+A0A1--A10A11+同步码,连续发四次
*******************************************/
//unsignedCharReceive[3];//解码缓冲区:
Receive[0]:
A0A1A2A3;Receive[1]:
A4A5A6A7;Receive[2]:
D3D2D1D0
//Receive[x]:
xxxxxxxx代表4bit
//bitflag=0;//解码完成标志位
//sbitRemPin=P3^2;//编码信号输入脚
/***************************************
*******函数名:
Initial0()
*******描述:
中断系统初始化
*******参数:
输入参数:
无
输出参数:
无
****************************************/
voidInitial0(void)
{
IT0=1;//外部中断0下降沿有效
EX0=1;//开外部中断0
EA=1;//开全局中断
}
/******************************************************
*******函数名:
INT_0()
*******描述:
外部中断0服务函数,实现对PT2262的解码
*******参数:
输入参数:
无
输出参数:
无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 某某 工学院 毕业设计 电动车 遥控 报警装置 设计 正文
![提示](https://static.bingdoc.com/images/bang_tan.gif)