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

  郭京,,沈華, 段小虎

  (中航工業(yè)西安航空計(jì)算技術(shù)研究所,,陜西 西安 710068)

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

  關(guān)鍵詞:矩陣鍵盤,;驅(qū)動(dòng)電路;高阻設(shè)計(jì)

  中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.08.009

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

0引言

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

1矩陣鍵盤的應(yīng)用模式

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

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

2矩陣鍵盤的電路設(shè)計(jì)

  2.1硬件平臺(tái)的構(gòu)架

001.jpg

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

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

  2.2驅(qū)動(dòng)電路分析

  這樣的一種設(shè)計(jì)架構(gòu)和應(yīng)用方式對(duì)于僅有單獨(dú)按鍵被按下的情況是可以正常使用的,,但是用戶在長(zhǎng)按住某個(gè)按鍵時(shí),,同時(shí)按下另一個(gè)同列的按鍵,驅(qū)動(dòng)電路會(huì)發(fā)生預(yù)期之外的現(xiàn)象,。原因如圖2所示,。

  

002.jpg

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

  上述過(guò)程如表1所示,在長(zhǎng)時(shí)間按住某個(gè)按鍵時(shí),同時(shí)按下并釋放另一個(gè)同列的按鍵時(shí),,驅(qū)動(dòng)電路傳出的信號(hào)會(huì)讓FPGA認(rèn)為首先被按下的按鍵被按了兩次,,從而導(dǎo)致與預(yù)期不符的混亂。并且如果同時(shí)按下同列的兩個(gè)按鍵,,則會(huì)發(fā)生高電平輸出與低電平輸出短接的問(wèn)題,,對(duì)于驅(qū)動(dòng)電路管腳也有所損害。

004.jpg

  2.3驅(qū)動(dòng)電路的高阻態(tài)設(shè)計(jì)

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

  

003.jpg

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

  驅(qū)動(dòng)電路使用的驅(qū)動(dòng)器必須能夠輸出高阻態(tài),,應(yīng)該使用open drain的驅(qū)動(dòng)器來(lái)進(jìn)行驅(qū)動(dòng),例如使用74HC05芯片,。74HC05芯片的真值表如表2所示,。

006.jpg

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

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

  將驅(qū)動(dòng)芯片后端加74HC05芯片可將高電平轉(zhuǎn)換成高阻態(tài)輸出,,達(dá)到高阻態(tài)驅(qū)動(dòng)電路設(shè)計(jì)要求。

 

005.jpg

3結(jié)論

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

參考文獻(xiàn)

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

 ?。?] 張玲.基于FPGA 4*4 鍵盤掃描電路的設(shè)計(jì)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,,2012(13):180-181.


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