
题目:电子密码锁的设计
组号:第八组
小组成员:王新恒()牛庆渝(S1*******7)
于秀玲()黄志辉()
2012年11月7日
目录
第一篇 绪 论 3
一、引言 3
1、编写目的 3
2、背景介绍 3
二、 功能需求设计 4
1、 任务和目标 4
2、 功能需求简述 4
第二篇 设计概述 6
一、详细设计方案的选择及设计思路概述 6
1、设计方案的选择 6
2、初步设计思路概述 7
二、设计方法和技术条件 8
1、设计原则 8
2、应用的技术分析 8
3、设计者当前已具备的技术条件 9
4、设计重点难点 9
第三篇 系统总体设计方案确认 10
一、各模块系统硬件设计 10
1、单片机模块系统 10
2 、键盘矩阵模块系统 12
3、显示模块系统 13
4、报警模块系统 14
5、电子时钟计时模块 14
第四篇 系统程序设计 16
一、总体程序设计流程 16
2、系统程序设计总流程 16
如下图所示为该密码锁系统程序设计总流程图: 16
二、各个模块系统程序设计流程 17
1、显示初始化模块程序设计 18
2、电子时钟模块程序设计 18
3、密码比较功能模块程序设计 19
4、密码更改模块程序设计 19
5、键盘输入模块程序设计 20
6、电子时钟显示模块程序设计 21
7、密码修改模块程序 22
第一篇 绪 论
一、引言
1、编写目的
编写总体设计说明书的目的是为了说明对密码锁系统总体设计的考虑,包括程序的基本流程、输入/输出设计、模块设计、运行设计、硬件的总体设计和系统出错处理设计等,以便为密码锁的具体设计制作和仿真提供理论基础和指导方向,主要就是为编写程序提供依据。各个模块的程序编写严格按照该总体设计的初定方案进行。
本总体设计说明书详细分析系统的各种需求,综合小组中各个成员的意见,为以后的设计规划出一个蓝图,使以后的工作做到有步骤、有计划,并且对今后出现的各种可能情况作出预测和进行初步和适当的处理,使系统工作进程得以稳步和高效地进行。
2、背景介绍
在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
此外,电子密码锁还具有以下独特的特点:
1)保密性远远大于弹子锁。随机开锁成功率几乎为零;
2)密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降;
误码输入保护。当输入密码多次错误时,报警系统自动启动;
3) 电子密码锁操作简单易行,一学即会。
2、功能需求设计
1、任务和目标
本项目设计一种基于ATC51单片机控制的电子密码锁,要求达到以下任务目标:
1)可通过键盘输入密码控制开关的开锁和闭锁;
2)可通过扩展的LCD显示器显示输入的密码;
3)密码可以多次改写和重置;
4)连续三次输入密码错误,声光报警装置开始工作。
2、功能需求简述
1)系统第一次上电,个人密码初始值为“111111”,上电后显示屏自动扫描,扫描后进入待机状态。
2)待机时,系统显示系统日期及时间及状态。
3)系统启动后,通过输入设备(键盘)可输入6位个人密码,按下确认键进行确认。
4)如果密码正确,可进行开锁动作。若密码不正确,按照系统提示进行操作。
5)消除功能:在输入密码之后,每次一次“*”键,可消除最后输入的一位数字。
6)每次输入密码正确的开门记录将被保存。
7)当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开,并发出报警提示。
8)在用户设置了一组常用密码基础之上,可以另外在设置5--10组备用密码,以增加多用户使用功能,满足用户的基本需求。
9)在用户丢失或遗忘一组密码后,可以通过另外的几组备用密码进行开锁并并对密码进行再次修改和设定,增加了密码锁使用的灵活性。
10)设置密码锁开锁次数为3次,当输入超过三次还未开锁成功时,蜂鸣器报警30秒,并且锁定键盘。在此后10分钟内不能进行任何对锁的操作,等待锁定时间过后,解除警报,密码锁恢复输入功能。
11)在每一次输入密码后,系统都要以文字显示的形式给出输入密码正确与否以及剩余输入次数的警告或提示(以发声或发光提示)。
12)密码可以由用户自己修改设定,锁打开后才能修改密码,修改密码之前必须再次输入密码。
13)
14)先用个人密码(初始为123456)开门,在开锁成功后再次输入密码使系统进入修改个人密码状态。
15)此时可输入6位新的个人密码,在输入新密码时候需要二次确认,以防止误操作。
16)先用密码开门,按“0”键。
17)先显示第1屏:该记录的开门日期;第2屏显示开门时间;第3屏显示密码类别。
18)记录翻页:在查询记录的状态下,按“0”键,可查询下一条开门记录
19) 10 S内未按键,则退出查询状态,回到待机状态。
20)系统最多可以保存最近的40 条记录,当记录超过40条时,每增加一条新记录,最早的一条旧记录将被覆盖掉。每条记录包含如下信息:年、月、日、星期、时、分、,密码类别。
第二篇 设计概述
一、详细设计方案的选择及设计思路概述
1、设计方案的选择
本次设计的密码锁在理论上可以利用多种设计方法及原理进行设计,依据设计的简单、高效、易于实现等原则,主要有两种设计方案可供选择,即:数字电路控制和以ATS51为核心的单片机控制两种方案。现在对其两种方案进行可行性对比分析。
方案一:采用数字电路控制。其原理图下图1所示。
图1 数字密码锁电路方案
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
方案二:采用一种是用以ATS51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如下图2所示。
图2 单片机控制方案
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用一种以C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,进行密码锁的设计工作以实现基本的密码锁功能。
2、初步设计思路概述
对于本次密码锁的初步设计,首先是要有一定的大概思路。如下图3所示,本次设计选用单片机开发系统,以ATC51单片机为核心,辅以扩展的键盘以及LCD显示模块组成完整的系统。通过键盘采集输入的信息,与单片机内的储存值比较,如果密码正确,则开锁电路打开,并且灯亮;如果密码错误,则灯不亮,并且给出提示。若连续三次输入密码错误,蜂鸣器产生蜂鸣音;在以上工作的同时显示电路工作,同步显示输入数值。
图3 最初设计思路框图
二、设计方法和技术条件
1、设计原则
系统总体设计原则如下分析,应该尽可能的满足密码锁的功能要求,包括程序启动功能、锁的基本功能、个人密码更改功能、多组密码设置、报警功能、掉电存储功能。
首先,通过键盘采集输入的信息,与单片机内的储存值比较,如果密码正确,则开锁电路运行,锁被成功打开;如果密码错误,则报警系统自动进行提示,蜂鸣器产生蜂鸣音;在以上工作的同时显示电路工作,同步显示输入数值,并且每一次的输入都会被记录存储。
在输入正确密码后,按下修改键时,显示系统将提示“输入新密码”在输入新密码后,显示电路会再次提示“再次输入新密码”若两次输入密码不一致,则修改密码失败,一致则成功。若在“再次输入新密码”的时候输入新密码与前次不一致,则会返回到系统开始。修改密码完成后,系统自动清零上锁。要再次开锁则需要输入正确的密码。此外,对所得任何一次操作都会产生数据记录被存储。
2、应用的技术分析
本次密码锁功能的实现,需要使用到以下关键技术:
1)基于ATC51单片机简单设计及外围扩展电路;
2)键盘输入及单片机间的数据传输;
3)LCD显示技术、动态输出及单片机间的数据传输。
3、设计者当前已具备的技术条件
在设计密码锁之前,本组四位成员基本上已经掌握了以下技术:
1)课题组成员都参阅过相关的51单片机开发方面的书籍,熟悉Altim Designer电路设计,有一定的项目开发及电路设计基础;
2)课题组成员XXX参加过基于Keil C51的培训练习,对C语言函数库的调用有一定的了解,具备C语言程序设计开发经验;
3)课题组成员XXX熟悉PCB板的制作过程,课题组成员XXX有一定的文学功底,有一定的能力撰写课题报告;
4)各个成员都可以熟练的运用仿真软件proteus以及编译软件keil进行仿真实验和调试。
4、设计重点难点
完成本方案设计的重点和难点有以下几点:
1)C语言程序设计和控制函数的调用;
2) 键盘模块和动态显示工作方式的LCD显示模块的控制;
3) 声光报警电路的设计;
4) 用Altim Designer软件进行电路图设计。
第三篇 系统总体设计方案确认
此次设计基于单片机控制的电子密码锁,根据任务和相关要求,结合主要设计条件,我们的总体方案设计如下:
本系统由单片机系统、矩阵键盘、电子时钟、LCD显示和报警系统等多个模块组成。
一、各模块系统硬件设计
1、单片机模块系统
该密码锁设计采用以ATC51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。不但能实现基本的密码锁功能,还能添加声或光提示,以及掉电存储功能,甚至添加遥控控制功能。
1.1 主要特性
ATC51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。它与MCS-51 兼容,寿命:1000写/擦循环,数据保留时间为10年。全静态工作:0Hz-24Hz 三级程序存储器锁定,128*8位内部RAM 32可编程I/O线,两个16位定时器/计数器,5个中断源可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
下图4所示为ATC51单片机图例:
图4 ATC51单片机
1.2 主要接口说明
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流。此外,P3口也可作为ATC51的一些特殊功能口,例如串行输入\输出口、外部中断0\1、记时器0外部输入、外部数据存储器读\写选通。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:可用作对外部输出的脉冲或用于定时目的。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器,不管是否有内部程序存储器。当/EA端保持高电平时,此间内部程序存储器。 XTAL1: 反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
其中,在该系统设计中,单片机主要硬件资源的分配如为:P0.0~P0.7用于LCD液晶显示作用;P2.6、P2.7用于蜂鸣器和报警灯的控制;P2.0用于开锁电路的控制;P1.0~P1.7用于键盘电路的控制;P3.3~P3.5用于LCD显示模块的控制端口的控制。
2 、键盘矩阵模块系统
本次设计的密码锁系统设计采用4*4矩阵键盘,与P1口相连,采用扫描法。设有0到9十个数字密码,一个开锁键、上锁键,以及用于修改密码的两个修改键还有一个用于重新输入密码的重新输入键。
本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
键盘矩阵电路如下图5所示:
图5 键盘矩阵电路
3、显示模块系统
此密码锁设计6位密码,按键后动态显示。开机显示“Your Password...”,等待密码输入,输入6位密码,按开始键后,密码比较。
根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码。每次输入密码后,都会有提示音,提示输入动作被接受。按键完成后按开锁键后,密码对则执行相关动作,并且显示器显示“Unlock ok!”,并且会看到指示灯发光;不正确则显示器显示“ERROR”,指示灯无任何现象,系统等待重新输入。当连续输入三次错误后,会显示“Wait....”,三秒钟后会提示“Input again....”。
下图6所示为显示电路原理图:
图6 LCD显示电路
4、报警模块系统
本次设计的密码锁报警系统在当输入密码错误后,系统报警,报警装置由一小喇叭实现。下图7给出报警系统电路原理图:
图7 报警模块电路
5、电子时钟计时模块
本模块是由ATC51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由LCD液晶显示屏显示。
下图8所示为电子时钟的组成结构图:
图8 电子钟系统电路组成框图
电子时钟系统总体功能设计及实现过程入下图9所示:
图9 电子时钟总体功能设计及实现流程图
第四篇 系统程序设计
一、总体程序设计流程
1、程序功能
软件的设计主要包括:密码的设定及修改、键盘识别判断、错报警等,可根据具体的需要还可进行功能的增加与完善。
1)主程序功能:主耍完成初始化、设置中断向量检查有无按健按下,以及调用显示等。
2)键盘扫描及识别子程序功能:键盘采用查询方式,放在主程序中,当没有按键按下时,单片机循环主程序,一旦有键按下,便转向相应的子程序处理,之后再返回。
3)调用存储程序功能:比较密码时,需读取程序,将存储在芯片内的数据读到RAM中,然后和输入密码相比较,当修改密码时,需耍把输入的密码保存到芯片中。
4)显示子程序功能:在系统启动后显示为“Your Password ...”,在输入密码时不直接显示密码,而是现实星号“******”,这样利于密码的保密可提高安全性和可靠性 。当输入密码正确时,显示“unlock ok”,输入错误则显示“ERROR”。当连续输入三次错误后,会显示“Wait....”,三秒钟后会提示“Input again....”。
5)密码更改子程序功能:在输入密码成功解锁后,点击“输入新密码”按键,输入新密码,然后选择点击“保持新密码”按键。至此,密码修改成功。
6)修改密码工作完成后,系统将跳翻到开始,即提示输入密码“Your Password...”。
2、系统程序设计总流程
如下图所示为该密码锁系统程序设计总流程图:
图10 系统程序设计总流程图
二、各个模块系统程序设计流程
由于设计是分模块化进行,所以子程序是整体软件系统的组成部分,子程序
不但可以使程序化整为零,使其复杂简单化,同时也方便阅读,每个功能模块都有它自己的子程序,在本设计中是用LCD显示数据,所以就要用到显示子程序,设计中用的是矩阵键盘,所以就用到键盘扫描子程序,例如还有显示初始化子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序等。
1、显示初始化模块程序设计
图11 显示初始化模块程序设计流程图
2、电子时钟模块程序设计
图12 电子时钟主程序流程图
3、密码比较功能模块程序设计
密码输入完成之后,进行密码比较核对,即将设定的密码与输入密码进行一一比较,如果相同,则密码正确;如果密码错误,则显示器清零,并且显示“ERROR”,重新等待输入密码。
图13 密码比较功能模块程序设计流程图
4、密码更改模块程序设计
图14 密码更改模块程序设计流程图
5、键盘输入模块程序设计
本系统使用4×4矩阵键盘当没有键按下时,行线和列线之间是不相连的,若第N行与第M列的键被按下,那么第N行与第M列的线就被接通。
根据上述原理,本系统的键盘扫描方法是利用P1口的低四位作为行扫描线,P1口的高四位作为列回扫线。具体实施方法为:先使P1.0口输出低电平,P1口其他口输出高电平,然后对P2.4、P2.5、P2.6、P2.7四个口分别作判断。若此四口都为高电平,则没有键按下;若有键按下,P1.4、P1.5、P1.6、P1.7四个口必定有一个口输入为低电平,再判断P1.4、P1.5、P1.6、P1.7哪个口为低电平则可判断按键在哪列上。如果P1.4、P1.5、P1.6、P1.7没有低电平,再使P1.1为低电平,其他口为高电平,依次扫描下去,找到按键所在的行,再判断P1口的高四位哪一位为低,便可知道键在哪一列上。
图15 键盘输入模块程序设计流程图
6、电子时钟显示模块程序设计
图16 电子时钟模块程序流程图
7、密码修改模块程序
图17 密码修改模块程序流程
