本實用新型涉及電路領域,具體涉及一種行列矩陣鍵盤接口電路。
背景技術:
目前,單片機按鍵電路設計主要有兩類型,一種是獨立式按鍵結構,即1個I/O口對應一個按鍵;另一種是矩陣式鍵盤結構,可參見圖1,在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區(qū)別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。
單片機I/O口資源是非常有限的,上述獨立式按鍵結構是最浪費I/O口資源的,一個I/O口對應一個按鍵;一般矩陣式鍵盤結構比獨立式按鍵結構節(jié)約了比較多I/O口資源,但是當有16個按鍵也需要用掉8個I/O口,并不是非常地節(jié)約I/O口資源。
技術實現要素:
本實用新型提供了一種行列矩陣鍵盤接口電路,能夠克服現有技術的缺陷和不足。
本實用新型解決上述技術問題的技術方案如下:提供了一種行列矩陣鍵盤接口電路,包括單片機MCU和觸摸芯片U1,所述單片機MCU的中斷INT0與觸摸芯片U1的引腳PENIRQN連接,所述單片機MCU與觸摸芯片U1通過I2C/SPI通信總線連接,實現所述單片機MCU與觸摸芯片U1之間的I2C/SPI通信,觸摸芯片U1的引腳X+和引腳X-之間串聯m個電阻作為行電阻,引腳Y+和引腳Y-之間串聯n個電阻作為列電阻,在每相鄰兩個行電阻之間引出一條列線,在每相鄰兩個列電阻之間引出一條行線,在每一條行線和每一條列線的交叉點處設置一個按鍵,形成(m-1)*(n-1)個按鍵的矩陣鍵盤,其中,m和n均為大于等于3的正整數。
本實用新型的有益效果為:利用觸摸芯片U1構造電阻網絡,形成電壓梯度,根據觸摸屏原理,只需要單片機的3-4個I/O口即可實現任意行列數目的矩陣式鍵盤,減少了單片機I/O口的使用數量,給其它外設留下更多的I/O口資源。
在上述技術方案的基礎上,本實用新型還可以作如下改進。
進一步的,所述m個行電阻的阻值相同,所述n個列電阻的阻值相同。
所述進一步的有益效果為:多個行電阻的阻值相同,且多個列電阻的阻值相同,使得形成的電壓梯度為均衡電壓梯度,對于后續(xù)的計算按鍵的位置更簡單。
進一步的,所述觸摸芯片U1中還包括ADC轉換電路,所述ADC轉換電路的輸入端與觸摸芯片U1的引腳X+和引腳Y+連接,所述ADC轉換電路的輸出端通過觸摸芯片U1并經過I2C/SPI總線與所述單片機MCU連接。
附圖說明
圖1為傳統的行列矩陣鍵盤電路設計圖;
圖2為本實用新型實施例1的行列矩陣鍵盤接口電路設計圖;
圖3為實施例1中觸摸芯片U1內部電路圖;
圖4為實施例1中測量第一個按鍵按下時X方向的電壓等效電路圖;
圖5為實施例1中測量第一個按鍵按下時Y方向的電壓等效電路圖。
具體實施方式
以下結合附圖對本實用新型的原理和特征進行描述,所舉實例只用于解釋本實用新型,并非用于限定本實用新型的范圍。
實施例1、一種行列矩陣鍵盤接口電路。下面參見圖2-圖5對本實施例提供的電路進行描述。
參見圖2,本實施例提供的行列矩陣鍵盤接口電路包括單片機MCU和觸摸芯片U1,所述單片機MCU的中斷INT0與觸摸芯片U1的引腳PENIRQN連接,所述單片機MCU與觸摸芯片U1通過I2C/SPI總線連接,實現單片機MCU與觸摸芯片U1之間的I2C/SPI通信,引腳VCC接3.3V電源,引腳GND接地。觸摸芯片U1的引腳X+和引腳X-之間串聯m個電阻作為行電阻,引腳Y+和引腳Y-之間串聯n個電阻作為列電阻,在每相鄰兩個行電阻之間引出一條列線,在每相鄰兩個列電阻之間引出一條行線,在每一條行線和每一條列線的交叉點處設置一個按鍵,形成(m-1)*(n-1)個按鍵的矩陣鍵盤,其中,m和n均為大于等于3的正整數。
其中,在本實施例中,所述m個行電阻的阻值相同,所述n個列電阻的阻值相同,本實施例將所有的行電阻的阻值設計為相同,以及將所有的列電阻設計為相同,使得通過行電阻形成的電壓梯度和通過列電阻形成的電壓梯度為均衡電壓梯度,對于后續(xù)的計算按鍵的位置更簡單。當然,也可以將m個行電阻的阻值設計為不同,將n個列電阻的阻值也設計得不同,只是后續(xù)計算按鍵的位置稍微麻煩一點,兩種情況下基本原理是一樣的。
參見圖3,所述觸摸芯片U1內部還包括ADC轉換電路,所述觸摸芯片U1中還包括ADC轉換電路,所述ADC轉換電路的輸入端與觸摸芯片U1的引腳X+和引腳Y+連接,所述ADC轉換電路的輸出端通過觸摸芯片U1并經過I2C/SPI總線與所述單片機MCU連接。
本實施例提供了一種行列矩陣鍵盤接口電路,對本實施例中的行列矩陣鍵盤的掃描方式,即如何確定矩陣按鍵中的按鍵被按下的位置,與傳統的行列掃描方法也不同。對本實施例中的行列矩陣鍵盤的掃描方法具體包括以下步驟:
S1,單片機MCU的中斷INT0產生使能驅動信號,驅動觸摸芯片U1工作;
S2,當按鍵按下時,在觸摸芯片U1的引腳X+處施加驅動電壓VDrive,引腳X-接地,形成電壓梯度,在引腳Y+引出端測量輸出電壓Vxout;
S3,在觸摸芯片U1的引腳Y+處施加驅動電壓VDrive,引腳Y-接地,形成電壓梯度,在引腳X+引出端測量輸出電壓VYout;
S4,觸摸芯片U1將測量得到的Vxout和VYout通過I2C/SPI通信傳輸至單片機MCU;
S5,單片機MCU根據Vxout和VYout計算得到按鍵按下的位置。
下面通過一個具體的例子來說明如何確定矩陣鍵盤中按鍵被按下的位置。
分別參見圖2、圖4和圖5所示,對于4*4行列矩陣鍵盤為例,需要5個行電阻和5個列電阻,其中,5個行電阻分別為R11、R12、R13、R14和R15,5個列電阻分別為R21、R22、R23、R24和R25,設計的4*4行列矩陣鍵盤為的第一行按鍵為S11、S12、S13和S14,第二行按鍵為S21、S22、S23和S24,第三行按鍵為S31、S32、S33和S34,第四行按鍵為S41、S42、S43和S44。當第1行第1列的按鍵被按下時,X方向上的電壓等效電路圖如圖4所示,在X+引腳處施加施加驅動電壓VDrive,X-引腳接地,形成電壓梯度,在Y+引出端測量得到第一個按鍵按下的電壓VXout=4/5VDrive。圖5為Y方向的電壓等效電路圖,在Y+引腳處施加施加驅動電壓VDrive,Y-引腳接地,形成電壓梯度,在X+引出端測量得到第一個按鍵按下的電壓VYout=4/5VDrive。
觸摸芯片U1中的ADC轉換電路的輸入端在一個時鐘周期內采集接觸點X+和Y+的電壓值,經過12個周期后將采集到的電壓值Vxout和VYout轉換為12位的數字信號傳輸至單片機MCU。單片機MCU根據Vxout和VYout反推得到按鍵按下的位置。
對上述總結一下,即當(m-1)行(n-1)列矩陣鍵盤中的第a行第b列按鍵被按下時,在X+引腳處施加施加驅動電壓VDrive,X-引腳接地,形成電壓梯度,在Y+引出端測量得到的電壓值為VXout=(m-a)/mVDrive;在Y+引腳處施加施加驅動電壓VDrive,Y-引腳接地,形成電壓梯度,在X+引出端測量得到第一個按鍵按下的電壓VYout=(n-b)/nVDrive,最后單片機MCU根據(Vxout,VYout)反推得到按鍵按下的位置。
本實用新型提供的一種行列矩陣鍵盤接口電路,利用觸摸芯片構造電阻網絡,形成電壓梯度,根據觸摸屏原理,實現只需要單片機的3-4個I/O口就能實現任意行列數目的矩陣式鍵盤,相比傳統的4*4行列矩陣式鍵盤要用到單片機的8個I/O口,4*5行列矩陣式鍵盤將用到9個I/O口,本發(fā)明的矩陣鍵盤接口電路設計極大減少了單片機I/O口使用數量,為其他外設留下更多I/O資源;并且不再需要傳統的行列掃描法,觸摸屏芯片采用硬件掃描,當掃描檢測到有按鍵按下后,會給單片機發(fā)送中斷信號,單片機通過I2C/SPI通信口即可讀取電壓值,確定被按下按鍵的位置,極大地簡化了單片機的按鍵掃描工作量,提高了按鍵掃描的實時性,在單片機外接矩陣鍵盤領域有極大應用價值。
在本說明書的描述中,參考術語“實施例一”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體方法、裝置或者特點包含于本實用新型的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、方法、裝置或者特點可以在任一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情況下,本領域的技術人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結合和組合。
以上所述僅為本實用新型的較佳實施例,并不用以限制本實用新型,凡在本實用新型的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本實用新型的保護范圍之內。