英文字母显示器
实验六英语字母显示电路设计
一、实验目的
1、实现十六进制计数显示。
2、实现常见英语字母显示。
二、实验原理
用数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。数码管由7段显示输出,利用7个位的组合输出,就可以形成26个英语字母的对应显示,如下表所示:
三、实验内容
1、用VHDL语言编写一个简单的0~F轮换显示的十六进制计数器电路程序。
2、用VHDL编写一个显示上述字母的轮换显示电路程序。
3、用VHDL编写一个7段显示数码管的动态扫描电路。
4、通过仿真或观察波形验证设计电路的正确性。
5、锁定引脚并下载验证结果。
四、设计提示
字母轮换显示电路可以采用状态图的方式设计,对于每一个时钟脉冲,将改变一种显示。
五、实验报告要求
1、叙述电路工作原理。
2、画出顶层原理图。
设计思路:
本设计采用状态图法,对于每一个时钟脉冲,状态都做一次改变:
七段数码管的每一段也随之改变为相应的状态。并且位码也随之进位:
数字 段码 位码 显示 0 1111110 10000000 0 1 0110000 01000000 1 2 1101101 00100000 2 3 1111001 00010000 3 4 0110011 00001000 4 5 1011011 00000100 5 6 1011111 00000010 6 7 1110000 00000001 7 8 1111111 10000000 8 9 1111011 01000000 9 10 1110111 00100000 A 11 0011111 00010000 B
12 1001110 00001000 C
13 0111101 00000100 D 14 1001111 00000010 E 15 1000111 00000001 F
VHDL 代码:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all; USE ieee.std_logic_arith.all; ENTITY DISPLAY IS PORT (
clk
:IN STD_LOGIC;
DIODE : OUT STD_ULOGIC_VECTOR(6 DOWNTO 0); TURN
: OUT bit_VECTOR(7 DOWNTO 0)
);
END DISPLAY;
ARCHITECTURE a OF DISPLAY IS
signal n:INTEGER RANGE 0 TO 15;
BEGIN
PROCESS (clk)
variable n1: INTEGER RANGE 0 TO 7;
BEGIN
if(clk'event and (clk='1')) then
n1:=n1+1;
end if;
CASE n1 IS
WHEN 0 => TURN<="10000000";
WHEN 1 => TURN<="01000000";
WHEN 2 => TURN<="00100000";
WHEN 3 => TURN<="00010000";
WHEN 4 => TURN<="00001000";
WHEN 5 => TURN<="00000100";
WHEN 6 => TURN<="00000010";
WHEN 7 => TURN<="00000001";
WHEN OTHERS =>TURN<=(others=>'0');
END CASE;
END PROCESS;
PROCESS (clk)
variable n:INTEGER RANGE 0 TO 15;
BEGIN
if(clk'event and (clk='1')) then
if(n>15 ) then
n:=0;
else
n:=n+1;
end if;
end if;
CASE n IS
WHEN 0 => DIODE<="1111110";--0
WHEN 1 => DIODE<="0110000";--1
WHEN 2 => DIODE<="1101101";--2
WHEN 3 => DIODE<="1111001";--3
WHEN 4 => DIODE<="0110011";--4
WHEN 5 => DIODE<="1011011";--5
WHEN 6 => DIODE<="1011111";--6
WHEN 7 => DIODE<="1110000";--7
WHEN 8 => DIODE<="1111111";--8
WHEN 9 => DIODE<="1111011";--9
WHEN 10 => DIODE<="1110111";--A
WHEN 11 => DIODE<="0011111";--B
WHEN 12 => DIODE<="1001110";--C
WHEN 13 => DIODE<="0111101";--D
WHEN 14 => DIODE<="1001111";--E
WHEN 15 => DIODE<="1000111";--F
WHEN OTHERS =>DIODE<=(others=>'0');
END CASE;
END PROCESS;
END a;
仿真波形:
心得体会:
按照以上步骤进行编程与仿真,并将程序下载到试验箱上进行验证,验证结果与预期的结果一致,试验成功。
此次实验,既加强并活跃了我的设计理念,又使我学会了将抽象的问题简单化、具体化的方法。此实验后我更进一步的掌握了状态图设计法。此次实验是本学期的最后一次实验,但是我的学习并不会因此而结束,今后我会更努力地加强EDA实验的实践,与自己学到的理论知识相互印证,是自己的学习更上一个台阶。