由于IO资源宝贵,因此采用段选和位选的方式控制6个数码管,将段选IO均接到一起,这样就只需要8+6=14个IO,但这样的操作使得每个数模管只能显示一样的数字。
由上述原因,如果需要每个数码管显示不一样的数字,只能采用【动态扫描】的方式实现,即通过每一时刻仅使一个数码管处于位选选通的状态。再借由人眼的【暂留效果】使得我们看到的好像每个数码管在同时显示不一样的数字。
对于硬件设计方面,由于一个位选信号需要提供8个led灯的亮灭,因此采用三级管放大电流工作。
静态数码管:
下面图片中.MAX_NUM是子模块time_count的参数例化
parameter MAX_NUM=25000000;
time_count #(
.MAX_NUM (MAX_NUM)
)
u_time_count(
.clk (sys_clk),
.rst_n (sys_rst_n),
.add_flag (add_flag)
);