矩阵按键的检测
怎么检测矩阵按键的按键值,而且让这个按键值保持在一个时钟周期啊 怎么还是没效果啊,按照你的要求,我在看RTL Viewer时,没有延时一个时钟周期啊 reg key_value_r;always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
begin
key_value_r <= 4'd0;
end
else begin
if(key_mark==1'b1)
begin
case ({col_reg,row_reg})
8'b1110_1110: key_value_r<=4'd0;
8'b1110_1101: key_value_r<=4'd1;
8'b1110_1011: key_value_r<=4'd2;
8'b1110_0111: key_value_r<=4'd3;
8'b1101_1110: key_value_r<=4'd4;
8'b1101_1101: key_value_r<=4'd5;
8'b1101_1011: key_value_r<=4'd6;
8'b1101_0111: key_value_r<=4'd7;
8'b1011_1110: key_value_r<=4'd8;
8'b1011_1101: key_value_r<=4'd9;
8'b1011_1011: key_value_r<=4'd10;
8'b1011_0111: key_value_r<=4'd11;
8'b0111_1110: key_value_r<=4'd12;
8'b0111_1101: key_value_r<=4'd13;
8'b0111_1011: key_value_r<=4'd14;
8'b0111_0111: key_value_r<=4'd15;
default: key_value_r <= 4'd1;
endcase
end
end
end
assign key_value = key_value_r;
//--------------------------------------------------------------------------------------//
reg key_value_r_t;
reg key_flag=16'b0;
always @(posedge clk)
key_value_r_t<=key_value;
always @(posedge clk)
if(key_value_r_t != key_value_r)
case(key_value_r)
8'd0:key_flag<=1'b1;
8'd1:key_flag<=1'b1;
8'd2:key_flag<=1'b1;
8'd3:key_flag<=1'b1;
8'd4:key_flag<=1'b1;
8'd5:key_flag<=1'b1;
8'd6:key_flag<=1'b1;
8'd7:key_flag<=1'b1;
8'd8:key_flag<=1'b1;
8'd9:key_flag<=1'b1;
8'd10:key_flag<=1'b1;
8'd11:key_flag<=1'b1;
8'd12:key_flag<=1'b1;
8'd13:key_flag<=1'b1;
8'd14:key_flag<=1'b1;
8'd15:key_flag<=1'b1;
endcase
else
begin
key_flag <= 16'b0;
end
assign key_sig = key_flag;
你说的比较两拍的数值发生变化,这个意思我懂,可效果没实现额,是代码出问题了吗 这是一份LCD的PDF文档 后面是我51单片机开发板对应的参考资料
页:
[1]