專利名稱:一種鍵盤掃描方法
技術領域:
本發(fā)明涉及鍵盤領域,尤其涉及一種矩陣式結構的鍵盤掃描方法。
背景技術:
現有的鍵盤掃描一般包括2種。一種是直接端口掃描的方式,通過一上拉電阻在 每個端口的按鍵接入高電平,當掃描到端口變?yōu)楦唠娖奖硎景聪掳存I。該方法優(yōu)點是簡單 可靠,缺點是占有端口資源大。另外,還有一種是矩陣式掃描,即由X+Y個端口構成的X*Y 的掃描矩陣,X個掃描輸出和Y個掃描輸入,根據組合得到相應按鍵。但是該方法相比第一 種方法節(jié)約了端口資源,但是依然不夠精簡。另有一專利公開號為“CN200420110550”的方 案公開了一種鍵盤掃描方法,應用該方法相比原來的X*Y的矩陣式掃描,采用X+Y個電阻、 X*(Y+1)個二極管、X*Y個按鍵、X/2+Y個接線組成,X是偶數,相比減少了 X/2根接線。但 采用該方法依然不夠節(jié)約端口資源。在某些場合的應用依然不夠適用,不利于節(jié)約成本。
發(fā)明內容
本發(fā)明提出另一種鍵盤掃描方法,大大地節(jié)約掃描I/O端口的數量。本發(fā)明的技術方案是本發(fā)明用于掃描輸入輸出交叉矩陣的鍵盤電路,所述的鍵盤電路共有n個輸入輸 出口,10_0 口至I0_n-1 口,任意一個輸入輸出口都可以與其它輸入輸出口組合形成一個按 鍵。總共可以組合的按鍵數量=(n-l) + (n-2)+......+1。本發(fā)明的鍵盤掃描方法,包括如下掃描步驟步驟101 初始化掃描程序;步驟102 設置變量i = 0 ;步驟103 判斷變量i是否小于n ;如果i < n,則進入步驟104,步驟104:設置I0_i 口為輸出口,置默認的第一電平,其他10 口為輸入口 ;步驟105 設置跳變I0_i 口為第二電平后,讀取其他10 口的電平狀態(tài);步驟106 掃描判斷其他10 口是否有第二電平;如果其他10 口有第二電平,則進入步驟107,步驟107 儲存記錄有第二電平的10 口的鍵值,進入步驟108 ;如果其他10 口沒有第二電平,則進入步驟108,步驟108 變量i的值+1,進入返回步驟103 ;如果不是i < n,則進入步驟109,步驟109 處理按鍵掃描值結果;步驟110:掃描結束。進一步的,所述的第一電平為高電平,所述的第二電平為低電平。本發(fā)明的技術方案,在不加外圍輔助電路情況下,使得利用輸入輸出口產生按鍵的個數最大化,節(jié)約了硬件資源和成本,可以應用于某些I/O 口資源緊缺的鍵盤電路中。
圖1是本發(fā)明的輸入輸出交叉矩陣的鍵盤電路的示意圖;圖2是本發(fā)明的掃描方法的流程圖。
具體實施例方式現結合附圖和具體實施方式
對本發(fā)明進一步說明。參閱圖1所示,所述的鍵盤電路共有n個輸入輸出口,10_0 口至I0_n-1 口,任意一 個輸入輸出口都可以與其它輸入輸出口組合形成一個按鍵。如I0_n-1 口和I0_n-2 口、10_
n-3 口、......10_0 口構成(n-1)個按鍵,I0_n_2 口和 I0_n_3 口、I0_n_4 口、......10_0
口構成(n-2)個按鍵。依此類推,總共可以組合的按鍵數量=(n-l) + (n-2)+......+1。參閱圖2所示,本發(fā)明的鍵盤掃描方法,包括如下掃描步驟步驟101 初始化掃描程序;步驟102 設置變量i = 0 ;步驟103 判斷變量i是否小于n ;如果i < n,則進入步驟104,步驟104 設置I0_i 口為輸出口,置默認的高電平,其他10 口為輸入口 ;步驟105 設置跳變I0_i 口為低電平后,讀取其他10 口的電平狀態(tài);步驟106 掃描判斷其他10 口是否有低電平;如果其他10 口有低電平,則進入步驟107,步驟107 儲存記錄有低電平的10 口的鍵值,進入步驟108 ;如果其他10 口沒有低電平,則進入步驟108,步驟108 變量i的值+1,進入返回步驟103 ;如果不是i < n,則進入步驟109,步驟109 處理按鍵掃描值結果;步驟110:掃描結束。本發(fā)明采用的方法可以減少對輸入輸出口的要求量,比如同樣是10個輸入輸出
口,采用組合的方法可以得到鍵的個數為(10-1) + (10-2) + (10-3)+1...... =45個。最主
要的是,通過軟件掃描的方式進行,大大節(jié)約硬件資源。盡管結合優(yōu)選實施方案具體展示和介紹了本發(fā)明,但所屬領域的技術人員應該明 白,在不脫離所附權利要求書所限定的本發(fā)明的精神和范圍內,在形式上和細節(jié)上可以對 本發(fā)明做出各種變化,均為本發(fā)明的保護范圍。
權利要求
一種鍵盤掃描方法,用于掃描輸入輸出交叉矩陣的鍵盤電路,所述的鍵盤電路共有n個輸入輸出口,任意一個IO輸入輸出口都可以與其它IO輸入輸出口組合形成一個按鍵,掃描1/2*n*(n 1)個按鍵,其特征在于,包括如下掃描步驟步驟101初始化掃描程序;步驟102設置變量i=0;步驟103判斷變量i是否小于n;如果i<n,則進入步驟104,步驟104設置IO_i口為輸出口,置默認的第一電平,其他IO口為輸入口;步驟105設置跳變IO_i口為第二電平后,讀取其他IO口的電平狀態(tài);步驟106掃描判斷其他IO口是否有第二電平;如果其他IO口有第二電平,則進入步驟107,步驟107儲存記錄有第二電平的IO口的鍵值,進入步驟108;如果其他IO口沒有第二電平,則進入步驟108,步驟108變量i的值+1,進入返回步驟103;如果不是i<n,則進入步驟109,步驟109處理按鍵掃描值結果;步驟110掃描結束。
2.根據權利要求1所述的鍵盤掃描方法,其特征在于所述的第一電平為高電平,所述 的第二電平為低電平。
全文摘要
本發(fā)明涉及鍵盤領域,尤其涉及一種矩陣式結構的鍵盤掃描方法。鍵盤掃描方法,用于掃描輸入輸出交叉矩陣的鍵盤電路,所述的鍵盤電路共有n個輸入輸出口,任意一個IO輸入輸出口都可以與其它IO輸入輸出口組合形成一個按鍵,掃描1/2×n×(n-1)個按鍵。本發(fā)明的方法通過設置一個IO_i口為輸出口,置默認的高電平,再掃描判斷其他IO口是否有低電平,若有儲存記錄有該IO口的鍵值。本發(fā)明的技術方案,在不加外圍輔助電路情況下,使得利用輸入輸出口產生按鍵的個數最大化,節(jié)約了硬件資源和成本,可以應用于某些I/O口資源緊缺的鍵盤電路中。
文檔編號H03M11/20GK101924563SQ20091011201
公開日2010年12月22日 申請日期2009年6月16日 優(yōu)先權日2009年6月16日
發(fā)明者鄭添來 申請人:廈門敏訊信息技術股份有限公司