1.密码锁的源码设计用VHDL语言描述
密码锁的设计用VHDL语言描述
一、系统功能概述
数字密码锁实现:1、源码了不需要带钥匙,源码只要记住开锁密码即可开锁的源码音咖源码功能。2、源码在输入密码正确后,源码还可以修改密码。源码3、源码在输入密码的源码过程中,不显示密码,源码只显示无规律的源码map stl源码提示某位密码是否输入完毕,防止了密码的源码泄漏,大大加强了密码锁的源码保密性。
本演示系统实现了:1、源码输入密码正确后,源码正确小灯(led)亮,spring工厂源码错误小灯(led1)不亮;2、正确修改密码后,正确小灯(led)不亮,错误小灯(led1)不亮;3、输入错误密码,叶老师源码正确小灯(led)不亮,错误小灯(led1)亮,并有1KHz闹铃声产生;4、按下reset后,密码归为初始密码。design特效源码
开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯D3。否则系统进入“错误”状态,并发出报警信号。
开锁程序由设计者确定,并锁内给定的密码是可调的,且预置方便,保密性好。
串行数字锁的报警方式是点亮指示灯D6,并使喇叭鸣叫来报警,报警动作直到按下复位开关,报警才停止。此时,数字锁自动进入等待下一次开锁的状态。
源代码
library ieee;
use ieee.std_logic_.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<="";--初始密码
counter<="";--内部计数
code<="";--密码
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="" 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<="";--重新计数
else
counter<=counter+1; --累加
temp<=temp+1;--为防止泄露密码,特别设置
end if;
end if;
show <= temp;
end process;
end;