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

4x4矩陣鍵盤設(shè)計(jì)Verilog矩陣式鍵盤控制

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-23101523461A59.doc

共1個(gè)文件

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

軟件:Quartus

語(yǔ)言:Verilog

代碼功能:

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

演示視頻:

部分代碼展示

module?key_4x4?
(?
clk_500KHz,//500KHZ?
reset,???????//低電平復(fù)位
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)標(biāo)志?
reg?key_flag=0;???//按鍵標(biāo)志位?
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;//判斷是否是第二行

設(shè)計(jì)文檔:

1.要求

2.鍵盤電路

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

在上電默認(rèn)情況下,L[3:0] =1111,因?yàn)樯侠?.3V,而默認(rèn)情況下H[3:0]為低電平;一旦有某一個(gè)按鍵被按下,則對(duì)應(yīng)L會(huì)拉低。因此可以通過(guò)對(duì)每一行H輸出的控制,來(lái)檢索是哪一個(gè)按鍵被按下了。

3.工程文件

4.程序代碼

5.程序綜合編譯

6.RTL圖

7.狀態(tài)機(jī)

8.仿真

  • 1-23101523461A59.doc
    下載

相關(guān)推薦