📄 ok1.txt
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ccc is
port(clk,ps2clk,data:in std_logic;
ho: out std_logic_vector(7 downto 0);
vo: out std_logic_vector(7 downto 0);
led:out std_logic_vector(7 downto 0));
end ccc;
architecture frame of ccc is
signal temp:std_logic_vector(3 downto 0);
signal byte:std_logic_vector(8 downto 0);
signal ready:std_logic;
signal code:std_logic_vector(7 downto 0);
signal counter,counter1:integer range 1 to 8;
begin
process(ps2clk,data)
begin
if(ps2clk'event and ps2clk='0') then
if(data='0' and ready='0')then
ready<='1';
temp<="0000";
elsif (ready='1') then
if temp<"1001" then
temp<=temp+1;
byte(7 downto 0)<=byte(8 downto 1);
byte(8)<=data;
else
ready<='0';
code<=byte(7 downto 0);
temp<="0000";
end if;
end if;
end if;
case code is
when "01000101"=>led<="11111100"; --0
when "00010110"=>led<="01100000"; --1
when "00011110"=>led<="11011010"; --2
when "00100110"=>led<="11110010"; --3
when "00100101"=>led<="01100110"; --4
when "00101110"=>led<="10110110"; --5
when "00110110"=>led<="10111110"; --6
when "00111101"=>led<="11100000"; --7
when "00111110"=>led<="11111110"; --8
when "01000110"=>led<="11110110"; --9
when "00011100"=>led<="11101110"; --A
when "00110010"=>led<="00111110"; --B
when "00100001"=>led<="10011100"; --C
when "00100011"=>led<="11111100"; --D
when "00100100"=>led<="10011110"; --E
when "00101011"=>led<="10001110"; --F
when "00110100"=>led<="10111101"; --G
when "00110011"=>led<="01101110"; --H
when "01000011"=>led<="01110000"; --I
when "00111011"=>led<="11100000"; --J
when "01000010"=>led<="01101110"; --K
when "01001011"=>led<="00011100"; --L
when "00111010"=>led<="11101100"; --M
when "00110001"=>led<="11101100"; --N
when "01000100"=>led<="11111100"; --O
when "01001101"=>led<="11001110"; --P
when "00010101"=>led<="11111101"; --Q
when "00101101"=>led<="11101111"; --R
when "00011011"=>led<="10110111"; --S
when "00101100"=>led<="11100000"; --T
when "00111100"=>led<="01111100"; --U
when "00101010"=>led<="00111000"; --V
when "00011101"=>led<="01111111"; --W
when "00100010"=>led<="01101110"; --X
when "00110101"=>led<="01110110"; --Y
when"00011010"=>led<="11011011"; --Z
when others=>led<="00000000";
end case;
end process;
process(clk)
begin
if (clk'event and clk='1') then
if(counter=8) then
counter<=1;
else
counter<=counter+1;
end if;
end if;
end process;
counter1<=counter;
process(counter1)
begin
case code is
when "01000101"=> --'0'
case counter1 is --'0'
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11100111";
when 3=>ho<="00100000";vo<="11011011";
when 4=>ho<="00010000";vo<="11011011";
when 5=>ho<="00001000";vo<="11011011";
when 6=>ho<="00000100";vo<="11011011";
when 7=>ho<="00000010";vo<="11100111";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00010110"=> --'1'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11101111";
when 3=>ho<="00100000";vo<="11101111";
when 4=>ho<="00010000";vo<="11101111";
when 5=>ho<="00001000";vo<="11101111";
when 6=>ho<="00000100";vo<="11101111";
when 7=>ho<="00000010";vo<="11101111";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00011110"=> --'2'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11100111";
when 3=>ho<="00100000";vo<="11011011";
when 4=>ho<="00010000";vo<="11110111";
when 5=>ho<="00001000";vo<="11101111";
when 6=>ho<="00000100";vo<="11011111";
when 7=>ho<="00000010";vo<="11000011";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00100110"=> --'3'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11000011";
when 3=>ho<="00100000";vo<="11111011";
when 4=>ho<="00010000";vo<="11111011";
when 5=>ho<="00001000";vo<="11000011";
when 6=>ho<="00000100";vo<="11111011";
when 7=>ho<="00000010";vo<="11111011";
when 8=>ho<="00000001";vo<="11000011";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00100101"=> --'4'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11110111";
when 3=>ho<="00100000";vo<="11100111";
when 4=>ho<="00010000";vo<="11010111";
when 5=>ho<="00001000";vo<="10000011";
when 6=>ho<="00000100";vo<="11110111";
when 7=>ho<="00000010";vo<="11110111";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000"; vo<="11111111";
end case;
when "00101110"=> --'5'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11011111";
when 3=>ho<="00100000";vo<="11000011";
when 4=>ho<="00010000";vo<="11011111";
when 5=>ho<="00001000";vo<="11000011";
when 6=>ho<="00000100";vo<="11111011";
when 7=>ho<="00000010";vo<="11000011";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00110110"=> --'6'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11100011";
when 3=>ho<="00100000";vo<="11011111";
when 4=>ho<="00010000";vo<="11000111";
when 5=>ho<="00001000";vo<="11011011";
when 6=>ho<="00000100";vo<="11011011";
when 7=>ho<="00000010";vo<="11100111";
when 8=>ho<="00000001";vo<="11111111";
when others=>ho<="00000000";vo<="11111111";
end case;
when "00111101"=> --'7'
case counter1 is
when 1=>ho<="10000000";vo<="11111111";
when 2=>ho<="01000000";vo<="11000011";
when 3=>ho<="00100000";vo<="11111011";
when 4=>ho<="00010000";vo<="11110111";
when 5=>ho<="00001000";vo<="11110111";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -