余水寶,張 勝,李 勇
(浙江師范大學(xué)數(shù)理與信息工程學(xué)院,浙江金華 321004)
隨著經(jīng)濟(jì)和技術(shù)的發(fā)展,單片機(jī)在各個(gè)領(lǐng)域的應(yīng)用突飛猛進(jìn)。鍵盤是單片機(jī)和ARM應(yīng)用系統(tǒng)中一個(gè)最常規(guī)的IO設(shè)備,但由于應(yīng)用領(lǐng)域的多樣性,有時(shí)對(duì)鍵盤編碼占用單片機(jī)的IO引腳資源不得不斤斤計(jì)較,尤其是應(yīng)用領(lǐng)域受到空間和功耗等因素的限制時(shí),更是為減少一條單片機(jī)IO引腳而絞盡腦汁。本文在研究獨(dú)立編碼和矩陣編碼的技術(shù)的基礎(chǔ)上,提出一項(xiàng)新的混合編碼技術(shù),以實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)中鍵盤編碼和IO資源利用率的進(jìn)一步優(yōu)化。
獨(dú)立編碼鍵盤指的是一個(gè)按鍵獨(dú)立占用單片機(jī)的一條IO線[1],如圖1所示。設(shè)按鍵數(shù)為L(zhǎng)AJ1,占用IO線數(shù)為L(zhǎng)IO,則有關(guān)系為
獨(dú)立編碼的優(yōu)點(diǎn)是軟件編程簡(jiǎn)單,電路簡(jiǎn)潔,缺點(diǎn)是單片機(jī)資源利用率不高,因此只有在單片機(jī)IO線較為富裕且按鍵數(shù)較少的場(chǎng)合下使用。
矩陣編碼鍵盤是將單片機(jī)的LIO條IO線分為M條行線和N條列線,組成一個(gè)M×N的按鍵矩陣[2],如圖2所示。按鍵數(shù)LAJ2與占用IO線數(shù)LIO有關(guān)系式:
圖1 獨(dú)立編碼
圖2 矩陣編碼
當(dāng)LIO一定時(shí),聯(lián)立求解式(2)和式(3)兩式,有
實(shí)際情況要求式(5)有整數(shù)實(shí)數(shù)解,即要求
當(dāng)單片機(jī)IO線LIO為偶數(shù)時(shí),令-=0,有
此時(shí)按鍵數(shù)取得最大值,即
當(dāng)單片機(jī)IO線LIO為奇數(shù)時(shí),令-=1,有
此時(shí)按鍵數(shù)LAJ2與LIO的關(guān)系為
矩陣編碼的優(yōu)點(diǎn)很明顯,占用單片機(jī)較少的IO資源,可獲得較多的按鍵數(shù),因此常用在需要較多按鍵且單片機(jī)IO資源又受限的場(chǎng)合。矩陣編碼的缺點(diǎn)是編程要稍微復(fù)雜些。
聯(lián)立求解式(6)和式(1),可求得矩陣編碼按鍵數(shù)大于等于獨(dú)立編碼按鍵數(shù)的臨界條件是
由式(11)可知,當(dāng)按鍵數(shù)大于等于4時(shí),首選矩陣編碼方案。然而在工程應(yīng)用中常遇到系統(tǒng)仍缺幾個(gè)按鍵,而單片機(jī)IO資源恰巧又十分緊缺的情況,筆者采用一種新的混合編碼技術(shù)方案,如圖3所示。
圖3 混合編碼
混合編碼是矩陣編碼和獨(dú)立編碼的混合。不難求得混合編碼的按鍵數(shù)LAJ3為
以占用單片機(jī)8條(行列各4條)IO線為例,采用圖2所示的矩陣編碼可實(shí)現(xiàn)LAJ2=/4=M2=16個(gè)按鍵的識(shí)別。若選用圖3所示的混合編碼,則可實(shí)現(xiàn)=M×(N+1)=M×N+M=20個(gè)按鍵的識(shí)別。即混合編碼8條IO線,完成了矩陣編碼9條IO線才能完成的20個(gè)按鍵的識(shí)別任務(wù),因此在消耗單片機(jī)IO資源相同的情況下,混合編碼提高了單片機(jī)IO資源的利用率。
[1] 張毅剛等.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2009
[2] 朱善君等.單片機(jī)接口技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2005