|
一个很简单的矩阵键盘程序。。。如下:
module key(clk,rst,row,column,dataout,en);
input clk,rst;
input column,row;
output dataout;
output en;
reg[3:0] en=4'b0000;
//++++++++++++++++++++++++++++++++++++++
// 分频器 开始
//++++++++++++++++++++++++++++++++++++++
reg cnt[15:0];
always@(posedge clk,negedge rst)
begin
if(!rst)
begin
duan<=0;
en<=0;
end
else begin
cnt<=cnt+1; 错误行!!!!!!!!!!!!!!!!!!!!!!!!!!!
end
end
//++++++++++++++++++++++++++++++++++++++
// 扫描 开始
//++++++++++++++++++++++++++++++++++++++
reg[3:0] duan;
always@(cnt[15])
begin
case(row)
4'b 1110:
case(column)
4'b1110: duan<=0;
4'b1101: duan<=1;
4'b1011: duan<=2;
4'b0111: duan<=3;
default: duan<=0;
endcase
4'b 1101:
case(column)
4'b1110: duan<=4;
4'b1101: duan<=5;
4'b1011: duan<=6;
4'b0111: duan<=7;
default: duan<=0;
endcase
4'b 1011:
case(column)
4'b1110: duan<=8;
4'b1101: duan<=9;
4'b1011: duan<=10;
4'b0111: duan<=11;
default: duan<=0;
endcase
4'b 0111:
case(column)
4'b1110: duan<=12;
4'b1101: duan<=13;
4'b1011: duan<=14;
4'b0111: duan<=15;
default: duan<=0;
endcase
default: duan<=0;
endcase
end
//++++++++++++++++++++++++++++++++++++++
// 输出开始
//++++++++++++++++++++++++++++++++++++++
reg[7:0] dataout;
always@(duan)
begin
case(duan)
4'd0 :dataout<=8'h3f;
4'd1 :dataout<=8'h60;
4'd2 :dataout<=8'h5b;
4'd3 :dataout<=8'h4f;
4'd4 :dataout<=8'h66;
4'd5 :dataout<=8'h6d;
4'd6 :dataout<=8'hd6;
4'd7 :dataout<=8'h7;
4'd8 :dataout<=8'h7f;
4'd9 :dataout<=8'h6f;
4'd10 :dataout<=8'h77;
4'd11 :dataout<=8'h7c;
4'd12 :dataout<=8'h39;
4'd13 :dataout<=8'h5e;
4'd14 :dataout<=8'h79;
4'd15 :dataout<=8'h71;
default: dataout<=8'h3f;
endcase
end
endmodule |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|