當前位置:編程學習大全網 - 源碼下載 - 本設計采用先進EDA技術,利用QuartusII工作平臺及硬件描述語言VHDL,設計壹種電子密碼鎖。設計的密碼鎖的

本設計采用先進EDA技術,利用QuartusII工作平臺及硬件描述語言VHDL,設計壹種電子密碼鎖。設計的密碼鎖的

壹、系統功能概述

數字密碼鎖實現:1、了不需要帶鑰匙,只要記住開鎖密碼即可開鎖的功能。2、在輸入密碼正確後,還可以修改密碼。3、在輸入密碼的過程中,不顯示密碼,只顯示無規律的提示某位密碼是否輸入完畢,防止了密碼的泄漏,大大加強了密碼鎖的保密性。

本演示系統實現了:1、輸入密碼正確後,正確小燈(led)亮,錯誤小燈(led1)不亮;2、正確修改密碼後,正確小燈(led)不亮,錯誤小燈(led1)不亮;3、輸入錯誤密碼,正確小燈(led)不亮,錯誤小燈(led1)亮,並有1KHz鬧鈴聲產生;4、按下reset後,密碼歸為初始密碼。

開鎖代碼為8位二進制數,當輸入代碼的位數和位值與鎖內給定的密碼壹致,且按規定程序開鎖時,方可開鎖,並點亮開鎖指示燈D3。否則系統進入“錯誤”狀態,並發出報警信號。

開鎖程序由設計者確定,並鎖內給定的密碼是可調的,且預置方便,保密性好。

串行數字鎖的報警方式是點亮指示燈D6,並使喇叭鳴叫來報警,報警動作直到按下復位開關,報警才停止。此時,數字鎖自動進入等待下壹次開鎖的狀態。

源代碼

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity code is

port( clk: in std_logic;--電路工作時的時鐘信號

clk1: in std_logic;--鬧鈴產生需要的時鐘信號

k: in std_logic;--高電平表示輸入1

led: out std_logic;--輸入正確時亮

led1: out std_logic;--輸入錯誤時亮

reset: in std_logic;-- 按下時復位

want: in std_logic;--是否修改密碼

alarm: out std_logic;--輸出鬧鈴聲

show: out std_logic_vector(3 downto 0));--提示作用

end;

architecture a of code is

signal temp: std_logic_vector(3 downto 0);--輸入壹位加1

signal code: std_logic_vector(7 downto 0);--儲存密碼

signal getcode: std_logic_vector(7 downto 0);--儲存修改後的密碼

signal counter: std_logic_vector(3 downto 0);--計數

signal allow: std_logic;--是否允許修改密碼

signal ring:std_logic;--是否接通鬧鈴

begin

process(clk)

begin

if ring='1' then

alarm<=clk1;--鬧鈴接通

else

alarm<='0';--鬧鈴截至

end if;

if reset='1' then--按下reset後,密碼歸為初始密碼

getcode<="00000000";--初始密碼

counter<="0000";--內部計數

code<="11001000";--密碼

led<='0';

led1<='0';

allow<='0';

elsif clk'event and clk='1' then--輸入clk脈沖,則接收1位密碼

getcode<=getcode(6 downto 0)&k;--將這1位密碼並入getcode中的最後壹位

if counter="1000" then--輸入為8位數碼時比較

if code=getcode then

led<='1';--正確燈亮

led1<='0';

ring<='0';

allow<='1';--允許修改密碼

elsif allow='1' and want='1' then--如果允許輸入且想輸入

code<=getcode;--輸入新密碼

led<='0';

led1<='0';

else

allow<='0';

led<='0';

led1<='1';--錯誤燈亮

ring<='1';--鬧鈴響

end if;

counter<="0000";--重新計數

else

counter<=counter+1; --累加

temp<=temp+1;--為防止泄露密碼,特別設置

end if;

end if;

show <= temp;

end process;

end;

  • 上一篇:治愈源代碼
  • 下一篇:端遊是什麽意思
  • copyright 2024編程學習大全網