1、学号: 常 州 大 学 毕业设计(论文)(2012届)题 目 学 生 学 院 专业班级 校内指导教师 专业技术职务 校外指导老师 专业技术职务 二一二年六月无线遥控密码锁设计摘要:随着大规模集成电路技术的发展,特别是单片机的问世,给人类生活带来了根本性的改变,单片机技术的应用产品已经走进了千家万户,其中出现了带微处理器的智能密码锁,它结构不仅简单,性能稳定,智能化程度高,而且系统实用性较强。本设计以STC89C51作为无线遥控密码锁装置的控制核心,配合1602液晶显示,矩阵键盘,BK2411无线模块等功能模块实现钥匙中包含的密码能够在远程核心处理机上进行鉴别认证及密码锁的开关控制等。加密软件设
2、计是基于IDEA算法的随机数挑战应答机制。关键字:无线遥控;密码锁;STC89C51;IDEA算法Wireless remote control lock designAbstract: With the development of LSI technology, especially the advent of the microcontroller, a fundamental change in human life, the application of SCM technology products into the household, with microprocessor s
3、mart password lock, structure it is not only simple, stable performance, high intelligence, and practical.The design the STC89C51 as the core of the control of the wireless remote control lock device, with 1602 LCD, matrix keyboard, wireless modules and other functions BK2411 module contains the pas
4、sword in the key switch control of the identification certification and lock in the remote core processor. The encryption software design is based on the IDEA algorithm random number challenge - response mechanism.Keywords: wireless remote control; Lock; STC89C51; IDEA algorithm目 录摘要:I目录III1引言11.1课题
5、的开发背景和意义11.2无线遥控密码锁的研究方向以及特点11.3课题任务22总体分析与总体方案设计32.1无线遥控密码锁的总体设计33硬件电路设计43.1主要控制芯片STC89C5143.2液晶显示电路53.3键盘模块73.4开锁电路83.5 AT24C02掉电存储单元的设计93.6复位电路103.7 BK2411无线模块114.软件设计144.1系统主程序设计144.2人机对话系统154.2.1 LCD显示154.2.2 密码修改154.2.3报警系统164.2.4掉电存储164.2.5 IDEA加密算法175.电路总体原理图225.1设计原理图225.2设计仿真图236.总结25参 考 文
6、 献26致 谢27附 录 A28- III -常州大学本科生毕业设计(论文)1引言1.1课题的开发背景和意义目前,最常用的锁依然还是机械锁,其结构简单,使用方便,价格便宜为人们欣然接受。但是与此同时,日常生活中也不可避免的暴露了其许多缺点:其一由于机械锁是靠金属制成的,依靠钥匙上的不同齿形与锁芯的配合来工作。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性较低。其二如果钥匙一旦丢失,无论谁捡到都可能将锁打开。其三机械锁的材料大多为黄铜,质地较软,容易损坏。其四是机械锁钥匙易于复制,不适用诸多公共场所使用。随着社会的发展,人们对安全的要求也越来越高。原始的机械锁已不能满足人们的要
7、求,各种新型密码锁应运而生,以下介绍几种类型的密码锁【1】。卡式密码锁:可以用自己的银行卡来开保险箱的门,但对IC卡要求比较高,如果和强磁的东西放一块,磁性容易消失,就不好用了。机械密码锁: 比较稳定、耐用,而且不需要电源。但是操作方法学起来比较慢、操作不方便、修改密码需要专业人员。 指纹密码锁:指纹在这个世界上很难找到一样的,所以就把指纹识别技术运用到了保险箱上,保密性强,易用。不过对手的干湿度要求比较严。对手指放的位置的识别也比较呆板。就算是同一手指,如果输前和开门前放的位置不一样,就有可能会识别失败。电子密码锁:具有操作快、修改密码比较简单随意、只需输入09数字即可开锁等优点。虽说这几年
8、电子密码锁的价格降了,质量也提高了,但是因为比较复杂,所以稳定和耐用性不如机械密码。具有防盗报警功能的无线遥控电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少,安全性能差的缺点,使密码锁无论在技术上还是在性能上都获得了大大的提高。随着大规模集成电路技术的发展,特别是单片机的问世,给人类生活带来了根本性的改变,单片机技术的应用产品已经走进了千家万户,其中出现了带微处理器的智能密码锁,它结构不仅简单,性能稳定,智能化程度高,而且系统实用性较强。除具有电子密码锁的功能外,还引入了智能管理,专家分析等功能,从而使密码锁具有很高的安全性,可靠性,应用日益广泛。无线遥控密码锁提高电子防盗锁
9、之防护能力。首先是加强了自身的安全性。可以综合物理防范和人力防范两种作用。根据无线遥控密码锁的使用场所和防护要求,可选择多种多样的探测手段。根据国内外的实践经验,实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,无线遥控密码锁的性能至关重要【11】。1.2无线遥控密码锁的研究方向以及特点锁具的应用十分广泛,在人们的生活中十分重要。给人们带来安全感。但是随着经济发展,物质财富的不断增加,人们对锁具的要求也更高。同时对它的外在设备,如体积,样式等也较高目标要。为此,对于锁具的研究,一直是锁具制造者长期研究的
10、主题。如今保险柜作为一种保密能力优越的存储工具,运用范围越来越广泛。大到各个单位,和我们的家庭,都有使用。因而,保险柜锁本身安全性能的好坏,就成为了关键问题。目前市面上的保险柜使用的锁具绝大部分都是机械转盘式密码锁,其它形式的数量比较少。除此之外,还有一种形式的密码锁,我们称它为电子密码锁,这种密码锁不再依靠金属钥匙,其开锁用具很难复制。它的具体形式很多,如现实生活中能够见到的磁卡式、数码式、生物式、指纹式、按键式等,都属于这一类,其中,尤其以按键式居多。按键式电子密码锁中,最大特点是有一组开锁密码,只有输入正确密码,才能打开它。还有的锁具将机械锁与电子锁合二为一,这样就更增强了锁具的保密性【
11、4】。随着能够使用在电子密码锁上的专用集成电路的出现,缩小了锁的体积,增强了锁的可靠性,但费用较高,因此,使用的范围并不广泛,只是在一些特殊场合才使用,所以它的发展缓慢。目前,一些西方发达国家,电子密码锁用在了智能门禁系统中,实现安全的门禁管理,发展十分的迅速。但在我国它的使用相对较少。因此,如何改善它的性能以及提高其利用率,是我们值得注意的。目前市场上的电子密码锁系统大多采用的是固定键盘式,也就是将操作键盘固定在保险箱的面板上,这就使得用户在操作时没有隐藏性,极易被人看见和偷拍而使得密码不安全,因而操作的安全性不高。无线遥控密码锁是一种通过无线遥控来控制电路或是芯片工作,从而控制机械开关的闭
12、合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其具有许多性能特点:其一保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。其二密码安全性高,自身的加密算法,提高了自身的安全性,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。其三误码输入保护。当输入密码多次错误时,报警系统自动启动。其四无线遥控密码锁操作简单易行,一学即会【12】。1.3课题任务本毕业设计通过用STC89C51单片机设计无线遥控密码锁,配合BK2411无线模块,1602液晶显示,4X3的矩阵键盘和蜂鸣器
13、等外围器件,经过IDEA加密算法加密,BK2411无线模块通过无线收发信号。鉴别发送模块与接收模块的加密密码是否一致。若密码一致,则开锁。若密码不正确则蜂鸣器完成报警功能。另外矩阵键盘还可以实现密码的输入,修改,发送等功能。具体完成以下内容:(1)系统设置6位密码,密码通过键盘输入,作为系统的预存密码。(2)密码由用户自己设定,在开锁状态下,用户可自行修改密码。(3)BK2411无线模块,通过矩阵键盘发送键将加密密码发送给接收模块。系统通过IDEA算法进行密码加密工作,防止在传输过程中被截获。接收模块接收到密码后进行解密,与接收模块加密密码进行比较,密码一致,完成开锁。密码不一致,则报警。2总
14、体分析与总体方案设计2.1无线遥控密码锁的总体设计电子密码锁主要由4个部分组成:(1)矩阵键盘电路。这部分用于读取六位密码以及将输入的六位密码发送给单片机。以及完成修改密码的功能。(2)密码显示。当输入或者修改密码时,液晶显示“*”号,防止密码外泄。 (3)报警电路。主要是对之前输入的六位数密码进行机器识别,确认发送模块与接收模块的加密密码相一致。如果密码不一致,则蜂鸣器发出报警,并显示红灯。(4)BK2411无线模块。这一部分主要是无线发送和接收模块,发送模块键入六位密码之后进行IDEA算法加密,发送给接收模块,与接收模块加密密码进行鉴别。如果密码一致,成功开锁。密码不一致,不能开锁。无线遥
15、控密码锁的系统框图如图2.1所示。通过发送键,将经过IDEA算法加密的密码通过无线传送给无线接收模块BK2411无线发送模块矩阵键盘液晶显示单片机主控模块密码一致密码不一致无线接收的加密密码与系统加密密码进行比较修改密码液晶显示单片机主控模块开锁成功亮绿灯报警系统亮红灯BK2411无线接收模块矩阵键盘矩阵键盘键入密码,按发送键,通过无线传送给无线接收模块BK2411无线发送模块矩阵键盘液晶显示矩阵键盘键入密码,按发送键,通过无线传送给无线接收模块BK2411无线发送模块矩阵键盘液晶显示图2.1无线遥控密码锁系统框图图2.1中,单片机时刻采集键盘的输入,液晶显示“*”号,并由单片机进行处理后,将
16、信息进行分析和存贮,进行IDEA加密运算。通过BK2411无线模块发送给无线接收模块,接收模块对接收到的加密密码进行解密,判断发送模块的密码与接收模块的密码是否一致。若密码一致,开锁成功,亮绿灯。若密码不一致,则进行报警处理并亮红灯。3硬件电路设计3.1主要控制芯片STC89C51本设计中采用STC89C51单片机为该设计的核心元件。STC单片机是一款增强型51单片机,完全兼容MCS-51。STC89C51可以代替AT89C51,而且功能更强,速度更快,寿命更长,价格更低。STC89C51可以完成ISP在线编辑功能,而AT89C51则不能,因此,将AT89C51中的程序直接浇录到STC89C5
17、1中后,STC89C51就可以代替AT89C51直接工作。STC推出的系列51单片机芯片全面兼容其他51单片机。STC89C51内部有两个E2PROM,可以在程序中修改,而且断电不会丢失数据。此外,还增加了两级中断优先级等等【10】。STC89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路
18、,三个16位计数器,一个6向量2级中断结构,全双工串行口。STC89C51单片机系统原理图如图3.1所示。图3.1单片机系统图原理STC89C51管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 P2口:P2口为一个
19、内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流
20、(ILL)这是由于上拉的缘故。P3口也可作为STC89C51的一些特殊功能口,如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引
21、脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;
22、当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2液晶显示电路液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器厚度薄,适用于大规模集成电路的直接驱动。在日常生活中已经广泛应用便携式电脑,数字摄像机,PDA移动通信工具等许多领域,与我们的生活息息相关。1602液晶显示器是非常普遍常用的显示器。其微功耗,体积小,显示内容丰富,超薄轻巧,因此在各类仪表和低功耗系统中得到广泛的应用。相比较用数码管而言,用1602液晶显示密码更加的人性化,舒适,显示
23、位数也明显多于数码管.1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号点的点阵型液晶模块 它由若干个5X7或5X11点阵字符位组成,每一个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔 每行之间也有也有间隔 起到了字符间距和行间距的作用,正因为如此 所以他不能显示图形。Lcd1602电路图如图3.2所示。图3.2 Lcd1602电路图lcd1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10
24、K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 15脚背光正极。16脚背光负极。由Lcd1602的引脚功能可知,RS端与单片机RD连接,R/W端连接单片机P2.6口,E端连接单片机P2.7口,D0-D7端分别于单片机P0.0-P0.7口相连接。VCC接电源,VSS接地。3.3键盘模块基于密码输入以及无线发送需要按键的考虑,为了用户使用方便以及功能的实现。所以采用4X3矩阵
25、键盘,通过按键来实现密码的输入,修改,以及发送等多种功能。键盘原理图如图3.3所示,P10-P16接于单片机的接口上,它是用4条I/O线作为行线,3条I/O线作为列线组成的键盘。4 X 3矩阵键盘有12个键盘按键提供使用,这样既提高了单片机端口的利用效率,同时也能够解决按键不够用的问题。一般不会出现按键不够用的问题。发送模块矩阵键盘原理图如图3.3所示。图3.3发送模块矩阵键盘原理图具体的按键功能设计如表3.1所示:表3.1按键功能按键键名功能说明S10.S1.S3.S5.S2.S4.S6.S7.S9.S11键数字键09输入密码S12键发送键将密码发送给BK2411无线接收模块接收模块矩阵键盘
26、原理图如图3.4所示。图3.4接收模块矩阵键盘原理图具体的按键功能设计如表3.2所示表3.2按键功能按键键名功能说明S10.S1.S3.S5.S2.S4.S6.S7.S9.S11键数字键09输入密码S12键修改键修改密码键S8键确认键确认信息3.4开锁电路在本次设计中,用发光二极管表示锁的状态,发光二极管亮绿色的灯,表。成功开锁。如果二极管显示的为红色的灯,即为不正确的密码,不能完成开锁工作,并报警。开锁电路图如3.4所示。图3.4开锁电路开锁电路与单片机的连接十分的简单。发光二级管分别于单片机的P30口、P31口连接。开锁电路连接时,路灯亮,开锁。报警时,红灯亮,蜂鸣器报警。3.5 AT24
27、C02掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的密码信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。AT24C02管脚说明:SCL串行时钟:串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。SDA串行数据/地址:AT24C02双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线
28、或(wire-OR)。A0、A1、A2器件地址输入端:这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。当使用AT24C02 时最大可级联8个器件。如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2 )可悬空或连接到VSS,如果只有一个AT24C02被总线寻址这三个地址输入脚(A0、A1、A2 )必须连接到VSS。WP写保护:如果WP管脚连接到VCC,所有的内容都被写保护只能读。当WP管脚连接到VSS或悬空允许器件进行正常的读/写操作。AT24C02电路如图3.5所示。图3.5掉电存储电路原理图由于AT24C02的数据线和地址线是复用的,采用串口的方式传
29、送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当用户设定一次密码时,系统就自动调用24c02存储程序,将信息保存在芯片内,即使突然断电也不会影响;当系统重新上电的时候,自动调用读存储器程序,将存储器内的信息,读到缓存单元中,供主程序使用。3.6复位电路电容C足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电
30、平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C通过R放电。当电容C放电结束后, RST为高电平,CPU处于复位状态,松手后,电容C充电,RST端电位下降,CPU脱离复位状态。R的作用在于限制按键按下瞬间
31、电容C的放电电流,避免产生火花,以保护按键触电。复位电路如图3.6所示。图3.6复位电路原理图3.7 BK2411无线模块BK2411是由博通推出的一款国产2.4G无线收发芯片。针对工业控制、门禁、考勤、监控、安防等行业应用特点推出。BK2411引脚功能如表3.3所示:表3.3BK2111引脚说明管脚名称管脚功能备注说明1CE数字输入收发模式切换控制端口2CSN数字输入SPI片选使能端,低电平有效3SCK数字输入SPI时钟4MOSI数字输入SPI从设备数据输入5MISO数字输出SPI从设备数据输出6IRQ数字输出工作状态指示7VDD电源1.9-3.6V8VSS接地0V9XTALP模拟输入晶体振
32、荡器,节点P(变频器的输出)10XTALN模拟输出晶体振荡器,节点N(变频器的输入)11VDDPA电源1.8V稳压输出的PA12RFPRF端口RF输出(PA)/输入(LNA),节点P13RFNRF端口RF输出(PA)/输入(LNA),节点N14VSS接地0V15VDD电源1.9-3.6V16IREF模拟输出参考目前17VSS接地0V18VDD电源1.9-3.6V 19CDVDD模拟输出数字调节器的输出去耦电容20VSS接地0VBK2411有四种工作模式:收发模式、配置模式、空闲模式、关机模式。而这些模式由PER-UP register、PRIM-RX register和CE决定。四种工作模式如
33、表3.4所示。表3.4 BK2411工作模式收发模式TX模式PXT设备(PRIM_RX=0)当PXT设备发送数据包时,发送模式被激活。为了在POWER DOWN模式进入TX模式,PXT设备必须使PER_UP位置高,PRIM_RX位置低,在TX FOFO中有有效数字,在CE引脚有超过10us的高电平脉冲。如果自动重新传输使能(EN_AA=1)和自动应答要求(NO_ACK=0),则当ARD通过后和重新发送计数小于ARC时。PTX设备将从standby_模式进入TX模式。PXT设备(PRIM_RX=1)当(EN_AA=1)和(NO_ACK=0)在接收数据时发送确认在TX FIFO中有有效数据的数据包
34、,PTX设备将有RX模式进入TX模式。RX模式PRT设备(PRIM_RX=1)当BK2411射频被配置为接收器时,RX模式将被激活。为了从standby_模式进入RX模式,PRX设备必须使PWR_UP位置高,PRIM_RX位置高,CE引脚置高。或者当在接收数据包时EN_AA=1和NO_ACK=0的情况下,PRX设备能够从在TX模式发送完确认数据包后进入RX模式。PXT设备(PRIM_RX=0)当EN_AA=1和NO_ACK=0时的情况下接收数据包时,PTX设备才会从TX模式进入RX模式。空闲模式BK2411的空闲模式是为了减少平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的启动时
35、间。在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关。关机模式在关机模式下,为了得到最小的工作电流,一般此时的工作电流为900nA,关机模式下。其配置的内容也会被保持在BK2411片内,这是该模式与断电状态最大的区别。BK2411无线模块电路在设计中如图3.8所示图3.8无线模块电路原理图4.软件设计4.1系统主程序设计首先先进行系统的初始化。然后调用显示子程序。发送模块对明文密码进行加密后发送给接收模块。接收模块对接收到的加密密码进行解密。如果发送模块与接收模块加密密码一致,成功开锁。如果密码不一致,报警。开始系统初始化调用显示程序调用键盘程序键入密码IDEA加密程序B
36、K2411无线模块发送数据BK2411无线模块接收数据IDEA解密程序与接收模块加密密码比对进行比较密码是否一致报警系统开锁成功图4.1主程序流程图4.2人机对话系统用户交互单元包括键盘处理和1602显示模块两部分。根据按键状态得到用户输入的键值进行相应的处理,包括密码储存,修改以及发送等。4.2.1 LCD显示LCD液晶显示流程图如图4.2所示。开始载入按键值扫描按键值送P0口输出图4.2 LCD显示流程图如图4.2所示的LCD显示流程图,系统处于准备状态,当有按键按下的时候,系统扫描按键值,并将按键值送PO口输出。4.2.2 密码修改密码的修改只有在正确输入密码时,也就是系统处在已经成功开
37、锁状态的时候,才可以进行操作。其流程图如图4.3所示。系统处于开锁状态输入新密码按S12键(修改密码键)调用液晶显示按S8键(确认键)存入内存图4.3密码修改流程图4.2.3报警系统蜂鸣器使用方便,电流通过时蜂鸣器就发出响声,蜂鸣器通常工作电流比较大,电路需要增加一个电流放大的电路,如图所示,只要将蜂鸣器与单片机相连的I/O 口置为低电平,就可以驱动蜂鸣器发声。报警电路如图4.4所示。图4.4蜂鸣器电路4.2.4掉电存储24C02与单片机的接口非常简单,E0、E1、E2为器件地址线,WP为写保护引脚,SCL、SDA为二线串行接口,符合I2C总线协议。建议数据以十进制BCD码方式存入24C02,
38、这样可以提高有效数据的冗余度,即24C02中的存储单元其有效数据为0-9,大于9则为无效数据。对写入24C02子程序设置软件口令,口令符合可以执行写入,否则拒绝写入。具体流程框图如图4.5所示。初始化发送写信号等待程序响应发送写地址等待程序响应发送数据终止图4.5 24c02写数据指令4.2.5 IDEA加密算法该设计中采用IDEA加密算法,它是一种数据块加密算法,设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。但由于该算法出现的时间不长,针对它的攻击也还不多,还未经过较长时间的考验。 IDEA在密码学中属于数据块加密算法类。IDEA使用长度为128bit的密钥,数据块
39、大小为64bit。从理论上讲,IDEA属于“强”加密算法,至今还没有出现对该算法的有效攻击算法。IDEA是一种由8个相似圈和一个输出变换组成的迭代算法。IDEA的每个圈都由三种函数:模(216+1)乘法、模216加法和按位XOR组成。在加密之前,IDEA通过密钥扩展将128bit的密钥扩展为52Byte的加密密钥EK,然后由EK计算出解密密钥DK。EK和DK分为8组半密钥,每组长度为6Byte,前8组密钥用于8圈加密,最后半组密钥(4Byte)用于输出变换。IDEA的加密过程和解密过程是一样的,只不过使用不同的密钥。IDEA加密总体方案流程图如图4.6所示。输出变换循环1循环2循环864bit
40、明文Xx1 x2 x3 x4z1z6w11 w12 w13 w14z7z12w21 w22 w23 w24w71 w72 w73 w74z43z48w81 w82 w83 w84z49z52y1 y2 y3 y464bit密文Y图4.6 IDEA加密算法流程图其中xi(i=1,2,3,4)是16比特明文子密码;yi(i=1,2,3,4)是16比特密文子密码;zi(i=1,52)16比特圈子密码;wij(i=1,28;j=1,2,3,4)是16比特中间结果;将待加密的64bit明文数据X分成4个16位子块x1、x2、x3、x4,作为算法第一圈的输入,每圈有6个16bit圈子密钥参与变换,经过8圈
41、迭代后得4个16bit子块,再通过一个输出变换得算法的输出y1、y2、y3、y4级连起来即为密文Y。子密钥生成:首先将128bit初始密钥从左到右分成8个16bit子块,并将所得的8个子块直接作为加密算法中最前面的8个子密钥,然后将上述128bit密钥循环左移25位,将其从左到右分成8个16bit子块,得到随后的8个子密钥,重复这个过程,直到产生52个16bit子密钥为止。IDEA加密算法在系统中流程图如图4.7所示:发送模块 接收模块预共享密码随机数IDEA加密算法密钥预共享密码随机数IDEA加密算法密钥1随机数密码是否一致开锁报警随机数发送NY图4.7 IDEA加密算法在系统中流程图IDE
42、A加密算法在系统中应用:(1)加密密钥生成模块加密密钥在最初始的时候只有用户输入的16位,每位8bit,总计128bit密钥,而加密时需要进行8轮迭代,每轮需要6个子密码,总共48个子密码,外加最后变换需要4个子密钥,总计52个子密钥,而密钥的产生就是将128bit的密钥左移25位生成新的子密钥,首先是将128bit分成8组16bit的密钥,然后将128bit左移25位产生新的8组子密钥,然后继续循环,直至产生52个子密钥为止。设计代码如下:void en_key_idea(word16*userkey,word16*z)int i,j;/*shifts*/for(j=0;j8;j+)zj=*userkey+;/将输入的密钥存入数组中for(i=0;jKEYLEN;j+)i+;zi+7=(zi&79|(z(i+1)&77);/将密钥左移计算z+=i&8;i&=7;(2)解密密钥生成模块解密密钥和加密密钥是相同的,但是解密密钥需要通过计算,逆元来计算出来,生成52位来解密。实现代码如下:void dn_key_idea(word16*Z,word16*DK)int j;word16 t1,t2,t3;DK+=52;t1=inv(*Z+)