4位密码锁矩阵键盘输入,错误报警密码修改,VHDL,视频代码

名称:4位密码锁采用矩阵键盘输入

软件:Quartus

语言:VHDL

代码功能:

    1、 设计一个四位的电子密码锁,每按下一个数字键,就输入一个数字,并在显示器上显示该数值,同时将先前输入的数据左移。

    2、此外,包含密码清除(密码右移),密码更改(可以通过按键修改新密码),密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。

    3、密码连续错误3次报警

代码下载地址:

4位密码锁矩阵键盘输入,密码错误报警密码修改,VHDL_Verilog/VHDL资源下载名称:4位密码锁采用矩阵键盘输入密码(代码在文末付费下载)软件:Quartus语言:VHDL代码功能: 1、 设计一个四位的电子密码锁,每按下一个数字键,就输入一个数字,并在显示器上显示该数值,同时将先前输入的数据左移。 2、此外,包含密码清除(密码右移),密码更改(可以通过按键修改新密码),密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。 3、密码连续错icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=191

FPGA代码资源下载网:hdlcode.com

部分代码展示

--设计一个四位的电子密码锁,
--每按下一个数字键,就输入一个数字,
--并在显示器上显示该数值,同时将先前输入的数据左移。
--此外,包含密码清除(密码右移),
--密码更改(可以通过按键修改新密码),
--密码上锁和密码解除(按下解除首先检查密码是否正确,密码正确就开锁)功能。
--密码连续错误3次报警
LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--顶层模块
ENTITY mimasuo IS
   PORT (
      clk       : IN STD_LOGIC;
      L_row       : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--矩阵键盘行 
      H_col       : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--矩阵键盘列 
      
      confirm   : IN STD_LOGIC;--确认键
      reset     : IN STD_LOGIC;--重置键
      modify    : IN STD_LOGIC;--修改键
      lock_up   : IN STD_LOGIC;--锁住键
  
   delect    : IN STD_LOGIC;--删除键
      
      alarm     : OUT STD_LOGIC;--报警
      led_open  : OUT STD_LOGIC;--开锁指示信号,高电平表示开锁,低电平表示锁住
      
      HEX0      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示
      HEX1      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示
      HEX2      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管显示
      HEX3      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管显示
   );
END mimasuo;
ARCHITECTURE trans OF mimasuo IS
--例化报警模块
--4x4矩阵键盘模块
COMPONENT key_4x4 IS
   PORT (
      clk         : IN STD_LOGIC;
      reset       : IN STD_LOGIC;
      L_row       : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--行 
      H_col       : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--列 
      key_number  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--按键键值
   );
END COMPONENT;
--报警模块
   COMPONENT alarm_on IS
      PORT (
         clk       : IN STD_LOGIC;
         current_state : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
         alarm     : OUT STD_LOGIC
      );
   END COMPONENT;
   --修改密码模块(寄存器模块,存储正确密码)
   COMPONENT reset_password IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
         correct_password : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
         confirm   : IN STD_LOGIC;
         current_state : IN STD_LOGIC_VECTOR(2 DOWNTO 0)
      );
   END COMPONENT;
   --例化显示模块
   COMPONENT display IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--当前输入密码
         HEX0      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX1      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX2      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
         HEX3      : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
   END COMPONENT;
   --例化密码输入模块
   COMPONENT mima_input IS
      PORT (
         clk       : IN STD_LOGIC;
         key_0     : IN STD_LOGIC;
         key_1     : IN STD_LOGIC;
         key_2     : IN STD_LOGIC;
         key_3     : IN STD_LOGIC;
         key_4     : IN STD_LOGIC;
         key_5     : IN STD_LOGIC;
         key_6     : IN STD_LOGIC;
         key_7     : IN STD_LOGIC;
         key_8     : IN STD_LOGIC;
         key_9     : IN STD_LOGIC;
   delect    : IN STD_LOGIC;--删除键
         current_state : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
         password  : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
      );
   END COMPONENT;
   --例化密码锁控制模块
   COMPONENT mimasuo_ctrl IS
      PORT (
         clk       : IN STD_LOGIC;
         password  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
         correct_password : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
         confirm   : IN STD_LOGIC;
         reset     : IN STD_LOGIC;
         modify    : IN STD_LOGIC;
         lock_up   : IN STD_LOGIC;
         led_open  : OUT STD_LOGIC;
         current_state : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
      );
   END COMPONENT;
   
   --定义信号
   SIGNAL current_state    : STD_LOGIC_VECTOR(2 DOWNTO 0);
   SIGNAL password         : STD_LOGIC_VECTOR(15 DOWNTO 0);
   SIGNAL correct_password : STD_LOGIC_VECTOR(15 DOWNTO 0);

设计文档:

设计文档.doc

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次,无报警。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值