用VHDL语言在EDA板上使用数码管显示数字

用VHDL语言在EDA板上使用数码管显示数字

使用板如下,是8管脚的数码管:

在这里插入图片描述

如图所示,有八个输入:
在这里插入图片描述
因此在定义实体的时候需要有八个输出:

ENTITY seg7 IS
	PORT( bcd: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
		a,b,c,d,e,f,g,h: OUT STD_LOGIC);
END seg7;

取不同名字是为了方便对应输入
然后是最重要的一点了,哪个数码管对应哪个位置,经过总结,我得出了结论,如下
在这里插入图片描述
什么意思呢,比如说想让管脚1亮,则可以令输出等于10000000,管脚2亮则输出为01000000,管脚号代表的是管脚在输出序列中的顺序:
因此可得
0:11111100
1:01100000
2:11011010
3:11110010
4:01100110
5:10110110
6:10111110
7:11100000
8:11111110
9:11110110
只要按顺序从A输入到H输入输入如上序列,则可以显示1~9。
根据这一点,可以写出代码:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; 

ENTITY seg7 IS
	PORT( bcd: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
		a,b,c,d,e,f,g,h: OUT STD_LOGIC);
END seg7;

ARCHITECTURE one OF seg7 IS
	SIGNAL dout: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
	WITH bcd SELECT
		dout <="11111100" WHEN "0000",
			"01100000" WHEN "0001",
			"11011010" WHEN "0010",
			"11110010" WHEN "0011",
			"01100110" WHEN "0100",
			"10110110" WHEN "0101",
			"10111110" WHEN "0110",
			"11100000" WHEN "0111",
			"11111110" WHEN "1000",
			"11110110" WHEN "1001",
			"00000000" WHEN OTHERS;
		a<= dout(7);
		b<= dout(6);
		c<= dout(5);
		d<= dout(4);
		e<= dout(3);
		f<= dout(2);
		g<= dout(1);
		h<= dout(0);
END one;

根据不同的输入改变显示管上的数字。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值