• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

4x4矩陣鍵盤設計Verilog矩陣式鍵盤控制

04/28 10:25
582
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-23101523461A59.doc

共1個文件

名稱:4x4矩陣鍵盤設計Verilog矩陣式鍵盤控制(代碼在文末付費下載)

軟件:Quartus

語言:Verilog

代碼功能:

鍵盤控制電路設計,設計一個4x4矩陣式鍵盤控制電路,并實現(xiàn)按鍵的顯示。

演示視頻:

部分代碼展示

module?key_4x4?
(?
clk_500KHz,//500KHZ?
reset,???????//低電平復位
L_row,???//行?
H_col,???//列?
display_led8//數(shù)碼管顯示
);?
?
input?clk_500KHz;
input?reset;??
input?[3:0]?L_row;//行
output?[3:0]?H_col;//列
output?[8:0]?display_led8;//[7:0]:a,b,c,d,e,f,g,an0?
?
reg?[3:0]?H_col=4'd0;?
reg?[7:0]?display_led8=8'd0;?
parameter?s_L_all=3'd0;
parameter?s_L_row1=3'd1;
parameter?s_L_row2=3'd2;
parameter?s_L_row3=3'd3;
parameter?s_L_row4=3'd4;
parameter?s_LH=3'd5;
?
reg?[2:0]?state=s_L_all;??//狀態(tài)標志?
reg?key_flag=0;???//按鍵標志位?
reg?[3:0]?H_col_reg=4'd0;??//寄存掃描列值?
reg?[3:0]?L_row_reg=4'd0;//寄存掃描行值?
/************************************************************************?
逐行掃描原理?
************************************************************************/?
always?@(posedge?clk_500KHz?or?negedge?reset)?
if(!reset)??
begin??
H_col<=4'b0000;?
H_col_reg<=4'b0000;???
L_row_reg<=4'b0000;??
state<=s_L_all;?
end?
else??
begin??
case?(state)?
s_L_all:begin?
H_col[3:0]<=4'b0000;?
key_flag<=1'b0;?
if(L_row[3:0]!=4'b1111)??
begin??
state<=s_L_row1;?
H_col[3:0]<=4'b0111;//有鍵按下,掃描第一行?
end??
else??
state<=s_L_all;?
end??
s_L_row1:begin?
if(L_row[3:0]!=4'b1111)??
begin??
state<=s_LH;//判斷是否是第一行?
end????
else???
begin??
state<=s_L_row2;?
H_col[3:0]<=4'b1011;??//掃描第二行?
end?
end??
s_L_row2:begin?????
if(L_row[3:0]!=4'b1111)??
begin??
state<=s_LH;//判斷是否是第二行

設計文檔:

1.要求

2.鍵盤電路

其中H0~H3為FPGA輸出,L0~L3為FPGA輸入,采用行掃描法。

在上電默認情況下,L[3:0] =1111,因為上拉了3.3V,而默認情況下H[3:0]為低電平;一旦有某一個按鍵被按下,則對應L會拉低。因此可以通過對每一行H輸出的控制,來檢索是哪一個按鍵被按下了。

3.工程文件

4.程序代碼

5.程序綜合編譯

6.RTL圖

7.狀態(tài)機

8.仿真

  • 1-23101523461A59.doc
    下載

相關(guān)推薦