矩阵式键盘实现的电子密码锁
- 格式:pdf
- 大小:150.24 KB
- 文档页数:3
简易电子密码锁设计&我的设计思想联想到日前在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,并结合近期的学习过程和一些参考书籍,完成了简易的电子密码锁设计学习。
电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
电子密码控制不论性能还是安全性都已大大超过了机械类结,具有良好的应用前景。
一、设计目的与内容设计了一个简易电子密码锁,可按要求从矩阵键盘输入6位数密码如“080874”,输入过程中有按键音提示。
当密码输入正确并按下确认键(“OK”键)后,发光二极管被点亮。
二、工作原理与基本操作过程介绍采用80C51为核心的单片机控制。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
(1)键盘的人工编码给每个按键指定一个按键值,报告设定按键S1~S9对应的按键值分别为“1~9”,S10为数字“0”,S11为“OK”,S12~S16对应的按键值分别为12~16。
(2)根据按键值,指定每个按键对应的输入数字和信息。
如下表为每个按键代表的数字和输入信息。
当键盘扫描程序扫描到S10键被按下时,将其代表的按键值“0”通知CPU,CPU根据事先的规定,就会知道输入的数字是“0”。
矩阵键盘中每个按键所代表的数字和输入信息(3)输入数字和密码对比。
先将设定的密码用一个数组保存,报告中用的密码“080874”和“OK”确认信息可以用如下数组保存:Unsigned char D[ ]={0,8,0,8,7,4,11};在主程序接收到数字和信息后,通过逐位对比的方法进行判断。
输入的数字经对比正确时,程序才会继续顺序执行,否则,程序拒绝继续执行。
(4)执行预期功能。
如果输入密码正确,执行预期功能,报告设计为点亮P3.0口引脚LED。
三、电路图设计(Proteus绘制)四、程序设计(C语言)矩阵式键盘实现的电子密码锁程序#include<reg51.h> //包含51单片机寄存器定义的头文件sbit P14=P1^4; //将P14位定义为P1.4引脚sbit P15=P1^5; //将P15位定义为P1.5引脚sbit P16=P1^6; //将P16位定义为P1.6引脚sbit P17=P1^7; //将P17位定义为P1.7引脚sbit sound=P3^7; //将sound位定义为P3.7unsigned char keyval; //储存按键值/************************************************************** 函数功能:延时输出音频**************************************************************/ void delay(void){unsigned char i;for(i=0;i<200;i++);}/************************************************************** 函数功能:软件延时子程序**************************************************************/ void delay20ms(void){unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/************************************************************** 函数功能:主函数**************************************************************/ void main(void){unsigned char D[ ]={0,8,0,8,7,4,11}; //设定密码EA=1; //开总中断ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0keyval=0xff; //按键值初始化while(keyval!=D[0]) //第一位密码输入不正确,等待;while(keyval!=D[1]) //第二位密码输入不正确,等待;while(keyval!=D[2]) //第三位密码输入不正确,等待;while(keyval!=D[3]) //第四位密码输入不正确,等待;while(keyval!=D[4]) //第五位密码输入不正确,等待;while(keyval!=D[5]) //第六位密码输入不正确,等待;while(keyval!=D[6]) //没有输入“OK”,等待;P3=0xfe; //P3.0引脚输出低电平,点亮LED}/**************************************************************函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位**************************************************************/void time0_interserve(void) interrupt 1 using 1 //定时器T0的中断编号为1,使用第一组寄存器{unsigned char i;TR0=0; //关闭定时器T0P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下delay20ms(); //延时一段时间、软件消抖if((P1&0xf0)!=0xf0) //确实有键按下{P1=0xfe; //第一行置为低电平“0”(P1.0输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=1; //可判断是S1键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=2; //可判断是S2键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=3; //可判断是S3键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=4; //可判断是S4键被按下P1=0xfd; //第二行置为低电平“0”(P1.1输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=5; //可判断是S5键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=6; //可判断是S6键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=7; //可判断是S7键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=8; //可判断是S8键被按下P1=0xfb; //第三行置为低电平“0”(P1.2输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=9; //可判断是S9键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=0; //可判断是S10键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=11; //可判断是S11键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=12; //可判断是S12键被按下P1=0xf7; //第四行置为低电平“0”(P1.3输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=13; //可判断是S13键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=14; //可判断是S14键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=15; //可判断是S15键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=16; //可判断是S16键被按下for(i=0;i<200;i++) //让P3.7引脚电平不断取反输出音频{sound=0;delay();sound=1;delay();}}TR0=1; //开启定时器T0TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值}五、用Proteus软件进行仿真利用Keil软件进行编译通过后,生成hex文件。
电子密码锁一、工作原理本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N ×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
4×4矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
扫描原理把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。
利用51单片机设计一个用16个按键输入,6位数字输出显示的电子时钟。
如图1-1所示。
图1-1按键分布图具体要求和按键功能介绍如下:1. 上电后,6 位数码管显示“—”;2. 设置6 位密码,密码通过键盘输入,按“确定”键确认,如密码正确,将锁打开;3. 密码由用户自己设定,若密码正确即锁被打开,则指示灯被点亮;4. 若密码1 次输入错误,则报警;5. 按Set 键,修改密码;6. 按Cle 键可清除已输入的密码,重新进行输二、系统硬件组成本次设计的主要有键盘,数码管,STC89C52芯片,以及LED灯。
基于AT89C51的数字密码锁设计与实现摘要:为了满足多种场合的安防需要,设计了一款数字密码锁。
密码锁以AT89C51为核心,实现对其几个输入输出模块的状态控制,进而实现密码锁相应功能。
用户可通过硬件电路中的矩阵键盘进行密码输入,密码重置,密码存储等操作。
操作过程可以在数码管上直观显示。
通过proteus仿真,能够实现预期功能,该密码锁具有较广泛的应用价值。
关键词:AT89C51、矩阵键盘、数码管显示、状态机0 引言随着科学技术的发展和人们生活水平的提高,安保工作变得尤为重要[[1]]。
数字密码锁具有安全性高、价格便宜、耗电少、使用灵活等优点[[2]]。
使用过程中,通过输入密码来控制驱动电路,从而控制外围电路,实现开锁,关锁。
本文采用AT89C5I单片机作为密码锁核心控制元件,其结构简单,使用方便,价格便宜[[3]],可以持续稳定工作。
数字密码锁成品电路可用于单元门禁等多个公众场合。
1 数字密码锁系统架构本系统以AT89C51单片机(包含复位电路和晶振电路)为核心,外围配有矩阵键盘,七段数码管等接口和显示电路,实现开锁过程中的数字显示,以及错误报警等功能。
本系统可以实现多位密码的设置、存贮。
系统架构图如图1所示:图1:数字密码锁系统架构图具体功能如下:通过矩阵键盘输入密码,如果输入正确密码,驱动电路将锁打开,指示灯点亮,整个过程数码管会显示相应数字。
如果输入错误密码,蜂鸣器将发出错误警报。
2 硬件设计2.1 单片机最小系统采用AT89C51单片机(含有晶振、上电复位电路)作为核心控制元件,实现对输入信号的采集,以及对外围电路的控制。
2.2 矩阵键盘采用4*4矩阵键盘。
其中十个按键实现0~9十个数字输入,可连续输入多位密码。
左下角按键按下,可进行密码重新设定。
新密码录入完成,按下右下角按键,将密码保存。
键盘采用程序控制扫描方式[[4]],这样对CPU工作影响小,只使用8条行列信号线(P1口)就可以实现对按键信号的动态扫描输入。
一、系统主要功能1)基本要求1.硬件设计要求:(1)CPU使用PIC16F877A。
(2)用4x4矩阵键盘作为操作信息输入。
(3)用LCD1602或六位数码管作为信息输出。
(建议使用LCD1602)(4)用蜂鸣器及发光二极管作为错误报警及状态显示。
2.系统功能要求:(1)输入密码功能。
输入密码时用“*”号或“-”显示。
在输入密码时,具有清除前一位密码功能(用CLR键)。
密码输入完毕,按(ENTER键)确认并生效。
(2)上锁功能。
在锁开状态下,通过(LOCK键)上锁。
(3)在锁合的状态下,通过密码开锁功能。
开锁时,直接在键盘上输入六位密码,按(ENTER键)确认,如果密码正确,转入锁开状态。
(4)在锁开状态下,修改密码功能。
在键盘上输入六位新的密码,按(ENTER键)确认,代替旧密码,并保存在RAM中。
(4)在开锁时,如果输入密码三次错误,产生声、光报警功能。
(5)0~9为密码键数字键,E为ENTER键,C为清除键CLR键,D作为上锁键LOCK键,如果用到其他键时,可自行定义。
2)进阶要求密码保存在PIC16F877A内部的EEPROM中,以防断电密码丢失。
(不使用外挂的EEPROM,如:AT24C02等)二、系统设计要求1)根据系统的功能和目标,画出系统功能框图。
2)根据系统功能框图用Proteus画出仿真电路图。
3)根据系统的功能要求,画出程序流程图。
4)根据程序流程图,用PIC C语言编写系统源程序。
5)进行编译、调试建立目标代码。
6)在Proteus环境下进行仿真。
三、设计报告报告内容包括系统设计思路、方案选择、器件选择及电路元器件明细表、系统功能框图、程序流程图、源程序清单、系统工作原理和设计心得等。
四、评分标准:1、完成《基本要求》者,得分80~89分;2、完成《基本要求》及《进阶要求》者,得分90~100分;五、设计时间安排十九周的星期一至星期五(2011年6月27日至7月1日)1)周一:布置任务,进行方案选择、器件选择。
1.工程文件
2.程序文件
3.程序编译
4.RTL图
5.Testbench
6.仿真图整体仿真图
上图仿真过程为先输入1234开锁(默认密码1234),开锁后按下修改键进入修改模式,再输入2537,确认,将密码修改为2537,再关锁。
然后再输入1234,无法开锁,在输入2537,开锁。
矩阵键盘模块仿真
显示模块
上图仿真的是数码管显示模块,4个数码管显示输入的4位密码,每输入1位,密码左移一
次。
密码输入模块
上图为密码输入模块,按键0~9输入密码,每输入1位,密码左移一次。
密码锁控制模块
密码锁控制模块为状态机控制,state信号为当前状态指示,密码正确时led_open输出高电平。
Error_cnt信号为输入密码错误计数。
密码修改模块
在密码修改状态下,输入新的密码并按下确认键,修改密码。
上图为将密码1234修改为2537 报警模块
State为密码锁当前状态,当密码输入连续错误3次,报警,上图仿真输入错误只有1次,无报警。
数字电子密码锁一、设计目的与要求:目的:掌握矩阵式键盘的工作原理、设计方法;掌握译码器的应用;掌握状态机的设计方法,掌握数码管的控制。
要求:设计一个数字电子密码锁,密码为3 位,密码锁由键盘控制,显示采用数码管及LED灯。
功能:1、密码输入:每按下一个数字键,要求在数码管上显示,并依次左移;输入错误时,按退格键,清除前一个输入的数字;输入完毕,按确认键。
2、开锁:按开锁键,检查输入的密码是否正确,正确才开锁,成功。
3、上锁:按上锁键,可以直接上锁或者设定新密码上锁。
4、密码修改:按下修改键,必须先核对原密码,正确后可以输入3位数字,设为新的密码。
5、报警:开锁输入密码,连续错误三次,则禁止输入密码,并发出报警信号,用红灯一直亮表示。
6、解除报警:按复位键,解除报警状态,实际应用中复位键设置在其他部位,不可设置在键盘上。
7、万能密码:电锁维护者使用,在程序中暂时统一设置为999。
8、其他要求:输入键盘为矩阵式,不使用直接式;条件允许时可以使用语音模块代替指示灯的表示。
二、电路组成:为达到以上功能,可将数字电子密码锁分为以下几个模块:1、键盘接口电路:键盘矩阵、键盘扫描、键盘消抖、键盘译码及按键存储。
2、密码锁控制电路:数字按键输入、存储及清除;功能按键的设计:退格键、确认键、开锁键、上锁键、修改键、解除报警键;密码清除、修改与存储。
密码锁的上锁与开锁。
3、输出显示电路BCD译码、动态扫描电路、指示灯电路(或者为语音控制电路)。
三、功能电路的设计:1、键盘接口电路:图1(1)矩阵式键盘工作原理:矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。
如图2所示为一4×4 矩阵式键盘。
矩阵式键盘以行、列形式排列,图中为4 行4 列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3—KEYR0 为扫描信号,其中的某一位为0即扫描其中的一行,具体见表1。
矩阵加密面板使用说明-通用版(加密操作)概述◆面板加锁原理✧面板内置日期功能,通过在面板上输入密码设定到期日期,可达到面板到期失效的功能。
✧面板失效时,面板上除:电源开、电源关、急停三个按键外,其余全部失效,此时PLC中各按键的状态不会再发生变化,且面板发出“主轴停止、进给保持”信号给PLC。
(不会发生变化是指维持面板到期前各按键的状态,而不是复原所有按键)✧用户通过专用软件生成解密密码,在面板上输入此密码,可准确设定面板到期日期与到期时间(精确到小时)。
◆面板自保护✧洛克公司对PLC软体及面板程序进行了特别处理,可有效防止不同用户之间相互代用。
✧每块面板可由用户设定一个暗码,生成解密密码时需输入此暗码,故其它任何人是不会得到正确的解密密码的。
◆面板其它功能✧背景灯功能,可通过系统屏幕控制打开或关闭,且具有休眠功能,可自定义休眠时间。
✧蜂鸣器功能,可通过系统屏幕控制蜂鸣器打开或关闭。
✧波段开关位置指示。
✧快速加锁功能,可快速设定一天、二天、三天到期,此功能还可用于面板完全解锁后再次加锁。
✧PLC会实时知道面板状态,如还有几天到期,或还有几个小时到期等。
✧数码管显示进制选择:BCD码、二进制。
◆面板开始使用前的设定✧用户收到的面板刚上电会显示“H1.??”,此时请输入功能密码,具体输入过程中的界面见下文(功能密码请向洛克公司索取:)✧用户输入正确的功能密码后,面板显示“E 1”,表示没有设定暗码,按E确定后面板显示“A1.??”,此时请输入面板暗码,此暗码在面板解密时用到,请妥善保管暗码,具体输入过程中的界面见下文。
✧暗码输入完毕后,面板进入待机状态“----”,此时面板可执行二次功能,可按0查看面板序号,请将面板序号与面板暗码对应保管。
✧请设定面板后面的“系统设定”,若用于发那科/三菱M70系统,请跳线至0V,若用于三菱E60\E68等,请跳线至24V。
✧若用于发那科系统,还需要继续设定,若用于CE56、CB106,则跳线至A14脚;若用于CE57,则跳线至B14。
VHDL专题--------电子密码锁一、设计要求:设计一个简单的数字电子密码锁,密码为4位。
功能:1、密码输入:每按下一个键,要求在数码管上显示,并依次左移;2、密码清除:清除密码输入,并将输入置为”0000”;3、密码修改:将当前输入设为新的密码;4、上锁和开锁。
二、电路组成:为达到以上功能,可将电子密码锁分为以下几个模块:1、键盘接口电路:键盘矩阵、键盘扫描、键盘消抖、键盘译码及按键存储。
2、电锁控制电路:数字按键输入、存储及清除。
功能按键的设计。
密码清除、修改与存储。
电锁的激活与解除。
3、输出显示电路BCD译码、动态扫描电路。
三、功能电路的设计:1、键盘接口电路:矩阵式键盘工作原理:矩阵式键盘是一种常见的输入装置,在计算机、电话、手机、微波炉等各工电子产品中被广泛应用。
如图所示为一3×4矩阵式键盘。
矩阵式键盘以行、列形式排列,图中为4行3列,键盘上的每一个按键盘其实是一个开关电路,当某键被按下时,该按键所对应的位置就呈现逻辑0的状态,键盘的扫描可以以行扫或列扫方式进行,图中为行扫方式,KEYR3—KEYR0为扫描信号,其中的某一位为0即扫描其中的一行,具体见表1-1.12键盘扫描信号KEYR3与第一行相连,KEYR2与第二行相连,依此类推。
很显然,扫描信号的变化顺序为:0111、1011、1101、1110,周而复始。
在扫描的过程中,当有键按下时,对应的键位就为逻辑0状态,从而从KEYC2..0读出的键值相应列为0.具体情况如表1-2所示:若从KEYC2..0读出的值全为1时,表示没有键被按下,则不进行按键的处理。
如果的键被按下,则将KEYC2..0读出的送至键盘译码电路进行译码。
表1-2 键盘扫描与其对应的键值的关系时序产生电路:在一个系统的设计中,往往需要多种时钟信号,最为方便的方法是利用一个自由计数器来产生各种需要的频率。
本电路需要:系统主时钟、消抖取样时钟和动态扫描时钟。