在現(xiàn)代電子系統(tǒng)中,三防平板鍵盤的按鍵個數(shù)及功能通常是根據(jù)具體應(yīng)用來確定的,因此在進(jìn)行系統(tǒng)的按鍵接口設(shè)計時,要根據(jù)應(yīng)用的具體要求來設(shè)計按鍵接口的硬件電路,同時還需要完成識別按鍵動作、生成按鍵鍵碼和按鍵具體功能的程序設(shè)計。
三防平板電子系統(tǒng)的按鍵可以采用機(jī)械開關(guān)或者薄膜式開關(guān),通過開關(guān)中的簧片是否接觸或按壓來接通或斷開電路。如果按鍵的個數(shù)較少,可以采用與嵌入式處理器I/O接口直接相連方式;如果按鍵的數(shù)量較多,為了節(jié)約系統(tǒng)資源可以采用矩陣式鍵盤連接方式。采用鍵盤連接方式需要設(shè)置合理的接口電路,而且還需要編制相應(yīng)的鍵盤輸入程序。為了能夠可靠地識別鍵盤輸入的內(nèi)容,對于由機(jī)械開關(guān)組成的鍵盤,其接口程序必須處理去抖動、防止串鍵和產(chǎn)生鍵值(鍵碼)三個問題。鍵盤輸入程序一般包括以下四部分內(nèi)容。
(1)判斷是否有按鍵按下??梢圆扇〕绦驋呙璺绞健⒍〞r掃描方式對鍵盤進(jìn)行掃描,或者采用中斷掃描方式判斷是否有按鍵按下。
在采用程序掃描方式(即查詢方式)時,系統(tǒng)首先判斷有無按鍵按下,如有按鍵按下則延時10 ms消除抖動,再查詢是哪一個鍵被按下并執(zhí)行相應(yīng)的處理程序。采用定時掃描方式時,需要利用定時器產(chǎn)生定時中斷,響應(yīng)中斷后對鍵盤進(jìn)行掃描,定時掃描方式的硬件電路與程序掃描方式相同。在采用中斷掃描方式時,當(dāng)有按鍵被按下就引起外部中斷后,嵌入式處理器立即響應(yīng)中斷,對鍵盤進(jìn)行掃描處理。
(2)三防平板按鍵去抖動。機(jī)械開關(guān)的抖動現(xiàn)象指當(dāng)按鍵被按下時,機(jī)械開關(guān)在外力的作用下,開關(guān)簧片的閉合有一個從斷開到不穩(wěn)定接觸,最后到可靠接觸的過程,即開關(guān)在達(dá)到穩(wěn)定閉合前,會反復(fù)閉合、斷開幾次,在按鍵釋放時也存在同樣的現(xiàn)象。若不設(shè)法消除開關(guān)這種抖動的影響,會使系統(tǒng)誤認(rèn)為鍵盤按下若干次。鍵的抖動時間一般為毫秒級,為保證正確地識別輸入內(nèi)容,需要去抖動處理。按鍵去抖動一般分為軟件延時和硬件去抖動兩種方法。軟件延時方式是指當(dāng)?shù)弥I盤上有按鍵按下后,延時一段時間(如10 ms)后再進(jìn)行判斷、確認(rèn)鍵盤的狀態(tài);硬件去抖動方式可使用R-S觸發(fā)器方式來實現(xiàn)。
(3)確定按鍵的位置,獲得鍵碼。對于按鍵直接連接方式,需采用逐個I/O接口查詢方式確定按鍵位置;對于鍵盤結(jié)構(gòu),可以采用矩陣掃描方式來確定按鍵的位置,這樣可根據(jù)閉合按鍵位置的編號規(guī)律計算按鍵的鍵碼。
(4)確保對按鍵的一次閉合只做一次處理。如果同時有一個以上的按鍵按下時,系統(tǒng)應(yīng)能識別并做相應(yīng)的處理。三防平板鍵盤的串鍵是指多個鍵同時按下時產(chǎn)生的問題,解決的方法也有軟件方法和硬件方法兩種。軟件方法是用軟件掃描鍵盤,從鍵盤讀取代碼是在只有一個按鍵按下時進(jìn)行的,若有多個按鍵按下時,采用等待或出錯處理。硬件方法則采用硬件電路確保第一個按下的按鍵或者最后一個釋放的按鍵被響應(yīng),其他的按鍵即使按下也不會被響應(yīng)。
在三防平板現(xiàn)代電子系統(tǒng)中,如果按鍵個數(shù)較少(一般指4個以下的按鍵),通??蓪⒚恳粋€按鍵分別連接到微處理器的輸入引腳上,這種連接方式稱為獨立式結(jié)構(gòu)按鍵方式。若需要按鍵的個數(shù)較多,這時通常會把按鍵排成陣列形式,每一行和每一列的交叉點放置一個按鍵,這種連接方式稱為矩陣編碼結(jié)構(gòu)鍵盤(也稱為行列式鍵盤)結(jié)構(gòu)方式,下面將分別加以介紹。
1.獨立式結(jié)構(gòu)按鍵
在按鍵的數(shù)量較少且控制器的I/O接口數(shù)目較多的情況下,可以將每個按鍵的一端接地,另一端通過一個電阻上拉到電源,同時連接到微處理器的I/O接口輸入引腳,如圖1所示,上拉電阻作用是當(dāng)沒有按鍵按下時I/O接口為高電平。一旦有按鍵按下,此時微處理器的輸入引腳為低電平。微處理器根據(jù)對應(yīng)輸入引腳上的是低電平還是高電平來判斷按鍵是否按下,并完成讀取相應(yīng)鍵碼的功能。
2.矩陣編碼結(jié)構(gòu)鍵盤
在某些電子系統(tǒng)中,如果采用獨立式結(jié)構(gòu)按鍵,則需要使用大量的 I/O 接口,導(dǎo)致 I/O接口數(shù)量不足。為了節(jié)省I/O接口的資源,可以將微處理器的I/O接口設(shè)置成兩組不相交的行線和列線,構(gòu)成矩陣編碼結(jié)構(gòu)鍵盤接口形式,即在每個行接口線與列接口線的交叉點設(shè)置一個按鍵開關(guān)。圖2所示為一個含有16個機(jī)械按鍵的矩陣編碼結(jié)構(gòu)鍵盤,排列成為4×4的陣列形式,當(dāng)沒有按鍵按下時,接口的所有行接口線與列接口線斷開不連接。當(dāng)某個按鍵被按下后,相應(yīng)行接口線與列接口線會連接。這種按鍵排列方式也稱為行列式鍵盤,對這種鍵盤的識別通常是采用軟件鍵盤行掃描的方法來實現(xiàn)的。
圖1 獨立式結(jié)構(gòu)按鍵連接方式
圖2 矩陣編碼結(jié)構(gòu)鍵盤
在圖2所示的鍵盤接口中,鍵盤的行接口線和列接口線均由微處理器通過 I/O 接口引腳加以控制。微處理器通過輸出引腳向行接口線上輸出全“0”(低電平)信號,然后通過輸入引腳讀取列接口信號。若鍵盤陣列中無任何按鍵按下,則讀到的所有列接口信號必然是全“1”(高電平)信號。如某個按鍵被按下時就會在對應(yīng)的列接口線上產(chǎn)生“0”信號,這時微處理器會保存被按下鍵的列號;然后微處理器再逐行輸出“0”信號,來判斷被按下的按鍵在哪一行并保存相應(yīng)的行號,這樣就可得到被按下的按鍵對應(yīng)的行接口和列接口的位置,即鍵碼。這種鍵盤處理的方法稱為行掃描編程法,具體的流程如圖3所示。
圖3 行掃描編程法的具體流程
當(dāng)采用中斷掃描編程方式時,如有按鍵按下時會向微處理器申請中斷,微處理器可以進(jìn)入中斷程序處理按鍵,也可以設(shè)置標(biāo)志位,退出中斷后在應(yīng)用程序中處理按鍵。