2021-04-21 动态数码管依次显示0的VHDL程序

动态数码管依次显示0的VHDL程序

前言
本次实验所用软件为Quartus||9.0,所用板载为EPF10K20T144-4

注意事项
(1)创建VHDL工程时选择板载系列一定要按照板载芯片上的系列选中。
(2)目前使用的Quartus || 9.0不支持输入汉字的功能,只支持显示汉字的功能,所以想要在上面显示汉字,得先在记事本中写好自己要写的汉字内容,然后再复制粘贴到Quartus || 9.0上的文件中。
(3)安装驱动程序前一定要记得禁止驱动程序签名。
(4)配置完引脚以后一定要记得要再编译一次。

实验题目
1、实现8段数码管依次显示0的VHDL程序。

代码实现
1、实现思路如下,设置一个名为s的8位的STD_LOGIC_VECTOR用来控制8个数码管的电路开关(注:0为开,1为关),一个名为q的7位的STD_LOGIC_VECTOR,用来接动态数码管的AG引脚,然后再设置一个名为clk的时钟,用来控制数码管的依次显示。(注:代码如下)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity Digital_tube_1 is
port(
clk:in std_logic;--------------------------------时钟信号
s:out std_logic_vector(7 downto 0);--------------数码管
q:out std_logic_vector(6 downto 0));-------------段位
end Digital_tube_1;

architecture one of Digital_tube_1 is
signal clk1:std_logic;---------------分频

signal cnt1:integer range 0 to 7;---------------计数


signal count1:integer range 0 to 7;
begin
process(clk)
begin
if clk'event and clk = '1' then
if count1 = 7 then
clk1 <= '1';-------------------------------------1K
count1 <= 0;
else
count1 <= count1+1;
clk1 <= '0';
end if;
end if;
end process;
process(clk1)-------主要是让计算两个数码管的数值
begin
if clk1'event and clk1 = '1' then
if cnt1 = 7 then cnt1 <= 0;
else
cnt1 <= cnt1+1;
end if;
end if;
end process;
process(cnt1)------------------只是显示在某种状态下的段位显示,不参与计算
begin
case cnt1 is
when 0 => q <= "1111110";s <="01111111";------------cnt是1时,q显示0,依次选通s
when 1 => q <= "1111110";s <="10111111";
when 2 => q <= "1111110";s <="11011111";
when 3 => q <= "1111110";s <="11101111";
when 4 => q <= "1111110";s <="11110111";
when 5 => q <= "1111110";s <="11111011";
when 6 => q <= "1111110";s <="11111101";
when 7 => q <= "1111110";s <="11111110";
when others => null;
end case;
end process;
end one;

2、拓展发挥:想要使数码管显示别的字符改动q即可,要想使数码管导通改动s即可。(注:按如下引脚图改变数码管A到G引脚的高低电平即可显示不同的数字)

烧入板载实现

动态显示七段数码管的原理是通过控制每个数码管的段选信号和位选信号来实现数字的显示。七段数码管由7个LED组成,每个LED分别代表了数字的某一段。其中,段选信号用于控制哪些段需要点亮,而位选信号则用于控制显示的是哪个数码管。 具体步骤如下: 1. 首先,需要编写VHDL test bench,并设置相关参数,以便进行功能仿真。 2. 然后,查看RTL级的电路原理图,了解数码管的连接方式和控制电路。 3. 在实际电路中,通过控制段选信号和位选信号的高低电平来点亮相应的LED段。例如,如果要显示数字1,则需要将a段和b段点亮,同时选择对应的数码管进行显示。 4. 数码管的段选信号和位选信号可以由微控制器或者计数器产生,通过时序控制来实现动态显示。 5. 在实验中,可以编写相应的程序来控制数码管显示,例如通过循环依次点亮不同的数字。 综上所述,动态显示七段数码管的原理是通过控制段选信号和位选信号来实现数字的显示,并可以通过编写程序或者使用计数器等方式实现动态显示效果。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [七段数码管动态显示电路设计1](https://download.csdn.net/download/weixin_35775446/86290960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [实验四 七段数码管显示实验报告.pdf](https://download.csdn.net/download/weixin_67271870/85971978)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值