|
單片機基礎:鍵盤(pán)接口原理詳解
1. 鍵的分類(lèi)
按鍵按照結構原理可分為兩類(lèi),一類(lèi)是觸點(diǎn)式開(kāi)關(guān)按鍵,如機械式開(kāi)關(guān)、導電橡膠式開(kāi)關(guān)等;另一類(lèi)是無(wú)觸點(diǎn)式開(kāi)關(guān)按鍵,如電氣式按鍵,磁感應按鍵等。前者造價(jià)低,后者壽命長(cháng)。目前,微機系統中最常見(jiàn)的是觸點(diǎn)式開(kāi)關(guān)按鍵。
2.輸入原理
在單片機應用系統中,除了復位按鍵有專(zhuān)門(mén)的復位電路及專(zhuān)一的復位功能外,其它按鍵都是以開(kāi)關(guān)狀態(tài)來(lái)設置控制功能或輸入數據的。當所設置的功能鍵或數字鍵按下時(shí),計算機應用系統應完成該按鍵所設定的功能,鍵信息輸入是與軟件結構密切相關(guān)的過(guò)程。
對于一組鍵或一個(gè)鍵盤(pán),總有一個(gè)接口電路與CPU相連。CPU可以采用查詢(xún)或中斷方式了解有無(wú)將鍵輸入,并檢查是哪一個(gè)鍵按下,將該鍵號送入累加器ACC,然后通過(guò)跳轉指令轉入執行該鍵的功能程序,執行完后再返回主程序
3.按鍵結構與特點(diǎn)
微機鍵盤(pán)通常使用機械觸點(diǎn)式按鍵開(kāi)關(guān),其主要功能是把機械上的通斷轉換成為電氣上的邏輯關(guān)系。也就是說(shuō),它能提供標準的TTL邏輯電平,以便與通用數字系統的邏輯電平相容。
機械式按鍵再按下或釋放時(shí),由于機械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機械抖動(dòng),然后其觸點(diǎn)才穩定下來(lái)。其抖動(dòng)過(guò)程如下圖所示,抖動(dòng)時(shí)間的長(cháng)短與開(kāi)關(guān)的機械特性有關(guān),一般為5~10 ms。
在觸點(diǎn)抖動(dòng)期間檢測按鍵的通與斷狀態(tài),可能導致判斷出錯,即按鍵一次按下或釋放被錯誤地認為是多次操作,這種情況是不允許出現的。為了克服按鍵觸點(diǎn)機械抖動(dòng)所致的檢測誤判,必須采取去抖動(dòng)措施。這一點(diǎn)可從硬件、軟件兩方面予以考慮。在鍵數較少時(shí),可采用硬件去抖,而當鍵數較多時(shí),采用軟件去抖。
4. 按鍵編碼
一組按鍵或鍵盤(pán)都要通過(guò)I/O口線(xiàn)查詢(xún)按鍵的開(kāi)關(guān)狀態(tài)。根據鍵盤(pán)結構的不同,采用不同的編碼。無(wú)論有無(wú)編碼,以及采用什么編碼,最后都要轉換成為與累加器中數值相對應的鍵值,以實(shí)現按鍵功能程序的跳轉。
5. 制鍵盤(pán)程序
一個(gè)完善的鍵盤(pán)控制程序應具備以下功能:
(1) 檢測有無(wú)按鍵按下,并采取硬件或軟件措施,消除鍵盤(pán)按鍵機械觸點(diǎn)抖動(dòng)的影響。
(2) 有可靠的邏輯處理辦法。每次只處理一個(gè)按鍵,其間對任何按鍵的操作對系統不產(chǎn)生影響,且無(wú)論一次按鍵時(shí)間有多長(cháng),系統僅執行一次按鍵功能程序。
(3) 準確輸出按鍵值(或鍵號),以滿(mǎn)足跳轉指令要求。
獨立式按鍵
單片機控制系統中,往往只需要幾個(gè)功能鍵,此時(shí),可采用獨立式按鍵結構。
1.獨立式按鍵結構
獨立式按鍵是直接用I/O口線(xiàn)構成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨占用一根I/O口線(xiàn),每個(gè)按鍵的工作不會(huì )影響其它I/O口線(xiàn)的狀態(tài)。獨立式按鍵的典型應用如圖7.4所示。
獨立式按鍵電路配置靈活,軟件結構簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口線(xiàn),因此,在按鍵較多時(shí),I/O口線(xiàn)浪費較大,不宜采用。
2. 立式按鍵的軟件結構
獨立式按鍵的軟件常采用查詢(xún)式結構。先逐位查詢(xún)每根I/O口線(xiàn)的輸入狀態(tài),如某一根I/O口線(xiàn)輸入為低電平,則可確認該I/O口線(xiàn)所對應的按鍵已按下,然后,再轉向該鍵的功能處理程序。
矩陣式按鍵
單片機系統中,若使用按鍵較多時(shí),通常采用矩陣式(也稱(chēng)行列式)鍵盤(pán)。
1. 矩陣式鍵盤(pán)的結構及原理
矩陣式鍵盤(pán)由行線(xiàn)和列線(xiàn)組成,按鍵位于行、列線(xiàn)的交叉點(diǎn)上,其結構如下圖所示。
由圖可知,一個(gè)4×4的行、列結構可以構成一個(gè)含有16個(gè)按鍵的鍵盤(pán),顯然,在按鍵數量較多時(shí),矩陣式鍵盤(pán)較之獨立式按鍵鍵盤(pán)要節省很多I/O口。
矩陣式鍵盤(pán)中,行、列線(xiàn)分別連接到按鍵開(kāi)關(guān)的兩端,行線(xiàn)通過(guò)上拉電阻接到+5V上。當無(wú)鍵按下時(shí),行線(xiàn)處于高電平狀態(tài);當有鍵按下時(shí),行、列線(xiàn)將導通,此時(shí),行線(xiàn)電平將由與此行線(xiàn)相連的列線(xiàn)電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤(pán)中的行線(xiàn)、列線(xiàn)和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線(xiàn)和列線(xiàn)的電平,各按鍵間將相互影響,因此,必須將行線(xiàn)、列線(xiàn)信號配合起來(lái)作適當處理,才能確定閉合鍵的位置。
2.式鍵盤(pán)按鍵的識別
識別按鍵的方法很多,其中,最常見(jiàn)的方法是掃描法。
按鍵按下時(shí),與此鍵相連的行線(xiàn)與列線(xiàn)導通,行線(xiàn)在無(wú)鍵按下時(shí)處在高電平。顯然,如果讓所有的列線(xiàn)也處在高電平,那么,按鍵按下與否不會(huì )引起行線(xiàn)電平的變化,因此,必須使所有列線(xiàn)處在低電平。只有這樣,當有鍵按下時(shí),該鍵所在的行電平才會(huì )由高電平變?yōu)榈碗娖。CPU根據行電平的變化,便能判定相應的行有鍵按下。
3. 盤(pán)的編碼
對于獨立式按鍵鍵盤(pán),因按鍵數量少,可根據實(shí)際需要靈活編碼。對于矩陣式鍵盤(pán),按鍵的位置由行號和列號惟一確定,因此可分別對行號和列號進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節,高4位是行號,低4位是列號。
4. 鍵盤(pán)的工作方式
對鍵盤(pán)的響應取決于鍵盤(pán)的工作方式,鍵盤(pán)的工作方式應根據實(shí)際應用系統中CPU的工作狀況而定,其選取的原則是既要保證CPU能及時(shí)響應按鍵操作,又不要過(guò)多占用CPU的工作時(shí)間。通常,鍵盤(pán)的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。
1) 編程掃描方式
編程掃描方式是利用CPU完成其它工作的空余時(shí)間,調用鍵盤(pán)掃描子程序來(lái)響應鍵盤(pán)輸入的要求。在執行鍵功能程序時(shí),CPU不再響應鍵輸入要求,直到CPU重新掃描鍵盤(pán)為止。
2) 定時(shí)掃描方式
定時(shí)掃描方式就是每隔一段時(shí)間對鍵盤(pán)掃描一次,它利用單片機內部的定時(shí)器產(chǎn)生一定時(shí)間(例如10 ms)的定時(shí),當定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷。CPU響應中斷后對鍵盤(pán)進(jìn)行掃描,并在有鍵按下時(shí)識別出該鍵,再執行該鍵的功能程序。
3) 中斷掃描方式
采用上述兩種鍵盤(pán)掃描方式時(shí),無(wú)論是否按鍵,CPU都要定時(shí)掃描鍵盤(pán),而單片機應用系統工作時(shí),并非經(jīng)常需要鍵盤(pán)輸入,因此,CPU經(jīng)常處于空掃描狀態(tài)。
為提高CPU工作效率,可采用中斷掃描工作方式。其工作過(guò)程如下:當無(wú)鍵按下時(shí),CPU處理自己的工作,當有鍵按下時(shí),產(chǎn)生中斷請求,CPU轉去執行鍵盤(pán)掃描子程序,并識別鍵號。
想要了解嵌入式、物聯(lián)網(wǎng)相關(guān)技術(shù)的可以聯(lián)系宋工企鵝號三五二四六五九零八八
Tel:173--1795--1908
免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。
|
|