1.开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。否则,系统进入“错误”状态,并发出报警信号。
2.开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。
3.串行数字锁的报警方式是点亮77指示灯LF,并使喇叭鸣叫来报警,报警动作响1分钟,停10秒钟后再重复出现,直到按下复位开关,报警才停止。此时,数字锁自动进入等待下一次开锁的状态。
4.报警器可以兼作门铃用,门铃响的时间通常为7~10秒。
2 设计分析及系统方案设计
系统的结构图如下图所示:
本实验要求串行输入八位密码,密码可以随意设置,可以任意更改, 并且能够存储.而且能够显示出当前已经输入或者设置的位数,待输入八位后通过比较电路与预先设置的密码进行比较.如果输入的密码与存储的密码相同锁体打开 如果输入的密码与存储的密码不同则报警系统打开发出警报.由于还要求有门铃功能所以增加一个门铃输入当门铃按下后 门铃响十秒钟。
对于密码存储以及密码输入比较部分主要由load 控制。
Load | 0 | 1 |
li | 0 | 1 |
La | 1 | 0 |
系统功能 | 设置密码 | 输入密码 |
load为0时系统功能为设置密码,此时只需要顺序串行输入八位0/1密码即可,系统将输入的密码自动保存在存储器内以便于输入的密码进行比较,当load为1时系统功能为输入密码,此时只需要顺序串行输入八位0/1即可,待输入八位后系统自动将刚输入的密码与存储器内的密码进行比较如果密码正确则开锁信号lt为1,否则警报信号lf 和响铃信号alm为1 lt为0
对于门铃部分 当检测到press信号的下降沿时门铃开始响,计数器开始计数,此时始终脉冲频率为50MHz/16MHz=3.125Hz ,此时当计数器为30时既时间为30/3.125=9.6秒时门铃自动关闭。
3系统以及模块硬件电路设计
系统电路图
系统电路图如上如所示 其中clk1脚接入50MHz的方波,load有两种状态----高电平和低电平状态。k0 k1 press clr 分别接到四个去抖开关上开关按下去为低电平 lt alm2 lf alm分别接到四个发光二级管上,当输出为1时二极管发光。y0[0~6]分别接到HEX7对应的引脚上实现数码管显示功能。Y1[0~6]分别接到HEX5对应的引脚上实现数码管显示功能。其余各种逻辑功能由芯片内部计算执行来实现。芯片内部程序通过对clk、load、k0、k1、press、clr输入信号的处理通过lt、alm2、lf、alm、y0[0~6]、y1[0~6]进行输出来达到系统所需要的功能。
DE2开发板上使用的元件要给出使用管脚编号。
接口 名称 | 类型 (输入/输出) | 符号 | 引脚号 | 说明 |
CLK | 输入 | CLOCK_50 | PIN_N2 | 输入50MHz的时钟频率 |
LOAD | 输入 | SW[17] | PIN_V2 | 修改(0)/设置(1)密码 |
K0 | 输入 | KEY[0] | PIN_G26 | 输入密码0(低电平有效) |
K1 | 输入 | KEY[1] | PIN_N23 | 输入密码1(低电平有效) |
Press | 输入 | KEY[2] | PIN_P23 | 门铃按钮(低电平有效) |
CLR | 输入 | KEY[3] | PIN_W26 | 复位开关(低电平有效) |
lt | 输出 | LEDR[0] | PIN_AE23 | 开锁成功指示灯 |
alm2 | 输出 | LEDR[12] | PIN_AD15 | 门铃(小灯) |
lf | 输出 | LEDR[16] | PIN_AE12 | 开锁失败指示灯 |
alm | 输出 | LEDR[17] | PIN_AD12 | 开锁失败报警器(小灯) |
y0[0] | 输出 | HEX7[0] | PIN_L3 | 输入密码七段码显示 |
y0[1] | 输出 | HEX7[1] | PIN_L2 | 输入密码七段码显示 |
y0[2] | 输出 | HEX7[2] | PIN_L9 | 输入密码七段码显示 |
y0[3] | 输出 | HEX7[3] | PIN_L6 | 输入密码七段码显示 |
y0[4] | 输出 | HEX7[4] | PIN_L7 | 输入密码七段码显示 |
y0[5] | 输出 | HEX7[5] | PIN_P9 | 输入密码七段码显示 |
y0[6] | 输出 | HEX7[6] | PIN_N9 | 输入密码七段码显示 |
y1[0] | 输出 | HEX5[0] | PIN_T2 | 修改密码七段码显示 |
y1[1] | 输出 | HEX5[1] | PIN_P6 | 修改密码七段码显示 |
y1[2] | 输出 | HEX5[2] | PIN_P7 | 修改密码七段码显示 |
y1[3] | 输出 | HEX5[3] | PIN_T9 | 修改密码七段码显示 |
y14] | 输出 | HEX5[4] | PIN_R5 | 修改密码七段码显示 |
y1[5] | 输出 | HEX5[5] | PIN_R4 | 修改密码七段码显示 |
y1[6] | 输出 | HEX5[6] | PIN_R3 | 修改密码七段码显示 |
4 系统的VHDL设计
系统的主要功能是通过VHDL语言来实现的。语言代码如下。
本系统运行在联想计算机平台和Altera DE2平台,用的是quartus60软件调试环境,系统的参数选取均按照要求适当选取。
对密码模块:开始时,先给系统清零,即使clr为0(按下KEY[3]),若设置密码则SW[17]开关拨下使load为低电平,此时通过按去抖开关KEY[0],KEY[1]进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位
设置密码:仿真图如下如所示。设置密码时将SW[17]拨下使load为低电平并且clr为高电平此时可以设置密码,由图可以看出设置的密码为00000111每设置一位密码数码管HEX5的七个引脚都随着y1[0~6]的变化而变化,进而显示出当前的位数。
设置密码仿真图
当输入密码时,SW[17]开关拨上使load为高电平输入密码开始,此时通过按去抖开关KEY[0],KEY[1]进行密码设置0和1,每输入一位密码则数目管显示的数字加1直到输入第8位。系统自动将输入的密码与预设的密码进行比较如果相同则开锁。开锁成功仿真图如下如所示,此时设置的密码为00001111输入的密码为00001111,由图可以看每设置一位密码数码管HEX5的七个引脚都随着y1[0~6]的变化而变化,进而显示出当前的位数。此时clr为高电平load为低电平当密码输入完毕后将load变为高电平进行密码输入输入方法与设置密码相同没设置一位密码数码管HEX7的七个引脚都随着y0[0~6]的变化而变化,进而显示出当前的位数。当输完八位密码后系统将其与预先设置的密码进行对比,由于设置与输入的密码相同所以lt为高电平开锁,lf、alm为低电平没有反应。
密码正确开锁成功仿真图
开锁不成功仿真图如下如所示,此时设置的密码为00000111输入的密码为00000011,由图可以看每设置一位密码数码管HEX5的七个引脚都随着y1[0~6]的变化而变化,进而显示出当前的位数。此时clr为高电平load为低电平当密码输入完毕后将load变为高电平进行密码输入输入方法与设置密码相同没设置一位密码数码管HEX7的七个引脚都随着y0[0~6]的变化而变化,进而显示出当前的位数。当输完八位密码后系统将其与预先设置的密码进行对比,由于设置与输入的密码不同所以lt为低电平不开锁,lf、alm为高电平,警报响起,警报灯亮起
密码错误开锁不成功仿真图
门铃功能仿真图
完整的Word格式文档51黑下载地址:
文档.doc
(881 KB, 下载次数: 35)
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |