毕业设计(论文)基于AT89C51单片机的红外遥控防盗密码锁设计_第1页
毕业设计(论文)基于AT89C51单片机的红外遥控防盗密码锁设计_第2页
毕业设计(论文)基于AT89C51单片机的红外遥控防盗密码锁设计_第3页
毕业设计(论文)基于AT89C51单片机的红外遥控防盗密码锁设计_第4页
毕业设计(论文)基于AT89C51单片机的红外遥控防盗密码锁设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录第一章 绪论1.1摘要31.2引言31.3 at89c51单片机概述41.4 at89c51引脚图4第二章 系统的设计2.1系统结构及原理52.2密码锁基本工作原理52.3红外遥控系统52.4遥控发射器及其编码62.5 tosp1738接收器9第三章 eepromc存贮器at24c02 的读写3.1 i2c原理图103.2 i2c总线特点103.3 i2c总线工作原理113.3.1管脚说明113.3.2总线的构成及信号类型113.4总线基本操作123.4.1总线的时序顺序123.4.2控制字节133.4.3写操作133.4.4读操作133.5红外遥控密码锁原理图14第四章 程序设计4.1程

2、序流程图154.2红外遥控密码锁程序16结论22参考文献23致谢24第一章 绪论1.1摘要本系统采用单片机at89c51作为本设计的核心元件,利用红外线遥控原理和单片机串行发射、接收等功能而设计的一款由遥控开锁的电子密码锁。通过遥控器发射信号,由cpu进行解码,与原有的数据进行比对,完全正确后,发出解锁信号,解锁之后进行密码改写,按下修改键之后输入新的密码数据,密码数据存放在24c02存储芯片中,每次进行数据比对都必须从里面提取数据。关键词:单片机 红外 密码 at24c02 1.2引言在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来

3、解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分

4、析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、ic卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,ic卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。针对这种情况,本文设计了一种红外遥控密码锁,它具有安全可靠、 成本低廉、连接方便、简单易用、结构紧凑等特点。红外线遥控是目前使用最广泛的一种通信和遥控手段

5、。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。1.3 at89c51功能概述 at89c51提供以下标准功能:4k字节flash闪速储存,128字节内部ram,32个i/o口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,at89c51可降至0hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止cpu的工作,但

6、允许ram,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存ram中的内容,但振荡器停止工作并禁止其他所有部件工作指导下一个硬件复位。1.4 at89c51引脚图图1第二章 系统的设计2.1系统结构及原理图2系统结构及原理图2.2密码锁基本工作原理 本系统由两部分组成,红外发射部分和红外接收部分,红外发射部分是采用普通的遥控发射器,接收部分由红外遥控一体接收头、发光二极管显示、报警器等组成。当红外遥控发射器有按键按下时,内部的编码电路将其转换为相对应的信号,从红外发射管发出,红外遥控一体接收头接收到信号后,将信号转换成相对应的脉冲信号。红外一体接收的信号接到解码单片机p3.2管脚,进行

7、解码,通过按键扫描,将所按下按键对应的数据存储到规定的单元中。本系统设置了8位密码。当输入8位密码后,输入的8为密码所对应的数据将与原先存放在eeprom存贮器at24c02内部的数据进行逐一的比较,当8位密码都正确以后cpu才会发解码信号,本次设计为了方便,解码信号为点亮一个发光二极管,密码错误时发出报警信号。本系统还设有一个密码改写键,当输入的密码完全正确发出解码信号后,才能进入密码改写,按下密码改写键,输入新的8位密码,新密码所对应的数据将取代原有密码的数据。当输入新密码后能够进行解锁。2.3红外遥控系统通用红外遥控系统由发射和接收两大部分组成,遥控器应用编码专用集成电路芯片来进行控制操

8、作,红外遥控发送/接收示意图如图3所示。发射部分包括矩阵键盘、编码调制、led红外发送器;接收部分包括光、电转换放大器、解调、解码电路。键盘编码调制led发射红外编码码光/电放大调解解码红外编码接收图3红外遥控发送/接收示意图2.4遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本nec的upd6121g(图4)组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。图4 upd6121g引脚图键盘与upd6121g芯片的连接如图5图5这种遥控码具有以下特征:采用脉宽调制的串

9、行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图6所示。图6上述“0”和“1”组成的32位二进制码经38khz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图7所示。upd6121g产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01h;后16位为8位操作码(功能码)及其反码。upd6121g最

10、多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间,图8为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组

11、成。代码格式(以接收代码为准,接收代码与发射代码反向)1. 位定义2.单发代码格式 3.连发代码格式 代码宽度算法:16位地址码的最短宽度:1.1216=18ms 16位地址码的最长宽度:2.24ms16=36ms 易知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)8=27ms所以32位代码的宽度为(18ms+27ms)(36ms+27ms)1 解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.5

12、6ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。2 根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。2.5 tsop1738接收器为了电路的简单实用,本实验选用一种集红外线接收和放大一体的一体化红外接收器tosp1738,只要接上电源就能完成从红外接收到输出与ttl电平信号兼容的所有工作,而且适用性强,能满足各种红外

13、遥控以及红外线数据传输的要求。如图9所示,接收器对外只有3个引脚:gnd、vs、out,与单片机连接十分简单方便。其中1脚为gud,接地(0v);2脚为vs接系统电源(+5v);3脚为out脉冲信号输出接口,直接接单片机的p3.2引脚。图 9 tosp1738实物图 tosp1738原理图 第三章 eeprom存贮器at24c02 的读写3.1 ic原理图图103.2 ic 总线特点ic(interintegrated circuit)总线是一种由philips 公司开发的两线式串行总线,用于连接微控制器及其外围设备。ic 总线最主要的优点是其简单性和有效性。由于接口直接接在组件之上,因此ic

14、 总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25 英尺,并且能够以10kbps 的最大传输速率支持40 个组件。ic 总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。3.3 ic 总线工作原理3.3.1 管脚说明 图 11图中ao、a1、a2是三条地址线,用于确定芯片的硬件地址。vcc和vss分别为正、负电源。sda为串行数据输入输出,scl为控制数输入的时钟。sda和scl需要和正电源间各接一个1ok的

15、电阻上拉。第7脚需要接地。这条双向ic 总线串行传送。scl为串行时钟线,at24c02从地址的前四位是固定的“1o1o”。它的低3位为a0、a1、a2,且是可编程的。在电路中3位地址输入引脚必须接vcc或vss,不能悬空。fc总线最多可挂8片at24c02,不需要附加任何硬件电路。它们很适合应用于一些非高速系统中。at24c02既可用于带ic 总线的单片机系统,也可用于不带fc 总线的单片机系统。图12 at24c02接线图3.3.2 总线的构成及信号类型ic 总线是由数据线sda 和时钟scl 构成的串行总线,可发送和接收数据。在cpu 与被控ic 之间、ic 与ic 之间进行双向传送,最

16、高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,ic 总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。cpu 发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。ic 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。开始信号:scl 为高电平时,

17、sda 由高电平向低电平跳变,开始传送数据。结束信号:scl 为高电平时,sda 由低电平向高电平跳变,结束传送数据。应答信号:接收数据的ic 在接收到8bit 数据后,向发送数据的ic 发出特定的低电平脉冲,表示已收到数据。cpu 向受控单元发出一个信号后,等待受控单元发出一个应答信号,cpu 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。ic 总线上传送的每个字节必须为8 位,启动和停止之间可传输的数据字节数不受限制。采用串行传送,首先传送最高位,每传送一个字节后必须跟一个应答位。主控器产生应答所需的时钟脉冲期间,发送器必须释放数据线

18、(sda 为高),以便接收器输出应答位。低电平为应答信号,高电平为非应答信号。非应答信号是当主控器作为接收器时,收到最后一个字节数据后,必须发送一个非应答信号给被控发送器,使被控发送器释放数据线,以便主控器发出停止信号,终止数据传送。当从器件不能再接收字节时也会出现非应答信号这种情况。3.4 总线基本操作3.4.1总线的时序顺序ic 规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(scl)控制总线的传输方向,并产生起始和停止条件。sda 线上的数据状

19、态仅在scl 为低电平的期间才能改变,scl 为高电平的期间,sda 状态的改变被用来表示起始和停止条件。如图13、14所示。图 13、14 ic总线数据传送信号3.4.2 控制字节在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,eeprom 一般应为1010),接着三位为片选,最后一位为读写位,当为1 时为读操作,为0 时为写操作。如图15所示。图15 控制字节配3.4.3 写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于字节写和页面写的地址、应答和数据传送的时序参见图16 和图17。图16 字节写图1

20、7 页面写3.4.4 读操作读操作有三种基本操作:当前地址读、随机读和顺序读。图18是当前地址读,图19是随机读,图20 给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9 个时钟周期不是“不关心”而是为了结束读操作,主机必须在第9 个周期间发出停止条件或者在第9 个时钟周期内保持sda 为高电平、然后发出停止条件。图18当前地址读图19 随机读图20 顺序读3.5红外密码锁原理图图21红外密码锁原理图第四章 程序的设计4.1 程序流程图图22解码主程序图23修改密码子程序4.2红外遥控密码锁程序红外解码程序:org 0000hljmp r_mainorg 0003hljmp inpu

21、t0r_main:mov 30h,#00h mov 31h,#00h mov 32h,#00h mov 33h,#00hsetb ea;允许外部int0申请中断setb ex0setb it0;下降沿申请中断有效sjmp $;中断服务子程序input0input0:clr ea push acc push pswru:mov r4,#9;读9次按键xu:lcall ir;调用解码子程序mov a,33h;取按键号d1:cjne a,#01h,d2;键盘扫描mov 1ch,#01hljmp du;存放按键号d2:cjne a,#02h,d3 mov 1ch,#02h ljmp dud3:cjne

22、 a,#03h,d4 mov 1ch,#03h ljmp dud4:cjne a,#04h,d5mov 1ch,#4hljmp dud5:cjne a,#05h,d6mov 1ch,#05hljmp dud6:cjne a,#06h,d7mov 1ch,#06hljmp dud7:cjne a,#07h,d8mov 1ch,#07hljmp dud8:cjne a,#08,d9 mov 1ch,#08hljmp dud9:cjne a,#09h,d0mov 1ch,#09hljmp dud0:cjne a,#00h,dok mov 1ch,#00hljmp dudok:cjne a,#10h,

23、ok1;确认键back0:mov 30h,#00h;清除遥控值单元,使连按失效 mov 31h,#00h mov 32h,#00h mov 33h,#00h pop psw pop acc setb ea retidu:mov r1,#50h;把8个按键号放入片内ram50h-57hmov a,1chmov r1,ainc r1djnz r4,tiao;判断按键是否按了9次ljmp ok1tiao:ljmp xuok1:lcall e2pr;按键号与储存密码对比mov a,50hcjne a,20h,alarm mov a,51hcjne a,21h,alarmmov a,52hcjne a,

24、22h,alarmmov a,53hcjne a,23h,alarmmov a,54hcjne a,24h,alarmmov a,55hcjne a,25h,alarmmov a,56h cjne a,26h,alarmmov a,57hcjne a,27h,alarmclr p0.1;解码成功led,点亮alarm:cpl p0.2;密码错误报警 lcall delay1 sjmp alarmdelay1:mov r4,#250;密码修改key:jnb p1.0,key1;改密码按键sjmp key key1:mov r4,#9 xu1:lcall irmov a,33hdd1:cjne a

25、,#01h,dd2;键盘扫描mov 1ch,#01hljmp du2;存放按键号dd2:cjne a,#02h,dd3 mov 1ch,#02h ljmp du2dd3:cjne a,#03h,dd4 mov 1ch,#03h ljmp du2dd4:cjne a,#04h,dd5mov 1ch,#4hljmp du2dd5:cjne a,#05h,dd6mov 1ch,#05hljmp du2dd6:cjne a,#06h,dd7mov 1ch,#06hljmp du2dd7:cjne a,#07h,dd8mov 1ch,#07hljmp du2dd8:cjne a,#08,dd9 mov

26、1ch,#08hljmp du2dd9:cjne a,#09h,dd0mov 1ch,#09hljmp du2dd0:cjne a,#00h,ddok mov 1ch,#00hljmp du2ddok:cjne a,#10h,ok2;确认键back1:mov 30h,#00h;清除遥控值单元,使连按失效 mov 31h,#00h mov 32h,#00h mov 33h,#00h pop psw pop acc setb ea retidu2:mov r1,#50h;把8个按键号放入片内ram50h-57hmov a,1chmov r1,ainc r1djnz r4,tiao1;判断按键是否按

27、了9次ljmp ok2tiao1:ljmp xu1ok2:lcall e2pw;写入新密码;解码子程序ir:mov r6,#10;9ms引导低电平状态查询次数ir_t9:lcall delay882;调用882us延时子程序 jb p3.2,ir_error;若p3.2引脚出现高电平则退出解码程序 djnz r6,ir_t9;重复10次,在9ms内检测引脚状态jnb p3.2,$;等待引导脉冲结束acall delay2400jnb p3.2,ir_goto;若为低电平,则表示是连发码信号lcall delay2400;延时4.8ms越过4.5ms读取32位数据码;读取数字信号mov r1,#

28、30h;设30h为读取数据存放起始ram地址mov r2,#4;从30h-33h共4个存放数据单元ir_32b:mov r3,#8;每个单元接收8位二进制数ir_8b:jnb p3.2,$;等待识别码第一位的高电平信号出现 lcall delay882;间隔882us判断输出信号的高低电平状态 mov c,p3.2;将p3.2引脚此时的电平状态0或1存入c中 jnc ir_8bit0;为低电平,是0转至ir_8bit0 lcall delay1000;否则是1,越过1.68ms继续查询下一信号ir_8bit0:mov a,r1 rrc a;将c中的0或1移入a中的最低位 mov r1,a;再将

29、a中的数据存入ram中 djnz r3,ir_8b;接收8位数据 inc r1;修订r1中ram的地址 djnz r2,ir_32b;接收完16位地址码和8位数据码和8位数据反码,;存放在30h/31h/32h/33h的ram中;数字信号识别与判断ir_goto:mov a,30h;按住遥控按键超过108ms将直接转至此处 cjne a,#00h,ir_error;判断30h中用户识别码1,不对则退出 mov a,31h cjne a,#01h,ir_error;判断31h中用户识别码2,不对则退出 mov a,32h;判断两个数据码是否相反 cpl a cjne a,33h,ir_error

30、;两个数据码不相反则退出 clr p0.0 ;led点亮,解码成功 lcall delay2400lcall delay2400 lcall delay2400setb p0.0;led熄灭 ret ir_error:mov 33h,#0ffh;无效码ffh送至键号单元 ret;882us延时子程序: 1.085x (202x4)+5)=882delay882:mov r7,#202tim0:nop nop djnz r7,tim0 ret;1000us延时子程序: 1.085x (229x4)+5)=999.285delay1000:mov r7,#229tim1:nop nop djnz

31、r7,tim1 ret;2400us延时子程序: 1.085x (245x9)+5)=2397.85delay2400:mov r7,#245tim2:nop nop nop nop nop nop nop djnz r7,tim2 ret;at24c02读写程序at24c02:sda bit p2.1scl bit p2.0ajmp initinit:clr rs0 clr rs1mov r1,#30hmov a,#0hmov r7,#08hmov r3,#0a0hmov r4,#50hloop: mov r1,ainc r1inc adjnz r7,loop;初始化存储器的值,将数据00h

32、07h发送到内部30h37h单元;写密码e2pw:mov p2,#0ffh;置p2.0, p2.1 均为1clr p2.1;发开始信号mov a,r3;送器件地址acall subsmov r4,#50hmov a,r4;送片内字节地址acall subs;调发送单字节子程序mov r1,#30hmov r7,#08h;at24c02一次可装载的字节数为8个again:mov a,r1acall subsinc r1djnz r7,again;发送8个字节到i2c模块clr p2.1;发送完8个数据后,先将sda拉低,准备发停止位acall delaysetb p2.0;将scl拉高acall

33、 delaysetb p2.1;在由主设备将sda拉高,送出停止位;读密码mov r7,#08h;再一次给r7赋值,准备读数据mov r3,0a1he2pr: mov r1,#30hmov p2,#0ffh;置p2.0, p2.1 均为1clr p2.1;发开始信号mov a,r3;发器件地址acall subs;调发送单字节子程序mov r4,#20h mov a,r4;送片内字节地址acall subsmov p2,#0ffh;置p2.0, p2.1 均为1clr p2.1;再发开始信号mov a,r3setb acc.0;发读命令acall subsmore: acall subr;进入读数据模式mov r1,ainc r1djnz r7,more;读8个字节到内部30h37hclr p2.1acall delaysetb p2.0acall delaysetb p2.1;送停止信号ajmp $subs: mov r0,#08h;发送单字节子程序loop1: clr p2.0;只有在scl为低电平时才能改变sda的值rlc amov p2.1 ,cnop setb p2.0 ;scl置1,保持数据acall delay;需要保持一段时间djnz r0,loop1;循环8次送8个位clr p2.0acall delayset

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论