⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyscan.v

📁 键盘扫描代码
💻 V
字号:
module keyscan(clk_scan,clk_debounce,row,col,Key_value);
input [3:0]col;
input clk_scan,clk_debounce; //key_scan:20Hz; key_debounce:200Hz;
output [3:0]row;
output[4:0]Key_value;

wire [3:0]R;
reg [3:0]col_debounced;
reg [3:0]row;
reg [4:0]key_value
reg [4:0]Key_value;
reg [3:0]key_temp1,key_temp2,key_temp3;
reg [1:0]count;

always @(posedge clk_scan) 
	begin
	Key_value <= key_value;
	 count <= count + 1'b1;
	end
	
always @(count)
	case(count)
	2'b00: row <= 4'b1110;
	2'b01: row <= 4'b1101;
	2'b10: row <= 4'b1011;
	2'b11: row <= 4'b0111;
	endcase

always @(posedge clk_debounce)
	begin
	key_temp1 <= col;
	key_temp2 <= key_temp1;
	key_temp3 <= key_temp2;
	end
	
assign R = (key_temp1 | key_temp2 | key_temp3);

always @(posedge clk_debounce)
case(R)
	4'b0111: col_debounced <= 4'b0111;
	4'b1011: col_debounced <= 4'b1011;
	4'b1101: col_debounced <= 4'b1101;
	4'b1110: col_debounced <= 4'b1110;
	default: col_debounced <= 4'b1111;
endcase
	
always @(row or col_debounced)
	case(col_debounced)
	4'b1110:
		begin
		case(row)
		4'b1110: key_value = 5'd0;
		4'b1101: key_value = 5'd4;
		4'b1011: key_value = 5'd8;
		4'b0111: key_value = 5'd12;
		default: key_value = 5'd31;
		endcase
		end
	4'b1101: 
		begin
		case(row)
		4'b1110: key_value = 5'd1;
		4'b1101: key_value = 5'd5;
		4'b1011: key_value = 5'd9;
		4'b0111: key_value = 5'd13;
		default: key_value = 5'd31;
		endcase
		end
	4'b1011:
		begin
		case(row)
		4'b1110: key_value = 5'd2;
		4'b1101: key_value = 5'd6;
		4'b1011: key_value = 5'd10;
		4'b0111: key_value = 5'd14;
		default: key_value = 5'd31;
		endcase
		end
	4'b0111:
		begin
		case(row)
		4'b1110: key_value = 5'd3;
		4'b1101: key_value = 5'd7;
		4'b1011: key_value = 5'd11;
		4'b0111: key_value = 5'd15;
		default: key_value = 5'd31;
		endcase
		end
	default: key_value = 5'd31;
	endcase

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -