郭 京,沈 華, 段小虎
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
矩陣鍵盤(pán)驅(qū)動(dòng)電路的高阻設(shè)計(jì)
郭 京,沈 華, 段小虎
(中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
矩陣鍵盤(pán)是人機(jī)交互的重要設(shè)備。實(shí)際應(yīng)用場(chǎng)景中,用戶(hù)通過(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)電路更加可靠。
矩陣鍵盤(pán);驅(qū)動(dòng)電路;高阻設(shè)計(jì)
隨著電子信息技術(shù)的高速發(fā)展,越來(lái)越多的工業(yè)控制設(shè)備和移動(dòng)終端設(shè)備得到廣泛的應(yīng)用,這些設(shè)備通稱(chēng)為嵌入式系統(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)景中,用戶(hù)通過(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ì)方法。
本設(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.1 硬件平臺(tái)的構(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ú)按鍵被按下的情況是可以正常使用的,但是用戶(hù)在長(zhǎng)按住某個(gè)按鍵時(shí),同時(shí)按下另一個(gè)同列的按鍵,驅(qū)動(dòng)電路會(huì)發(fā)生預(yù)期之外的現(xiàn)象。原因如圖2所示。
圖2 驅(qū)動(dòng)電路可能存在的問(wèn)題
當(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ā)生了如圖中虛線(xiàn)箭頭方向的電流回路,行信號(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)電路管腳也有所損害。
表1 同一列按鍵被同時(shí)按下驅(qū)動(dòng)電路輸出
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)行上拉,所以仍然可以與之前一樣正常工作。
圖3 驅(qū)動(dòng)電路的高阻設(shè)計(jì)
這樣更改后,當(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所示。
表2 74HC05芯片的真值表
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ì)要求。
圖4 高阻態(tài)驅(qū)動(dòng)電路的具體實(shí)現(xiàn)
驅(qū)動(dòng)電路中引入高阻設(shè)計(jì)可以避免多個(gè)按鍵同時(shí)按下時(shí)矩陣鍵盤(pán)內(nèi)部電路發(fā)生短路的情況,使整個(gè)驅(qū)動(dòng)電路更加可靠。
[1] 怯肇乾.嵌入式人機(jī)界面中的鍵盤(pán)及其接口設(shè)計(jì)[J].單片機(jī)與嵌入式應(yīng)用系統(tǒng),2006,20(4): 24-27.
[2] 張玲.基于FPGA 4*4 鍵盤(pán)掃描電路的設(shè)計(jì)[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(13):180-181.
High impedance design of matrix keyboard driver circuit
Guo Jing, Shen Hua, Duan Xiaohu
(Xi’an Aeronautical Computing Technique Research Institute,AVIC, Xi’an 710068, China)
The matrix keyboard is an important man-machine interactive equipment. To complete the man-machine interactive, the user generates excitation signal through the keyboard keys in the actual scenario, and then the driver circuit sends signal to the scanning circuit, the signal arrivals the processor circuit at last. In this process, the driver circuit is responsible for the signal transmission and the design of driver circuit determines whether the entire system can work normally. The high impedance design of driver circuit can avoid matrix keyboard internal short circuit when user presses multiple keys at the same time,so this design makes the driver circuit more reliable.
matrix keyboard; driver circuit; high impedance design
TP391
A
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.
2016-10-26)
郭京(1989-),男,碩士研究生,助理工程師,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
沈華(1976-),男,學(xué)士,研究員,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
段小虎(1986-),男,學(xué)士,工程師,主要研究方向:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
________________________