郭京,沈華, 段小虎
?。ㄖ泻焦I(yè)西安航空計算技術(shù)研究所,陜西 西安 710068)
摘要:矩陣鍵盤是人機(jī)交互的重要設(shè)備。實際應(yīng)用場景中,用戶通過鍵盤按鍵產(chǎn)生激勵信號,經(jīng)過驅(qū)動電路送到掃描電路,最終傳給處理器電路,從而完成人機(jī)交互。在這個過程中,驅(qū)動電路負(fù)責(zé)傳遞信號,驅(qū)動電路的設(shè)計決定著整個系統(tǒng)能否正常工作。在驅(qū)動電路中引入高阻設(shè)計后,可以避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,能讓整個驅(qū)動電路更加可靠。
關(guān)鍵詞:矩陣鍵盤;驅(qū)動電路;高阻設(shè)計
中圖分類號:TP391文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.08.009
引用格式:郭京,沈華, 段小虎.矩陣鍵盤驅(qū)動電路的高阻設(shè)計[J].微型機(jī)與應(yīng)用,2017,36(8):26-27,30.
0引言
隨著電子信息技術(shù)的高速發(fā)展,越來越多的工業(yè)控制設(shè)備和移動終端設(shè)備得到廣泛的應(yīng)用,這些設(shè)備通稱為嵌入式系統(tǒng)。IEEE( 國際電氣和電子工程師協(xié)會) 對嵌入式系統(tǒng)的定義為“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”。在這些嵌入式系統(tǒng)中,鍵盤作為人機(jī)交互的重要手段,是應(yīng)用最為廣泛的輸入設(shè)備之一。當(dāng)按鍵較少時,采用獨(dú)立式鍵盤,當(dāng)按鍵較多時,采用矩陣式鍵盤,矩陣鍵盤是人機(jī)交互的重要設(shè)備[1]。實際應(yīng)用場景中,用戶通過鍵盤按鍵產(chǎn)生激勵,經(jīng)過驅(qū)動電路后送到掃描電路,最終傳給處理器電路,從而完成人機(jī)交互。驅(qū)動電路負(fù)責(zé)整個過程中的信號傳遞,驅(qū)動電路的設(shè)計決定著整個矩陣鍵盤能否正常工作。為了避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,本文提出一種矩陣鍵盤驅(qū)動電路的高阻態(tài)設(shè)計方法。
1矩陣鍵盤的應(yīng)用模式
本設(shè)計中矩陣鍵盤的硬件架構(gòu)如圖1所示。圖1中的矩陣鍵盤為6行4列,每行和每列在默認(rèn)狀態(tài)下是不連接的,當(dāng)某一個按鈕按下時,交叉處的行與列相連接。
為了獲得按鍵的位置信息,通常的做法是模塊不停地在行信號上循環(huán)輸出掃描信息,并監(jiān)控列信號的狀態(tài),根據(jù)這兩者的組合來判斷是否有按鍵被按下以及被按下的按鍵的行列位置坐標(biāo)。
2矩陣鍵盤的電路設(shè)計
2.1硬件平臺的構(gòu)架
圖1矩陣鍵盤的硬件架構(gòu)如圖1所示,模塊內(nèi)通過FPGA內(nèi)部的狀態(tài)機(jī)循環(huán)向矩陣鍵盤的行信號發(fā)出“011111”,“101111”,“110111”,“111011”,“111101”,“111110”的電平進(jìn)行驅(qū)動,然后監(jiān)控鍵盤列信號的狀態(tài),當(dāng)未發(fā)現(xiàn)按鍵按下時,不停地進(jìn)行此循環(huán),當(dāng)發(fā)現(xiàn)按鍵按下時,則暫停循環(huán),直到按鍵釋放后再繼續(xù)循環(huán)掃描[2]。
若鍵盤沒有任何鍵被按下,則鍵盤的列信號為開路,但由于模塊內(nèi)部對每個列信號進(jìn)行了電阻上拉,因此鍵盤沒有任何按鍵按下時,列信號為全1。當(dāng)鍵盤被按下某個鍵時,如圖1所示,按下了坐標(biāo)為(行=3,列=2)的鍵,其對應(yīng)的行、列信號在按鍵處被導(dǎo)通,則FPGA狀態(tài)機(jī)循環(huán)在進(jìn)行到將行信號輸出為“111011”時,則采集到列信號的值為“1101”,不是全1,則表示此時有按鍵被按下,并且在此時根據(jù)行信號的輸出值和列信號的輸入值判斷出當(dāng)前被按下的按鍵的位置。FPGA的狀態(tài)機(jī)在此時停止循環(huán),并且將按鍵被按下的事件作為中斷通知處理器,并提供按鍵的坐標(biāo)。然后待該按鍵被釋放后,則列信號重新變?yōu)槿?,表示按鍵被釋放,然后FPGA的狀態(tài)機(jī)繼續(xù)進(jìn)行循環(huán)。
2.2驅(qū)動電路分析
這樣的一種設(shè)計架構(gòu)和應(yīng)用方式對于僅有單獨(dú)按鍵被按下的情況是可以正常使用的,但是用戶在長按住某個按鍵時,同時按下另一個同列的按鍵,驅(qū)動電路會發(fā)生預(yù)期之外的現(xiàn)象。原因如圖2所示。
當(dāng)按下(行=3,列=2)的按鍵時,據(jù)前文所述,列信號應(yīng)該為“1101”,若在長時間按下(行=3,列=2)的按鍵時,同時按下(行=5,列=2)的按鍵,則電路發(fā)生如圖2所示的變化,矩陣鍵盤的第3行、第5行、第2列的信號都連接了起來,由于此時行信號輸出為“111011”,所以發(fā)生了如圖中虛線箭頭方向的電流回路,行信號5的高電平輸出和行信號3的低電平輸出發(fā)生了短路,從而導(dǎo)致列信號2的電平由原來的0變?yōu)榱薞CC/2,驅(qū)動電路在采集到列信號2為VCC/2后,向FPGA驅(qū)動輸出高電平,所以FPGA端會采集到列信號變?yōu)槿?。然后當(dāng)(行=5,列=2)的按鍵被釋放后,電路恢復(fù)到僅有(行=3,列=2)的按鍵被按下的狀態(tài),列信號重新變?yōu)椤?101”。
上述過程如表1所示,在長時間按住某個按鍵時,同時按下并釋放另一個同列的按鍵時,驅(qū)動電路傳出的信號會讓FPGA認(rèn)為首先被按下的按鍵被按了兩次,從而導(dǎo)致與預(yù)期不符的混亂。并且如果同時按下同列的兩個按鍵,則會發(fā)生高電平輸出與低電平輸出短接的問題,對于驅(qū)動電路管腳也有所損害。
2.3驅(qū)動電路的高阻態(tài)設(shè)計
由于FPGA對于列信號的狀態(tài)采集無法將上述的例外情況與正常的按鍵釋放相區(qū)別,所以需要設(shè)計一種新的驅(qū)動電路來解決這個問題,一種改進(jìn)方式如圖3所示,將行信號驅(qū)動循環(huán)由原有的“011111”,“101111”,“110111”,“111011”,“111101”,“111110”更改為“0ZZZZZ”,“Z0ZZZZ”,“ZZ0ZZZ”,“ZZZ0ZZ”,“ZZZZ0Z”,“ZZZZZ0”,Z表示高阻。由于列信號有電阻進(jìn)行上拉,所以仍然可以與之前一樣正常工作。
這樣更改后,當(dāng)在一個按鍵按下后,再同時按下非本行內(nèi)的其他鍵時,不會對電路造成任何影響,更不會產(chǎn)生矩陣鍵盤內(nèi)部短路,即使按下本行的其他鍵,由于不會使得列信號變?yōu)槿?,因此FPGA不會認(rèn)為按鍵被釋放掉,不會產(chǎn)生新的事件,從而也不會造成影響。
驅(qū)動電路使用的驅(qū)動器必須能夠輸出高阻態(tài),應(yīng)該使用open drain的驅(qū)動器來進(jìn)行驅(qū)動,例如使用74HC05芯片。74HC05芯片的真值表如表2所示。
2.4矩陣鍵盤電路的具體實現(xiàn)
經(jīng)以上分析,一個比較完備的矩陣鍵盤電路應(yīng)如圖4所示。
將驅(qū)動芯片后端加74HC05芯片可將高電平轉(zhuǎn)換成高阻態(tài)輸出,達(dá)到高阻態(tài)驅(qū)動電路設(shè)計要求。
3結(jié)論
驅(qū)動電路中引入高阻設(shè)計可以避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,使整個驅(qū)動電路更加可靠。
參考文獻(xiàn)
[1] 怯肇乾.嵌入式人機(jī)界面中的鍵盤及其接口設(shè)計[J].單片機(jī)與嵌入式應(yīng)用系統(tǒng),2006,20(4): 24-27.
?。?] 張玲.基于FPGA 4*4 鍵盤掃描電路的設(shè)計[J].計算機(jī)光盤軟件與應(yīng)用,2012(13):180-181.