密码锁设计VHDL源程序文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.2系统的输入、输出端口以及寄存器清单及说明:

CLK 输入时钟方波信号端口

KIN 键盘按键输入端口

KOUT 键盘完整编码码值输出端口(七位二进制数)KOUT1 扫描信号输出端口(三位二进制数)

SIN 键盘消抖输入端口(七位二进制数)

SOUT 键盘消抖输出端口(七位二进制数)

LIN 键盘按键编码模块输入端口(七位二进制数)DF 数字按键标志寄存器

FF 功能按键标志寄存器

ND 数字按键识别编码寄存器

NF 功能按键识别编码寄存器

LOCK 电子密码锁上锁状态标志寄存器

LOCK1 电子密码锁报警状态标志寄存器

UNLOCK 电子密码锁开锁状态标志寄存器

NULL1 电子密码锁无密码状态标志寄存器

DATA 电子密码锁数码显示数据寄存器

CAT 电子密码锁数码显示位选寄存器

DISPLAY 电子密码锁数码显示段选寄存器(十七位二进制数)NUM0、NUM1、NUM2、NUM3数码显示中分位显示数据寄存器

DISNUM 数码显示段选数据寄存器

I1 数码显示计数器

SCANS 键盘扫描中按键完整编码寄存器

SCAN 键盘扫描寄存器

CNT 键盘消抖计数器

SIN1 键盘按键键值寄存器

I 键盘扫描计数器

DF1 数字按键状态标志寄存器

ACC 键盘数字输入暂存器

T 报警计数器

REG 电子密码锁密码存储器

NC 计数器

1键盘输入扫描部分源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY kbscan1 is

PORT(clk:in STD_LOGIC;

kin:in STD_LOGIC_VECTOR(3 DOWNTO 0);---PC7-PC4 kout:out STD_LOGIC_VECTOR(7 downto 0);--PC3--PC

kout1: out STD_LOGIC_VECTOR(3 downto 0));

end kbscan1;

architecture a of kbscan1 is

signal scans: std_logic_vector(7 downto 0);--PC7--PC0

signal scan : std_logic_vector(3 downto 0);--PC3--PC0

signal cnt :integer range 0 to 140;

signal sin1:std_logic_vector(3 downto 0);

signal i:integer range 0 to 3;

begin

scans<=scan& kin;

kout<=scans;

kout1<=scan;

process(clk)

begin

if(falling_edge(clk))then

if(i=3)then

i<=0;

else

i<=i+1;

end if;

case i is

when 0=>scan<="0001";

when 1=>scan<="0010";

when 2=>scan<="0100";

when 3=>scan<="1000";

end case;

end if;

end process;

End a;

2键盘输入消抖部分源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY xiaodou is

Port(clk :in STD_LOGIC;

sin:in std_logic_vector(7 downto 0);

sout:out std_logic_vector(7 downto 0));

end xiaodou;

architecture behavioral of xiaodou is

signal cnt :integer range 0 to 120;

signal sin1:std_logic_vector(7 downto 0);

begin

process(clk)

begin

sin1<=sin;

if (rising_edge(clk))then

if(sin1=sin)then

cnt<=cnt+1;

else

sin1<=sin;

cnt<=0;

end if;

if(cnt=120)then

sout<=sin;

cnt<=0;

end if;

end if;

end process;

end behavioral;

3键盘输入编码部分源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY bianma is

PORT(clk:in STD_LOGIC;

lin:in STD_LOGIC_VECTOR(7 DOWNTO 0);---PC7-PC4

DF,FF: out std_logic;

nd,nf:BUFFER std_logic_vector(3 downto 0));

end bianma;

architecture b of bianma is

begin

process(clk)

begin

相关文档
最新文档