《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 矩陣鍵盤驅動電路的高阻設計
矩陣鍵盤驅動電路的高阻設計
2017年微型機與應用第8期
郭京,沈華, 段小虎
中航工業(yè)西安航空計算技術研究所,陜西 西安 710068
摘要: 矩陣鍵盤是人機交互的重要設備。實際應用場景中,用戶通過鍵盤按鍵產(chǎn)生激勵信號,經(jīng)過驅動電路送到掃描電路,最終傳給處理器電路,從而完成人機交互。在這個過程中,驅動電路負責傳遞信號,驅動電路的設計決定著整個系統(tǒng)能否正常工作。在驅動電路中引入高阻設計后,可以避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,能讓整個驅動電路更加可靠。
Abstract:
Key words :

  郭京,沈華, 段小虎

 ?。ㄖ泻焦I(yè)西安航空計算技術研究所,陜西 西安 710068)

        摘要矩陣鍵盤是人機交互的重要設備。實際應用場景中,用戶通過鍵盤按鍵產(chǎn)生激勵信號,經(jīng)過驅動電路送到掃描電路,最終傳給處理器電路,從而完成人機交互。在這個過程中,驅動電路負責傳遞信號,驅動電路的設計決定著整個系統(tǒng)能否正常工作。在驅動電路中引入高阻設計后,可以避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,能讓整個驅動電路更加可靠。

  關鍵詞:矩陣鍵盤;驅動電路;高阻設計

  中圖分類號:TP391文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.08.009

  引用格式:郭京,沈華, 段小虎.矩陣鍵盤驅動電路的高阻設計[J].微型機與應用,2017,36(8):26-27,30.

0引言

  隨著電子信息技術的高速發(fā)展,越來越多的工業(yè)控制設備和移動終端設備得到廣泛的應用,這些設備通稱為嵌入式系統(tǒng)。IEEE( 國際電氣和電子工程師協(xié)會) 對嵌入式系統(tǒng)的定義為“用于控制、監(jiān)視或者輔助操作機器和設備的裝置”。在這些嵌入式系統(tǒng)中,鍵盤作為人機交互的重要手段,是應用最為廣泛的輸入設備之一。當按鍵較少時,采用獨立式鍵盤,當按鍵較多時,采用矩陣式鍵盤,矩陣鍵盤是人機交互的重要設備[1]。實際應用場景中,用戶通過鍵盤按鍵產(chǎn)生激勵,經(jīng)過驅動電路后送到掃描電路,最終傳給處理器電路,從而完成人機交互。驅動電路負責整個過程中的信號傳遞,驅動電路的設計決定著整個矩陣鍵盤能否正常工作。為了避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,本文提出一種矩陣鍵盤驅動電路的高阻態(tài)設計方法。

1矩陣鍵盤的應用模式

  本設計中矩陣鍵盤的硬件架構如圖1所示。圖1中的矩陣鍵盤為6行4列,每行和每列在默認狀態(tài)下是不連接的,當某一個按鈕按下時,交叉處的行與列相連接。

  為了獲得按鍵的位置信息,通常的做法是模塊不停地在行信號上循環(huán)輸出掃描信息,并監(jiān)控列信號的狀態(tài),根據(jù)這兩者的組合來判斷是否有按鍵被按下以及被按下的按鍵的行列位置坐標。

2矩陣鍵盤的電路設計

  2.1硬件平臺的構架

001.jpg

  圖1矩陣鍵盤的硬件架構如圖1所示,模塊內(nèi)通過FPGA內(nèi)部的狀態(tài)機循環(huán)向矩陣鍵盤的行信號發(fā)出“011111”,“101111”,“110111”,“111011”,“111101”,“111110”的電平進行驅動,然后監(jiān)控鍵盤列信號的狀態(tài),當未發(fā)現(xiàn)按鍵按下時,不停地進行此循環(huán),當發(fā)現(xiàn)按鍵按下時,則暫停循環(huán),直到按鍵釋放后再繼續(xù)循環(huán)掃描[2]。

  若鍵盤沒有任何鍵被按下,則鍵盤的列信號為開路,但由于模塊內(nèi)部對每個列信號進行了電阻上拉,因此鍵盤沒有任何按鍵按下時,列信號為全1。當鍵盤被按下某個鍵時,如圖1所示,按下了坐標為(行=3,列=2)的鍵,其對應的行、列信號在按鍵處被導通,則FPGA狀態(tài)機循環(huán)在進行到將行信號輸出為“111011”時,則采集到列信號的值為“1101”,不是全1,則表示此時有按鍵被按下,并且在此時根據(jù)行信號的輸出值和列信號的輸入值判斷出當前被按下的按鍵的位置。FPGA的狀態(tài)機在此時停止循環(huán),并且將按鍵被按下的事件作為中斷通知處理器,并提供按鍵的坐標。然后待該按鍵被釋放后,則列信號重新變?yōu)槿?,表示按鍵被釋放,然后FPGA的狀態(tài)機繼續(xù)進行循環(huán)。

  2.2驅動電路分析

  這樣的一種設計架構和應用方式對于僅有單獨按鍵被按下的情況是可以正常使用的,但是用戶在長按住某個按鍵時,同時按下另一個同列的按鍵,驅動電路會發(fā)生預期之外的現(xiàn)象。原因如圖2所示。

  

002.jpg

  當按下(行=3,列=2)的按鍵時,據(jù)前文所述,列信號應該為“1101”,若在長時間按下(行=3,列=2)的按鍵時,同時按下(行=5,列=2)的按鍵,則電路發(fā)生如圖2所示的變化,矩陣鍵盤的第3行、第5行、第2列的信號都連接了起來,由于此時行信號輸出為“111011”,所以發(fā)生了如圖中虛線箭頭方向的電流回路,行信號5的高電平輸出和行信號3的低電平輸出發(fā)生了短路,從而導致列信號2的電平由原來的0變?yōu)榱薞CC/2,驅動電路在采集到列信號2為VCC/2后,向FPGA驅動輸出高電平,所以FPGA端會采集到列信號變?yōu)槿?。然后當(行=5,列=2)的按鍵被釋放后,電路恢復到僅有(行=3,列=2)的按鍵被按下的狀態(tài),列信號重新變?yōu)椤?101”。

  上述過程如表1所示,在長時間按住某個按鍵時,同時按下并釋放另一個同列的按鍵時,驅動電路傳出的信號會讓FPGA認為首先被按下的按鍵被按了兩次,從而導致與預期不符的混亂。并且如果同時按下同列的兩個按鍵,則會發(fā)生高電平輸出與低電平輸出短接的問題,對于驅動電路管腳也有所損害。

004.jpg

  2.3驅動電路的高阻態(tài)設計

  由于FPGA對于列信號的狀態(tài)采集無法將上述的例外情況與正常的按鍵釋放相區(qū)別,所以需要設計一種新的驅動電路來解決這個問題,一種改進方式如圖3所示,將行信號驅動循環(huán)由原有的“011111”,“101111”,“110111”,“111011”,“111101”,“111110”更改為“0ZZZZZ”,“Z0ZZZZ”,“ZZ0ZZZ”,“ZZZ0ZZ”,“ZZZZ0Z”,“ZZZZZ0”,Z表示高阻。由于列信號有電阻進行上拉,所以仍然可以與之前一樣正常工作。

  

003.jpg

  這樣更改后,當在一個按鍵按下后,再同時按下非本行內(nèi)的其他鍵時,不會對電路造成任何影響,更不會產(chǎn)生矩陣鍵盤內(nèi)部短路,即使按下本行的其他鍵,由于不會使得列信號變?yōu)槿?,因此FPGA不會認為按鍵被釋放掉,不會產(chǎn)生新的事件,從而也不會造成影響。

  驅動電路使用的驅動器必須能夠輸出高阻態(tài),應該使用open drain的驅動器來進行驅動,例如使用74HC05芯片。74HC05芯片的真值表如表2所示。

006.jpg

  2.4矩陣鍵盤電路的具體實現(xiàn)

  經(jīng)以上分析,一個比較完備的矩陣鍵盤電路應如圖4所示。

  將驅動芯片后端加74HC05芯片可將高電平轉換成高阻態(tài)輸出,達到高阻態(tài)驅動電路設計要求。

 

005.jpg

3結論

  驅動電路中引入高阻設計可以避免多個按鍵同時按下時矩陣鍵盤內(nèi)部電路發(fā)生短路的情況,使整個驅動電路更加可靠。

參考文獻

 ?。?] 怯肇乾.嵌入式人機界面中的鍵盤及其接口設計[J].單片機與嵌入式應用系統(tǒng),2006,20(4): 24-27.

  [2] 張玲.基于FPGA 4*4 鍵盤掃描電路的設計[J].計算機光盤軟件與應用,2012(13):180-181.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。