硬件介绍
开发板上安装了 6 个共阳数码管,可以显示 6 个数字(包含小数点) 。电路用 PNP 管来反向驱 动并且控制列扫描信号(SEL0_T~SEL5_T)来选择哪个数码管。而且所有的 6 个数码管的“段选信 号”(LEDA .. LEDH)都共用驱动引脚(LED_A~LEDH)。数码管的所有驱动信号都是“低电平有效”。
数码管扫描原理
单个数码管可以采用静态显示方式,如图所示,数码管被分成 a、b、c、d、e、f、g 和小数 点,每段可以单独控制亮灭,通过点亮不同的段显示不同的数字和字符。
程序设计
本实验设计一个 6 位十进制计数器模块,然后通过译码模块译码后送到数码管扫描模块扫描 显示。
module seg_test(
input clk,
input rst_n,
output[5:0]seg_sel,
output[7:0]seg_data
);
reg[31:0] timer_cnt;
reg en_1hz; //1 second , 1 counter enable
always@(posedge clk or negedge rst_n)
begin
if(rst_n == 1'b0)
begin
en_1hz <= 1'b0;
timer_cnt <= 32'd0;
end
else if(timer_cnt >= 32'd49_999_999)
begin
en_1hz <= 1'b1;
time