單片機(jī)矩陣式鍵盤(pán)的編程方法
單片機(jī)系統(tǒng)中,若使用按鍵較多時(shí),通常采用矩陣式(也稱(chēng)行列式)鍵盤(pán)。1.矩陣式鍵盤(pán)的結(jié)構(gòu)及原理
矩陣式鍵盤(pán)由行線(xiàn)和列線(xiàn)組成,按鍵位于行、列線(xiàn)的交叉點(diǎn)上,其結(jié)構(gòu)如圖所示。
由圖可知,一個(gè) 4 × 4 的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)含有 16 個(gè)按鍵的鍵盤(pán),顯然,在按鍵數(shù)量較多時(shí),矩陣式鍵盤(pán)較之獨(dú)立式按鍵鍵盤(pán)要節(jié)省很多 I/O 口。
矩陣式鍵盤(pán)中,行、列線(xiàn)分別連接到按鍵開(kāi)關(guān)的兩端,行線(xiàn)通過(guò)上拉電阻接到+ 5V 上。當(dāng)無(wú)鍵按下時(shí),行線(xiàn)處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線(xiàn)將導(dǎo)通,此時(shí),行線(xiàn)電平將由與此行線(xiàn)相連的列線(xiàn)電平?jīng)Q定。這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤(pán)中的行線(xiàn)、列線(xiàn)和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線(xiàn)和列線(xiàn)的電平,各按鍵間將相互影響,因此,必須將行線(xiàn)、列線(xiàn)信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。
2.矩陣式鍵盤(pán)按鍵的識(shí)別
識(shí)別按鍵的方法很多,其中,最常見(jiàn)的方法是掃描法。下面以圖中 8 號(hào)鍵的識(shí)別為例來(lái)說(shuō)明掃描法識(shí)別按鍵的過(guò)程。
按鍵按下時(shí),與此鍵相連的行線(xiàn)與列線(xiàn)導(dǎo)通,行線(xiàn)在無(wú)鍵按下時(shí)處在高電平。顯然,如果讓所有的列線(xiàn)也處在高電平,那么,按鍵按下與否不會(huì)引起行線(xiàn)電平的變化,因此,必須使所有列線(xiàn)處在低電平。只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會(huì)由高電平變?yōu)榈碗娖健?CPU 根據(jù)行電平的變化,便能判定相應(yīng)的行有鍵按下。 8 號(hào)鍵按下時(shí),第 2 行一定為低電平。然而,第 2 行為低電平時(shí),能否肯定是 8 號(hào)鍵按下呢?
回答是否定的,因?yàn)?9 、 10 、 11 號(hào)鍵按下,同樣會(huì)使第 2 行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線(xiàn)在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線(xiàn)處于低電平,其余列線(xiàn)均處于高電平,另一時(shí)刻,讓下一列處在低電平,依此循環(huán),這種依次輪流每次選通一列的工作方式稱(chēng)為鍵盤(pán)掃描。采用鍵盤(pán)掃描后,再來(lái)觀察 8 號(hào)鍵按下時(shí)的工作過(guò)程,當(dāng)?shù)?0 列處于低電平時(shí),第 2 行處于低電平,而第 1 、 2 、 3 列處于低電平時(shí),第 2 行卻處在高電平,由此可判定按下的鍵應(yīng)是第 2 行與第 0 列的交叉點(diǎn),即 8 號(hào)鍵。
3.鍵盤(pán)的編碼
對(duì)于獨(dú)立式按鍵鍵盤(pán),因按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。對(duì)于矩陣式鍵盤(pán),按鍵的位置由行號(hào)和列號(hào)惟一確定,因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高 4 位是行號(hào),低 4 位是列號(hào)。如圖 7.5 中的 8 號(hào)鍵,它位于第 2 行,第 0 列,因此,其鍵盤(pán)編碼應(yīng)為 20H 。采用上述編碼對(duì)于不同行的鍵離散性較大,不利于散轉(zhuǎn)指令對(duì)按鍵進(jìn)行處理。因此,可采用依次排列鍵號(hào)的方式對(duì)按排進(jìn)行編碼。以圖 7.5 中的 4 × 4 鍵盤(pán)為例,可將鍵號(hào)編碼為: 01H 、 02H 、 03H 、 … 、 0EH 、 0FH 、 10H 等 16 個(gè)鍵號(hào)。編碼相互轉(zhuǎn)換可通過(guò)計(jì)算或查表的方法實(shí)現(xiàn)。
4.鍵盤(pán)的工作方式
對(duì)鍵盤(pán)的響應(yīng)取決于鍵盤(pán)的工作方式,鍵盤(pán)的工作方式應(yīng)根據(jù)實(shí)際應(yīng)用系統(tǒng)中 CPU 的工作狀況而定,其選取的原則是既要保證 CPU 能及時(shí)響應(yīng)按鍵操作,又不要過(guò)多占用 CPU 的工作時(shí)間。通常,鍵盤(pán)的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。
編程掃描方式
編程掃描方式是利用 CPU 完成其它工作的空余時(shí)間,調(diào)用鍵盤(pán)掃描子程序來(lái)響應(yīng)鍵盤(pán)輸入的要求。在執(zhí)行鍵功能程序時(shí), CPU 不再響應(yīng)鍵輸入要求,直到 CPU 重新掃描鍵盤(pán)為止。
鍵盤(pán)掃描程序一般應(yīng)包括以下內(nèi)容:
(1) 判別有無(wú)鍵按下。
(2) 鍵盤(pán)掃描取得閉合鍵的行、列值。
(3) 用計(jì)算法或查表法得到鍵值。
(4) 判斷閉合鍵是否釋放,如沒(méi)釋放則繼續(xù)等待。
(5) 將閉合鍵鍵號(hào)保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。
編輯:admin 最后修改時(shí)間:2018-05-08