1、- 1 -目 录第 1 节 引言11.1 电子密码锁述11.2 本设计主要任务11.3 系统主要功能2第 2 节 系统硬件设计32.1 系统的硬件构成及功能 32.2 AT89C2051 单片机及其引脚说明3第 3 节 系统软件设计53.1 系统主程序设计(流程图)53.2 软件设计思想53.3 储单元的分配53.4 系统源程序63.5 系统应用说明93.6 小结9结束语10参考文献 11附录 12- 1 -电子密码锁第 1 节 引 言1.1 电子密码锁概述随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求
2、可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。从而使密码锁具有很高的安全性、可靠性。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水
3、平的体现。很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。设计本课题时构思的方案:采用以 AT89C2051 为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。1.2 本设计主要任务(1)共 8 位密码,每位的取值范围为 18。(2)用户可以自行设定和修改密码。(3)按
4、每个密码键时都有声、光提示。(4)若键入的 8 位开锁密码不完全正确,则报警 5 秒钟,以提醒他人注意。- 2 -(5)开锁密码错 3 次要报警 10 分钟,报警期间输入密码无效,以防窃贼多次试探密码。(6)键入的 8 位开锁密码完全正确才能开锁,开锁时要有 1 秒的提示音。(7)密码键盘上只允许有 8 个密码按键和 1 个发光管。锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的。(8)密码设定完毕后要有 2 秒的提示音。以上是初步设定的电子密码锁的主要功能。1.3 系统主要功能本系统主要由单片机系统、键盘、报警系统组成。系统能完成开锁、超时报警、
5、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。第 1 节 电子密码锁硬件设计2.1 系统的硬件构成及功能根据总体要求分析,该密码锁电路所需要的 I/O 口线少于 15 个,所以可选择质优价廉的 AT89C2051,而且不需要外接程序存储器和数据存储器及其它扩展部件。电子密码锁由电路和机械两部分组成,此次设计的电子密码锁可以完成密码的修改、设定及非法入侵报警、驱动外围电路等功能。从硬件上看,它由六部分组成,分别是:LED 显示器,显示亮度均匀,显示管各段不随显示数据的变化
6、而变化,且价格低廉,它用于显示键盘输入的相应信息;无须再加外部 EPROM 存储器,且外围扩展器件较少的 AT89C52 单片机是整个电路的核心部分;振荡电路为 CPU 产生赖以工作的时序;显示灯是通过 CPU 输出的一个高电平,通过三极管放大,驱动继电器吸合,使外加电压与发光二极管导通,从而使发光二极管发光,电机工作。现在来进行修改密码操作。修改密码实质就是输入的新密码去取代原来的旧密码。密码- 3 -的存储用来存储一位地址加 1,密码位数减 1,当八个地址均存入一位密码,即密码位数减为零时,密码输入完毕,此时按下确认键,新密码产生,跳出子程序。为防止非管理员任意的进行密码修改,必须输入正确
7、密码后,按修改密码键,才能重新设置密码。密码输入值的比较主要有两部分,密码位数与内容任何一个条件不满足,都将会产生出错信息。当连续三次输入密码出错时,就会出现报警信息,LED显示出错信息,蜂鸣器鸣叫,提醒人注意。在电路中,P1 口连接 8 个密码按键 AN1AN8,开锁脉冲由 P3.5 输出,报警和提示音由 P3.7 输出。BL 是用于报警与声音提示的喇叭,发光管 D1 用于报警和提示,L 是电磁锁的电磁线圈。图 1 电子密码锁硬件电路图2.2.1AT89C2051 单片机及其引脚说明AT89C2051 单片机是 51 系列单片机的一个成员,是 8051 单片机的简化版与Intel MCS-5
8、1 系列单片机的指令和输出管脚相兼容。由于将多功能八位 CPU 和闪速存储器结合在单个芯片中,因此,AT89C2051 构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的 RAM、ROM 和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。内部自带 2K 字节可编程 FLASH 存储器的低电压、高性能 COMS 八位微处理器, AT89C2051 是一个有 20 个引脚的芯片,引脚配置如图 2 所示。与 8051 相比,AT89C2051 减少了两个对外端口(即 P0、P2 口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。- 4 -图 2 AT
9、89C2051 引脚配置AT89C2051 芯片的 20 个引脚功能为:VCC 电源电压。GND 接地。RST 复位输入。当 RST 变为高电平并保持 2 个机器周期时,所有 I/O 引脚复至“1”。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P1 口 8 位双向 I/O 口。引脚 P1.2P1.7 提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0 和 P1.1 需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收 20mA 电流,并能直接驱动
10、 LED 显示器;P1 口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1 口也可接收编码数据。P3 口 引脚 P3.0P3.5 与 P3.7 为 7 个带内部上拉的双向 I/0 引脚。P3.6 在内部已与片内比较器输出相连,不能作为通用 I/O 引脚访问。P3 口的输出缓冲器能接收20mA 的灌电流;P3 口写入“1”后,内部上拉,可用输入。P3 口也可用作特殊功能口,功 P3 口同时也可为闪速存储器编程和编程校验接收控制信号。P3 口特殊功能P3 口引脚 特殊功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外部中断 0)P3.3 INT1(
11、外部中断 1)P3.4 T0(定时器 0 外部输入)P3.5 T1(定时器 1 外部输入)- 5 -第 3 节 系统的软件设计图 3 给出了该单片机密码锁电路的软件流程图。图中 AA1AA8 以及START、SET、SAVE 是程序中的标号,是为了理解程序而专门标在流程图的对应位置的,分析程序时可以仔细对照参考。31 系统主程序设计流程图(见附页)32 软件设计思想软件任务分析环节是为软件设计做一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能(如计算、显示、输出控制和通信等);另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调
12、度角色的软件。这两类软件的设计方法各有特色;执行软件的设计偏重算法效率,与硬件关系密切,千变万化;监控软件着眼全局,主要处理人机关系,特点是逻辑严密、千头万绪。本设计要完成的软件任务主要有:一是键盘输入的识别;二是 8 位 LED 的显示;三是密码的比较、修改、存储;四是报警和开锁控制电平的输出。根据以上任务,结合硬件结构,可以将键盘输入的识别用来作为系统的监控程序(主程序),用显示程序来延时,不断查询键盘。如果有键按下,就得到相应的键值。结合当前系统所处的状态,调用不同的操作模块,实现相应的功能。而执行模块主要有数字输入模块、确定键模块、修改键模块、显示模块及报警模块。33 存储单元的分配该
13、密码锁中 RAM 存储单元的分配方案如下:31H38H:依次存放 8 位设定的密码,首位密码存放在 31H 单元;R0:指向密码地址;R2:已经键入密码的位数;R3:存放允许的错码次数 3 与实际错码次数的差值;R4 至 R7:延时用;00H:错码标志位。- 6 -对于 ROM 存储单元的分配,由于程序比较短,而且占用的存储空间比较少,因此,在无特殊要求时,可以从 0030H 单元(其它地址也可以)开始存放主程序。34 系统源程序ORG 0000HAJMP START ORG 0030HSTART:ACALL BP MOV:R0,#31HMOV:R2,#8SET:MOV:P1,#0FFHMOV
14、:A,P1 CJNE:A,#0FFH,L8AJMP SET L8: ACALL DELAYCJNE A,#0FFH,SAVEAJMP SET SAVE:ACALL BPMOV R0,A INC R0 DJNZ R2,SET - 7 -MOV R5,#16 D2S:ACALL BPDJNZ R5,D2SMOV R0,#31HMOV R3,#3 AA1:MOV R2,#8AA2:MOV P1,#0FFH MOV A,P1CJNE A,#0FFH,L9AJMP AA2L9:ACALL DELAYCJNE A,#0FFH,AA3 AJMP AA2AA3 ACALL BPCLR CSUBB A,R0IN
15、C R0 CJNE A,#00H,AA4 AJMP AA5 - 8 -AA4:SETB 00H AA5:DJNZ R2,AA2JB 00H,AA6CLR P3.5L3:MOV R5,#8 ACALL BP DJNZ R4,L3 MOV R3,#3 SETB P3.5 AJMP AA1 AA6:DJNZ R3,AA7 MOV R5,#24 L5:MOV R4,#200L4:ACALL BP DJNZ R4,L4 DJNZ R5,L5 MOV R3,#3AA7:MOV R5,#40 ACALL BP - 9 -DJNZ R5,AA7 AA8:CLR 00H AJMP AA1 BP:CLR P3.7 MOV R7,#250 L2:MOV R6,#124 L1:DJNZ R6,L1 CPL P3.7 DJNZ R7,L2SETB RET DELAY MOV R7,#20 L7:MOV R6,#125 L6:DJNZ R6,L6DJNZ R7,L7RETEND35 应用说明若按键 AN1AN7 分别代表数码 17,按键 AN0 代表数码 8。在没有键按下时,P1.0P1.7 全是高电平 1,若某个键被按下,相应的口线就变为低电平 0。假如设定的密码是 61234578,当按键 AN6 被按下时,P1.6 变为低电平,P1 端口