实验报告四位数电子密码锁

  • 格式:docx
  • 大小:96.90 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四位数电子密码锁

一,实验目的

1.学习查找相关资料,并对小型项目开发有一定的认识;

2.掌握能进行模块化设计的能力;

3.学会对各部分电路,进行讨论、说明与仿真验证,最后在整合起来。

二,硬件要求

1、拨位开关。

2、FPGA主芯片:EP1K30QC208。

3、LED显示模块。

4、4*4键盘。

5、七段数码管

三,实验原理

通过对4×4键盘进行扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配。

两功能键:在开锁状态时,一个用于清除数字,一个用于激活电锁。在上锁状态,一个用于清除,一个用于解除电锁。

四、实验内容及步骤

1、编写4*4数字密码锁的VHDL代码。

2、用MaxPlusII对其进行编译仿真。

3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。

4、给芯片进行管脚绑定,在此进行编译。

5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确

连线。

6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。

五、程序代码及说明

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL ;

USE IEEE.STD_LOGIC_UNSIGNED.ALL ;

LIBRARY altera; ----这是利用库编译成的去拌电路。

USE altera.maxplus2.ALL;

entity debouncing is

port( D_IN,CLK :IN STD_LOGIC;

D_OUT:OUT STD_LOGIC);

END DEBOUNCING;

ARCHITECTURE A OF debouncing IS

SIGNAL VCC,INV_D:STD_LOGIC;

SIGNAL D1,D0:STD_LOGIC;

signal Q0,Q1: STD_LOGIC;

BEGIN

VCC<='1';

INV_D<=NOT D_IN;

DFF1: DFF PORT MAP(D=>VCC,Q=>Q0,CLK=>CLK,CLRN=>INV_D,PRN=>VCC);

DFF2: DFF PORT MAP(D=>VCC,Q=>Q1,CLK=>CLK,CLRN=>Q0,PRN=>VCC); PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

D0<=NOT Q1;

D1<=D0;

END IF;

END PROCESS;

D_OUT<=NOT(D1 AND NOT D0);

END A;

--*************************************************************** --这里密码锁的主程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL ;

USE IEEE.STD_LOGIC_UNSIGNED.ALL ;

LIBRARY altera;

USE altera.maxplus2.ALL;

--*********************************************

ENTITY elec_lock IS

PORT (

CLK_4M : IN STD_LOGIC ; --system original clock 4M

CLK_SCAN,outnum : OUT STD_LOGIC_VECTOR (3 downto 0) ; --scan sequence KEY_IN : IN STD_LOGIC_VECTOR (3 downto 0) ; --KEY IN button code

FLAG_NUMB : OUT STD_LOGIC ; 判断按下的是数字键

FLAG_FUNC : OUT STD_LOGIC ; 判断按下的是功能键

ENLOCK : OUT STD_LOGIC ; --1:LOCK, 0:UNLOCK

SELOUT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); ---38选择信号

SEGOUT : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) -- SEG7 Display

);

END elec_lock ;

--********************************************* ARCHITECTURE a OF elec_lock IS

component debouncing --调用去抖

port( d_in : IN STD_LOGIC ;