数码管自动显示

数码管自动显示:利用计数器原理,先做一个分频计数器,每隔1s钟,由LED自动加一,再选择数码管显示数字;1s=1_000_000_000ns= 1_000_000_000ns/20ns=50_000_000

程序代码:
module hex3(rst_n,clk,seg);

input clk;//50M
input rst_n;
output reg [6:0]seg;//段选(控制数码管显示什么数据)


//分频器的代码,这里为了完整,不做多个文件来写模块了
reg[25:0] diviter_cnt; //25000-1

reg [3:0]led;

//生成一个分频计数器计数
always@(posedge clk or negedge rst_n)
if (!rst_n)
diviter_cnt<=15'd0;
else if (diviter_cnt==25'd50_000_000)
diviter_cnt<=15'd0;
else 
diviter_cnt<=diviter_cnt+1'b1;



//位选移位寄存器
always@(posedge clk or negedge rst_n)
if (!rst_n)
led<=4'b0000;
else if(led==4'b1111)
led<=4'b0000;
else if(diviter_cnt==25'd50_000_000)
led<=led+4'b0001;

//设计一个6选一多路器

always@(led)
begin
case (led)//
4'h0:seg=7'b1000000;//这里按数码管码表来
4'h1:seg=7'b1111001;
4'h2:seg=7'b0100100;
4'h3:seg=7'b0110000;
4'h4:seg=7'b0011001;
4'h5:seg=7'b0010010;
4'h6:seg=7'b0000010;
4'h7:seg=7'b1111000;
4'h8:seg=7'b0000000;
4'h9:seg=7'b0010000;
4'ha:seg=7'b0001000;
4'hb:seg=7'b0000011;
4'hc:seg=7'b1000110;
4'hd:seg=7'b0100001;
4'he:seg=7'b0000110;
4'hf:seg=7'b0001110;

endcase 
end
endmodule

 

posted @ 2019-02-21 15:11  浮沉沉浮  阅读(343)  评论(0编辑  收藏  举报