英文字母显示器

实验六英语字母显示电路设计

一、实验目的

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实验的实践,与自己学到的理论知识相互印证,是自己的学习更上一个台阶。

相关文档
最新文档