Verilog按键控制数码管代码求助
时间:10-02
整理:3721RD
点击:
- module key_led(key_add, key_sub, Rst_n, out_sel, out_bit);
- input key_add;
- input key_sub;
- input Rst_n;
- output [5:0]out_sel;
- output [7:0]out_bit;
-
- reg [5:0]out_sel; //数码管段控制
- reg [7:0]out_bit; //数码管位控制
- reg [3:0]counter;
-
- always@(negedge key_add or negedge key_sub or negedge Rst_n)
- begin
- if (Rst_n == 0)
- counter =999)
dataclk<=0;
else
dataclk<=dataclk+1;
end
else if(key_flag&&(key_value==2'b10 ))
begin
if(dataclk<=0)
dataclk<=999;
else
dataclk<=dataclk-1;
end
else
dataclk<=dataclk;
end
end
//--------------数码管位选---------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
segw<=4'b1111;
end
else
begin
if(cnt[13:12]==2'b00)
begin
segw<=4'b0111;data<=dataclk/100;
end
else if(cnt[13:12]==2'b01)
begin
segw<=4'b1011;data<=dataclk%100/10;
end
else if(cnt[13:12]==2'b10)
begin
segw<=4'b1101;data<=dataclk%100%10;
end
end
end
//---------------数码管段码--------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
seg<=8'b1111_1111;
end
else
begin
case(data)
4'd0:seg<=8'b0000_0011;
4'd1:seg<=8'b1001_1111;
4'd2:seg<=8'b0010_0101;
4'd3:seg<=8'b0000_1101;
4'd4:seg<=8'b1001_1001;
4'd5:seg<=8'b0100_1001;
4'd6:seg<=8'b0100_0001;
4'd7:seg<=8'b0001_1111;
4'd8:seg<=8'b0000_0001;
4'd9:seg<=8'b0000_1001;
default:seg<=8'b1111_1111;
endcase
end
end
endmodule
//以上代码仅供参考,数码管的段码按照实际情况修改
