《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 矩陣鍵盤(pán)驅(qū)動(dòng)電路的高阻設(shè)計(jì)
矩陣鍵盤(pán)驅(qū)動(dòng)電路的高阻設(shè)計(jì)
2017年微型機(jī)與應(yīng)用第8期
郭京,沈華, 段小虎
中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068
摘要: 矩陣鍵盤(pán)是人機(jī)交互的重要設(shè)備。實(shí)際應(yīng)用場(chǎng)景中,用戶通過(guò)鍵盤(pán)按鍵產(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í)矩陣鍵盤(pán)內(nèi)部電路發(fā)生短路的情況,能讓整個(gè)驅(qū)動(dòng)電路更加可靠。
Abstract:
Key words :

  郭京,沈華, 段小虎

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

        摘要矩陣鍵盤(pán)是人機(jī)交互的重要設(shè)備。實(shí)際應(yīng)用場(chǎng)景中,用戶通過(guò)鍵盤(pán)按鍵產(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í)矩陣鍵盤(pán)內(nèi)部電路發(fā)生短路的情況,能讓整個(gè)驅(qū)動(dòng)電路更加可靠。

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

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

  引用格式:郭京,沈華, 段小虎.矩陣鍵盤(pán)驅(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)中,鍵盤(pán)作為人機(jī)交互的重要手段,是應(yīng)用最為廣泛的輸入設(shè)備之一。當(dāng)按鍵較少時(shí),采用獨(dú)立式鍵盤(pán),當(dāng)按鍵較多時(shí),采用矩陣式鍵盤(pán),矩陣鍵盤(pán)是人機(jī)交互的重要設(shè)備[1]。實(shí)際應(yīng)用場(chǎng)景中,用戶通過(guò)鍵盤(pán)按鍵產(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è)矩陣鍵盤(pán)能否正常工作。為了避免多個(gè)按鍵同時(shí)按下時(shí)矩陣鍵盤(pán)內(nèi)部電路發(fā)生短路的情況,本文提出一種矩陣鍵盤(pán)驅(qū)動(dòng)電路的高阻態(tài)設(shè)計(jì)方法。

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

  本設(shè)計(jì)中矩陣鍵盤(pán)的硬件架構(gòu)如圖1所示。圖1中的矩陣鍵盤(pán)為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矩陣鍵盤(pán)的電路設(shè)計(jì)

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

001.jpg

  圖1矩陣鍵盤(pán)的硬件架構(gòu)如圖1所示,模塊內(nèi)通過(guò)FPGA內(nèi)部的狀態(tài)機(jī)循環(huán)向矩陣鍵盤(pán)的行信號(hào)發(fā)出“011111”,“101111”,“110111”,“111011”,“111101”,“111110”的電平進(jìn)行驅(qū)動(dòng),然后監(jiān)控鍵盤(pá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]。

  若鍵盤(pán)沒(méi)有任何鍵被按下,則鍵盤(pán)的列信號(hào)為開(kāi)路,但由于模塊內(nèi)部對(duì)每個(gè)列信號(hào)進(jìn)行了電阻上拉,因此鍵盤(pán)沒(méi)有任何按鍵按下時(shí),列信號(hào)為全1。當(dāng)鍵盤(pán)被按下某個(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所示的變化,矩陣鍵盤(pán)的第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)生矩陣鍵盤(pá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矩陣鍵盤(pán)電路的具體實(shí)現(xiàn)

  經(jīng)以上分析,一個(gè)比較完備的矩陣鍵盤(pán)電路應(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í)矩陣鍵盤(pán)內(nèi)部電路發(fā)生短路的情況,使整個(gè)驅(qū)動(dòng)電路更加可靠。

參考文獻(xiàn)

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

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


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