• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

4位密碼鎖矩陣鍵盤輸入,錯誤報警密碼修改,VHDL代碼

5小時前
64
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-231015231310U4.doc

共1個文件

名稱:4位密碼鎖采用矩陣鍵盤輸入密碼(代碼在文末付費下載)

軟件:Quartus

語言:VHDL

代碼功能:

1、 設(shè)計一個四位的電子密碼鎖,每按下一個數(shù)字鍵,就輸入一個數(shù)字,并在顯示器上顯示該數(shù)值,同時將先前輸入的數(shù)據(jù)左移。

2、此外,包含密碼清除(密碼右移),密碼更改(可以通過按鍵修改新密碼),密碼上鎖和密碼解除(按下解除首先檢查密碼是否正確,密碼正確就開鎖)功能。

3、密碼連續(xù)錯誤3次報警。

演示視頻:

部分代碼展示

--設(shè)計一個四位的電子密碼鎖,
--每按下一個數(shù)字鍵,就輸入一個數(shù)字,
--并在顯示器上顯示該數(shù)值,同時將先前輸入的數(shù)據(jù)左移。
--此外,包含密碼清除(密碼右移),
--密碼更改(可以通過按鍵修改新密碼),
--密碼上鎖和密碼解除(按下解除首先檢查密碼是否正確,密碼正確就開鎖)功能。
--密碼連續(xù)錯誤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);--數(shù)碼管顯示
??????HEX1??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--數(shù)碼管顯示
??????HEX2??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--數(shù)碼管顯示
??????HEX3??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管顯示
???);
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);

設(shè)計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. Testbench

6. 仿真圖

整體仿真圖

上圖仿真過程為先輸入1234開鎖(默認密碼1234),開鎖后按下修改鍵進入修改模式,再輸入2537,確認,將密碼修改為2537,再關(guān)鎖。然后再輸入1234,無法開鎖,在輸入2537,開鎖。

矩陣鍵盤模塊仿真

顯示模塊

上圖仿真的是數(shù)碼管顯示模塊,4個數(shù)碼管顯示輸入的4位密碼,每輸入1位,密碼左移一次。

密碼輸入模塊

上圖為密碼輸入模塊,按鍵0~9輸入密碼,每輸入1位,密碼左移一次。

密碼鎖控制模塊

密碼鎖控制模塊為狀態(tài)機控制,state信號為當前狀態(tài)指示,密碼正確時led_open輸出高電平。Error_cnt信號為輸入密碼錯誤計數(shù)。

密碼修改模塊

在密碼修改狀態(tài)下,輸入新的密碼并按下確認鍵,修改密碼。上圖為將密碼1234修改為2537

報警模塊

State為密碼鎖當前狀態(tài),當密碼輸入連續(xù)錯誤3次,報警,上圖仿真輸入錯誤只有1次,無報警。

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=191

  • 1-231015231310U4.doc
    下載

相關(guān)推薦