分享一个FPGA (verilog) 小键盘 扫描程序
- UID
- 1023229
- 来自
- 中国
|
分享一个FPGA (verilog) 小键盘 扫描程序
电脑键盘的小键盘 主要有 0到9 及加、减、乘、除 NUMLOCK del ENTER 组成
其构成为6*4键盘:verilog程序如下:
module key(clk,cpld_e,led,key_hang,key_lie);input clk;input [5:0] key_hang;//行输入 6行output [3:0] key_lie;//列输出 4列output [1:0] cpld_e;output [15:0] led;reg [3:0] key_lie;reg [15:0] led;//8位8段共阴极数码管assign cpld_e=2'b01;reg [6:0] cnt;reg clk_out;reg [2:0] state = 3'b000;reg [9:0] key_value;reg key_flag;
always @(posedge clk) begin//分频 100M输入 分频后约为10MS if(cnt==7'b1000000) begin clk_out<=~clk_out; cnt<=0; end else cnt<=cnt+1;end
always @(posedge clk_out) begin case (state) 0: begin key_lie[3:0]<=4'b0000; key_flag=0; if(key_hang !=6'b111111) begin state=1;key_lie[3:0]<=4'b1110;end//判断是否有键按下 及列赋值 else state=0; end 1:begin if(key_hang !=6'b111111) begin state=5; end else begin state=2; key_lie[3:0]<=4'b1101; end end 2:begin if(key_hang !=6'b111111) begin state=5; end else begin state=3; key_lie[3:0]<=4'b1011; end end 3:begin if(key_hang !=6'b111111) begin state=5; end else begin state=4; key_lie[3:0]<=4'b0111; end end 4:begin if(key_hang !=6'b111111) begin state=5; end else state=0; end 5:begin key_value[9:0]<={key_hang,key_lie}; key_flag=1; state=0; end endcase end always @(clk_out or key_hang or key_lie) begin if(key_flag==1) case (key_value) 10'b1111101011: led[15:0]<=16'h7f3f;//0 10'b0111110111: led[15:0]<=16'hbf06;//1 10'b0111111011: led[15:0]<=16'hdf5b;//2 10'b0111111101: led[15:0]<=16'hef4f;//3 10'b1011110111: led[15:0]<=16'hf766;//4 10'b1011111011: led[15:0]<=16'hfb6d;//5 10'b1011111101: led[15:0]<=16'hfe7d;//6 10'b1101110111: led[15:0]<=16'hfd07;//7 10'b1101111011: led[15:0]<=16'h7f7f;//8 10'b1101111101: led[15:0]<=16'h7f6f;//9 10'b1111101101: led[15:0]<=16'hef80;//. 10'b1101111110: led[15:0]<=16'hf746;//+ 10'b1111011101: led[15:0]<=16'hfb40;//- 10'b1110111101: led[15:0]<=16'hfe76;//* 10'b1110111011: led[15:0]<=16'hfd52;/// 10'b1110110111: led[15:0]<=16'h7f38;//Num 10'b0111111110: led[15:0]<=16'h7f79;//Enter default: led[15:0]<=16'h0000; endcase end
endmodule |
|
|
|
|
|