基于VHDL的数码管动态扫描电路设计,四个数码管累加显示数字0000-9999,间隔1秒。FPGA型号:EP4CE6E22C8,开发环境:Quartus18.1

一、硬件设备是FPGA入门开发板EP4CE6E22C8,数码管的原理图如下:

          

段选信号abcdefh是低电平有效,其中h是数码管右下角的小数点。CC1-CC4为四个数码管的片选信号,也是低电平有效。

二、数码管段选信号abcdefgh与数字0-9的对应表如下:

abcdefgh电平 数字字符
0000 0011 0
1001 1111 1
0010 0101 2
0000 1101 3
1001 1001 4
01001001 5
0100 0001 6
0001 1011 7
0000 0001 8
0000 1001 9

 

三、设计思路:

 由于四个数码管的段选信号是并联在一起的,所以要做到四个数码管能分别显示不同的字符,那么就控制片选信号CC1-CC4在一个时间点,只有一个片选信号有效,即一个时间节点只有一个数码管显示字符。将片选信号CC1-CC4选择使能的时间加快,利用人眼的视觉暂留现象,就可以四个数码管同时显示了。单个数码管的刷新频率大于50Hz就可以达到效果,四个数码轮流刷新,所以整体刷新频率为200Hz。

 1、计数模块 2、显示(译码)模块 3、刷新显示模块

1、计数模块:

 本实验要达到间隔1s计数,那么需要一个1Hz的时钟,时钟源为50MHz。

--1s时钟模块
Module_1Hz : process(clk)
	begin
		if(clk'event and clk='1')then
			if(cnt_50MHz=49999999)then
				cnt_50MHz<=0;
			else
				cnt_50MHz<=cnt_50MHz+1;
			end if;
			
			if(cnt_50MHz<=24999999)then
				clk1Hz<=1;
			else
				clk1Hz<=0;
			end if;
		end if;
end process module_1Hz;
--1s计数模块,四个数码管累加显示数字,范围0000-9999
Module_cnt : process(clk1Hz) 
	begin
		if(clk1Hz'event and clk1Hz=1)then						
			 if(cnt_One=9)then
					   if(cnt_Ten=9)then
								if(cnt_Hundred=9)then
											if(cnt_thousand=9)then
												cnt_thousand<=0;
												cnt_Hundred<=0;
												cnt_Ten<=0;
												cnt_One<=0;
											 else
												cnt_thousand<=cnt_thousand+1;
												cnt_Hundred<=0;
												cnt_Ten<=0;
												cnt_One<=0;
											 end if;
								 else
									cnt_Hundred<=cnt_Hundred+1;
									cnt_Ten<=0;
									cnt_One<=0;
								 end if;
						else
							cnt_T
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值