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

  • 44
  • 0
  • 约8.38千字
  • 约 11页
  • 2019-03-06 发布于浙江
  • 举报
四位数电子密码锁 实验目的 学习查找相关资料,并对小型项目开发有一定的认识; 掌握能进行模块化设计的能力; 学会对各部分电路,进行讨论、说明与仿真验证,最后在整合起来。 硬件要求 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 DFF2: DFF PROCESS(CLK) BEGIN IF CLKEVENT 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

文档评论(0)

1亿VIP精品文档

相关文档