📄 vhdl1.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all; -----库文件
entity jianpan is
port(clk : in std_logic; -----主时钟信号
start : in std_logic; -----高电平有效
KBCol : in std_logic_vector(3 downto 0); -----列扫描信号
KBRow : out std_logic_vector(3 downto 0); -----行扫描信号
seg7 : out std_logic_vector(6 downto 0); -----7段显示信号
scan : out std_logic_vector(7 downto 0) -----7段选择信号
);
end ;
architecture bev of jianpan is
signal count: std_logic_vector(1 downto 0);
signal sta: std_logic_vector(1 downto 0);
begin
scan<="00000001"; --只使用一个数码管,也可以使用数码管跳线选中一个
a: process(clk) ------循环扫描计数器
begin
if clk'event and clk='1' then
count<=count+1;
end if;
end process a;
b: process(clk) -----循环列扫描进程
begin
if(clk'event and clk='1')then
case count(1 downto 0) is
when "00"=> KBRow<="0111";
sta<="00";
when "01"=> KBRow<="1011";
sta<="01";
when "10"=> KBRow<="1101";
sta<="10";
when "11"=> KBRow<="1110";
sta<="11";
when others=> KBRow<="1111";
end case;
end if;
end process b;
c:process(clk,start) -----行扫描译码进程
begin
if start='0' then
seg7<="0000000";
elsif(clk'event and clk='1')then
case sta is
when "00"=> --c840列
case KBCol is
when "1110"=> seg7<="1001110";
when "1101"=> seg7<="1111111";
when "1011"=> seg7<="0110011";
when "0111"=> seg7<="1111110";
when others=> seg7<="0000000"; --1取消这四行结果会有什么变化?
end case;
when "01"=> --d951列
case KBCol is
when "1110"=> seg7<="0111101";
when "1101"=> seg7<="1110011";
when "1011"=> seg7<="1011011";
when "0111"=> seg7<="0110000";
when others=> seg7<="0000000"; --1取消这四行结果会有什么变化?
end case;
when "10"=> --ea62列
case KBCol is
when "0001"=> seg7<="1001111";
when "0010"=> seg7<="1110111";
when "0100"=> seg7<="1011111";
when "1000"=> seg7<="1101101";
when others=> seg7<="0000000"; --1取消这四行结果会有什么变化?
end case;
when "11"=> --fb73
case KBCol is
when "0001"=> seg7<="1000111";
when "0010"=> seg7<="0011111";
when "0100"=> seg7<="1110000";
when "1000"=> seg7<="1111001";
when others=> seg7<="0000000"; --1取消这四行结果会有什么变化?
end case;
when others=> seg7<="0000000";
end case;
end if;
end process;
end bev;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -