名称:数码管显示电路设计VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
一、课题目的
1.实现十六进制计数显示。
2.实现常见英语字母显示。
二、课题原理
用数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。
数码管由7段显示输出,利用7个位的组合输出,就可以形成相关的英语字母的对应显示(注意:不是所有字母都能显示!)。下表显示常见的字母与7段显示关系。
段 字母 | A | b | c | d | e | f | g |
A | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
B | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
C | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
D | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
E | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
F | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
H | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
P | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
L | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
常见的字母与7段显示关系
三、课题内容
1.查找资料,理解设计原理。
2.用VHDL语言 编写一个简单的0~9和字母显示电路(数码管类别不限)。
3.在QuartusⅡ上完成设计输入、全程编译和功能仿真。
四、设计提示
1.字母轮换显示电路可以采用状态图的方式设计,对于每一个时钟脉冲,将改变一种态。
1. 工程文件
2. 程序文件
3. 程序编译
4. 状态图
5. 仿真图
仿真图说明,以上图中显示B为例,仿真图显示值为1111100,也就是
hex[6]=1,-----对应g
hex[5]=1,-----对应f
hex[4]=1,-----对应e
hex[3]=1,-----对应d
hex[2]=1,-----对应c
hex[1]=0,-----对应b
hex[0]=0,-----对应a
查询下表可知显示的是b,故仿真正确。
部分代码展示:
library IEEE; use IEEE.std_logic_1164.all; --数码管译码模块 entity segment is port ( CLK: in std_logic;--时钟 RST: in std_logic;--复位 hex: out std_logic_vector(6 downto 0)); --数码管信号,gfedcba,g为最高位,a为最低位 end segment; architecture behav of segment is TYPE states IS (st_0,st_1,st_2,st_3,st_4,st_5,st_6,st_7,st_8,st_9,st_A,st_B,st_C,st_D,st_E,st_F,st_H,st_P,st_L);--定义各个状态 signal PST:states; begin process(CLK,RST) begin IF(RST='1')then PST<=st_0;--复位到st_0 ELSIF rising_edge (CLK) then case PST IS--对于每一个时钟脉冲,改变一种状态 when st_0=> PST<=st_1;--依次按顺序变化 when st_1=> PST<=st_2; when st_2=> PST<=st_3; when st_3=> PST<=st_4; when st_4=> PST<=st_5; when st_5=> PST<=st_6; when st_6=> PST<=st_7; when st_7=> PST<=st_8; when st_8=> PST<=st_9; when st_9=> PST<=st_A; when st_A=> PST<=st_B; when st_B=> PST<=st_C; when st_C=> PST<=st_D; when st_D=> PST<=st_E; when st_E=> PST<=st_F; when st_F=> PST<=st_H; when st_H=> PST<=st_P; when st_P=> PST<=st_L; when st_L=> PST<=st_0;--回到初始状态 when others => PST<=st_0; end case; end if;
源代码
点击下方的公众号卡片获取