8-鍵盤接口技術(shù)課件_第1頁
8-鍵盤接口技術(shù)課件_第2頁
8-鍵盤接口技術(shù)課件_第3頁
8-鍵盤接口技術(shù)課件_第4頁
8-鍵盤接口技術(shù)課件_第5頁
已閱讀5頁,還剩105頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第2章鍵盤接口技術(shù)

按鍵

簡單鍵盤接口矩陣式鍵盤接口可編程鍵盤接口第2章鍵盤接口技術(shù)

按鍵1按鍵的分類按鍵輸入原理按鍵開關(guān)的抖動問題鍵盤由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開關(guān)元件,也就是說鍵盤是一組規(guī)則排列的開關(guān)。單片機(jī)使用的按鍵是一種常開型的開關(guān),平時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開狀態(tài),按下鍵時(shí)它們才閉合。按鍵按鍵的分類鍵盤由一組規(guī)則排列的按鍵組成,一個(gè)按鍵2按鍵的分類按鍵按照結(jié)構(gòu)原理可分為兩類:1.觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;2.無觸點(diǎn)開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。.按鍵按照接口原理可分為:1.編碼鍵盤2.非編碼鍵盤兩類,編碼鍵盤主要是用硬件來實(shí)現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的定義與識別。前者造價(jià)低,后者壽命長。目前,單片機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵。按鍵的分類按鍵按照結(jié)構(gòu)原理可分為兩類:按鍵按照接口原理可分3按鍵輸入原理在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路及專一的復(fù)位功能外,其他按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),單片機(jī)系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。對于一個(gè)鍵盤或一組按鍵,單片機(jī)系統(tǒng)中總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無按鍵輸入并檢查是哪一個(gè)鍵按下,將該鍵號送入累加器ACC,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。按鍵輸入原理在單片機(jī)應(yīng)用系統(tǒng)中,除4按鍵開關(guān)的抖動問題單片機(jī)系統(tǒng)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的按鍵。當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),會有抖動,如下圖所示。在觸點(diǎn)抖動期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。常用的去抖動的方法有兩種:1.硬件方法2.軟件方法按鍵開關(guān)的抖動問題單片機(jī)系統(tǒng)中應(yīng)5硬件方法在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動電路,如圖所示。電路工作過程

硬件方法在硬件上可采用在鍵輸出端加R6電路工作過程按鍵未按下時(shí),a=0,b=1,輸出Q=1,按鍵按下時(shí),因按鍵的機(jī)械彈性作用的影響,使按鍵產(chǎn)生抖動,當(dāng)開關(guān)沒有穩(wěn)定到達(dá)b端時(shí),因與非門2輸出為0反饋到與非門1的輸入端,封鎖了與非門1,雙穩(wěn)態(tài)電路的狀態(tài)不會改變,輸出保持為1,輸出Q不會產(chǎn)生抖動的波形。當(dāng)開關(guān)穩(wěn)定到達(dá)b端時(shí),因a=1,b=0,使Q=0,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn)。當(dāng)釋放按鍵時(shí),在開關(guān)未穩(wěn)定到達(dá)a端時(shí),因Q=0,封鎖了與非門2,雙穩(wěn)態(tài)電路的狀態(tài)不變,輸出Q保持不變,消除了后沿的抖動波形。當(dāng)開關(guān)穩(wěn)定到達(dá)a端時(shí),因a=0,b=1,使Q=1,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn),輸出Q重新返回原狀態(tài)。由此可見,鍵盤輸出經(jīng)雙穩(wěn)態(tài)電路之后,輸出已變?yōu)橐?guī)范的矩形方波。電路工作過程按鍵未按下時(shí),a=7軟件方法軟件方法其實(shí)很簡單,就是在單片機(jī)獲得P1.0口為低電平的信息后,不是立即認(rèn)定S已被按下,而是延時(shí)10ms或更長一些時(shí)間后再次檢測P1.0口,如果仍為低電平,說明S的確按下了,這實(shí)際上是避開了按鍵按下時(shí)的抖動時(shí)間。而在檢測到按鍵釋放后(P1.0為高電平)再延時(shí)5~10ms,消除后沿的抖動,然后再對鍵值處理。不過一般情況下,通常不對按鍵釋放的后沿進(jìn)行處理,實(shí)踐證明,也能滿足一定的要求。當(dāng)然,在實(shí)際應(yīng)用中,對按鍵的要求也是千差萬別的,要根據(jù)不同的需要來編制處理程序,但以上是消除按鍵抖動的原則。軟件方法軟件方法其實(shí)很簡單,就是在8簡單鍵盤接口簡單鍵盤的工作原理簡單鍵盤的接口電路與編程

實(shí)踐與思考簡單鍵盤接口9簡單鍵盤的工作原理如果系統(tǒng)只需幾個(gè)按鍵,可直接采用I/O線構(gòu)成單個(gè)按鍵電路,各個(gè)按鍵之間相互獨(dú)立,一根線上的按鍵狀態(tài)不會影響其他輸入線上的工作狀態(tài),又稱獨(dú)立式鍵盤接口電路。這種電路每個(gè)按鍵需要占用一根I/O線,在按鍵數(shù)量較多時(shí),輸入口浪費(fèi)大且電路結(jié)構(gòu)很煩瑣,因此這種鍵盤接口電路只適用于按鍵較少或要求較高操作速度的場合。簡單鍵盤的工作原理如果系統(tǒng)只需幾個(gè)按鍵,可直10簡單鍵盤的接口電路與編程(1)程序?qū)崿F(xiàn)的功能(2)程序采用的方法(3)程序中用到的變量和常量的定義(4)程序中調(diào)用的子程序(5)程序清單(6)程序分析與思考下面以圖(a)為例進(jìn)行編程。簡單鍵盤的接口電路與編程(1)程序?qū)崿F(xiàn)的功能下面以圖(11程序?qū)崿F(xiàn)的功能檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉(zhuǎn)入相應(yīng)的按鍵處理。程序?qū)崿F(xiàn)的功能檢測是否有鍵閉合,如有鍵12程序采用的方法P3.2:開始,按此鍵則燈開始流動(由上而下)P3.3:停止,按此鍵則停止流動,所有燈為暗P3.4:上,按此鍵則燈由上向下流動P3.5:下,按此鍵則燈由下向上流動程序采用查詢的方法,P1口接8個(gè)發(fā)光二極管,4個(gè)按鍵分別接到P3.2、P3.3、P3.4和P3.5,且定義如下。程序采用的方法P3.2:開始,按此鍵則燈開始流動(由上而下13程序中用到的變量和常量的定義UpDown ;上下行標(biāo)志StartEnd ;啟動及停止標(biāo)志LAMPCODE;存放流動的數(shù)據(jù)代碼程序中用到的變量和常量的定義UpDown 14程序中調(diào)用的子程序KEY;鍵盤程序KEYPROC;鍵盤處理程序LAMP;燈顯示程序DELAY;延時(shí)程序,鍵盤處理中調(diào)用程序中調(diào)用的子程序KEY15程序分析與思考

這里介紹的鍵盤處理程序比較簡單,實(shí)際上,鍵盤的處理是很復(fù)雜的,但這種復(fù)雜并不來自于單片機(jī)的本身,而是來自于操作者的習(xí)慣等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜恚詈笤偃懘a,這樣,才能快速有效地寫好代碼。程序分析與思考16實(shí)踐與思考

1.設(shè)計(jì)一個(gè)簡單3個(gè)按鍵的鍵盤來控制一組發(fā)光二極管,使這組發(fā)光二極管可以以6種不同的花色循環(huán)點(diǎn)亮。2.改用單鍵實(shí)現(xiàn)題1所示功能。實(shí)踐與思考

1.設(shè)計(jì)一個(gè)簡單3個(gè)按鍵的鍵盤來控制一組發(fā)光17矩陣式鍵盤接口矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式鍵盤按鍵的識別鍵盤的編碼鍵盤的工作方式矩陣鍵盤的接口實(shí)例實(shí)踐與思考矩陣式鍵盤接口矩陣式鍵盤的結(jié)構(gòu)與工作原理18矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這一點(diǎn)是識別矩陣按鍵是否被按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號配合起來作適當(dāng)處理,才能確定閉合鍵的位置。矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式19矩陣式鍵盤按鍵的識別1.掃描法2.線反轉(zhuǎn)法矩陣式鍵盤按鍵的識別20掃描法按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無鍵按下時(shí)處在高電平,顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會引起行線電平的變化,因此,必須使所有列線處在低電平,只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會由高電平變?yōu)榈碗娖?。CPU根據(jù)行平電的變化,便能判定相應(yīng)的行有鍵按下。8號鍵按下時(shí),第2行一定為低電平,然而,第2行為低電平時(shí),能否肯定是8號鍵按下呢?回答是否定的,因?yàn)?、10、11號鍵按下同樣使第2行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線處于低電平,其余列線均處于高電平,另一時(shí)刻,讓下一列處在低電平,依次循環(huán),這種依次輪流每次選通一列的工作方式稱為鍵盤掃描。掃描法按鍵按下時(shí),與此鍵相連的行線21線反轉(zhuǎn)法第1步:將列線P1.4~P1.7作為輸入線,行線P1.3~P1.0作為輸出線,并將輸出線輸出全為低電平,讀列線狀態(tài),則列線中電平為低的是按鍵所在的列。第2步:將行線作為輸入線,列線作為輸出線,并將輸出線輸出為低電平,讀行線狀態(tài),則行線中電平為低的是按鍵所在的行。綜合第1、2兩步結(jié)果,可確定按鍵所在的行和列,從而識別出所按下的鍵。線反轉(zhuǎn)法第1步:將列線P1.4~P1.7作為輸入線,行線22鍵盤的編碼1.獨(dú)立式鍵盤按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。2.矩陣式鍵盤按鍵的位置由行號和列號唯一確定,因此可分別對行號和列號進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號,低4位是列號。問題:不同行的鍵離散性較大,不利于散轉(zhuǎn)指令對按鍵進(jìn)行處理。采用依次排列鍵號的方式對安排進(jìn)行編碼。無論以何種方式編碼,均應(yīng)以處理問題方便為原則,而最基本的就是鍵所處的物理位置即行號和列號,它是各種編碼之間相互轉(zhuǎn)換的基礎(chǔ),編碼相互轉(zhuǎn)換可通過計(jì)算或查表的方法實(shí)現(xiàn)??偨Y(jié):鍵盤的編碼1.獨(dú)立式鍵盤按鍵數(shù)量少,可根據(jù)實(shí)際需23鍵盤的工作方式編程掃描方式定時(shí)掃描方式中斷掃描方式鍵盤的工作方式24編程掃描方式

編程掃描方式是利用CPU完成其他工作的空余調(diào)用鍵盤掃描子程序來響應(yīng)鍵盤輸入的要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求,直到CPU重新掃描鍵盤為止。

鍵盤掃描程序一般應(yīng)包括以下內(nèi)容:

(1)判別有無鍵按下。(2)鍵盤掃描取得閉合鍵的行、列值。(3)用計(jì)算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒釋放則繼續(xù)等待。(5)將閉合鍵鍵號保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。

編程掃描方式編程掃描方25定時(shí)掃描方式定時(shí)掃描方式就是每隔一段時(shí)間對鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間(例如10ms)的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷,CPU響應(yīng)中斷后對鍵盤進(jìn)行掃描,并在有鍵按下時(shí)識別出該鍵,再執(zhí)行該鍵的功能程序。定時(shí)掃描方式定時(shí)掃描方式就是每隔一段26定時(shí)掃描方式程序流程圖定時(shí)掃描方式程序流程圖27中斷掃描方式當(dāng)無鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請求,CPU轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識別鍵號。中斷掃描方式可以提高CPU工作效率。圖中的4輸入與門用于產(chǎn)生按鍵中斷,其輸入端與各列線相連,再通過上拉電阻接至+5V電源,輸出端接至8051的外部中斷輸入端。具體工作如下:當(dāng)鍵盤無鍵按下時(shí),與門各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),端為低電平,向CPU申請中斷,若CPU開放外部中斷,則會響應(yīng)中斷請求,轉(zhuǎn)去執(zhí)行鍵盤掃描子程序。中斷掃描方式當(dāng)無鍵按下時(shí),CPU處理28矩陣鍵盤的接口實(shí)例8051單片機(jī)的P1口作為鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0~P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0~P1.3設(shè)置為輸入線,行線P1.4~P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。矩陣鍵盤的接口實(shí)例8051單片機(jī)的P1口作為29(1)程序功能。若有鍵被按下,應(yīng)識別出是哪一個(gè)鍵閉合。方法是對鍵盤的行線進(jìn)行掃描。(2)檢測當(dāng)前是否有鍵被按下。檢測的方法是P1.4~P1.7輸出全“0”,讀取P1.0~P1.3的狀態(tài),若P1.0~P1.3為全“1”,則無鍵閉合,否則有鍵閉合。(3)去除鍵抖動。當(dāng)檢測到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測判斷。(4)P1.4~P1.7按下述4種組合依次輸出:

P1.71110P1.61101P1.51011P1.40111矩陣鍵盤的接口實(shí)例在每組行輸出時(shí)讀取P1.0~P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。(1)程序功能。若有鍵被按下,應(yīng)識別出是哪一個(gè)鍵閉合。方法是30矩陣鍵盤的接口實(shí)例(5)為了保證鍵每閉合一次CPU僅做一次處理,必須去除鍵釋放時(shí)的抖動。(6)掃描程序的流程圖(7)鍵盤掃描程序矩陣鍵盤的接口實(shí)例(5)為了保證鍵每閉合一次CPU僅做一次31實(shí)踐與思考

設(shè)計(jì)一個(gè)簡易計(jì)算器,有鍵盤鎖定功能。具體要求如下:(1)鍵盤鎖定密碼為8888,用戶輸入“鎖定”“8888”后再按“鎖定”鍵解鎖。用戶連續(xù)按兩次“鎖定”鍵,可以鎖定鍵盤。(2)簡易計(jì)算器共有16個(gè)按鍵,0~9十個(gè)數(shù)字鍵,加、減、等于、乘、除共5個(gè)功能鍵,還有一鎖定鍵。(3)設(shè)定一個(gè)指示鎖定狀態(tài)的指示位,該位為“0”表示解鎖狀態(tài),為“1”表示鎖定狀態(tài)。(4)編程實(shí)現(xiàn)鍵盤功能部分。實(shí)踐與思考

設(shè)計(jì)一個(gè)簡易計(jì)算器,有鍵盤鎖定功能。具體要求如下32可編程鍵盤接口Intel8279是一種可編程鍵盤/顯示器接口芯片,它含有鍵盤輸入和顯示器輸出兩種功能。鍵盤輸入時(shí),它提供自動掃描,能與按鍵或傳感器組成的矩陣相連,接收輸入信息,它能自動消除鍵盤抖動并能對多鍵同時(shí)按下提供保護(hù)。顯示輸出時(shí),它有一個(gè)16×8位顯示RAM,其內(nèi)容通過自動掃描,可由8或16位LED數(shù)碼管顯示??删幊替I盤接口Intel8279是一種可編338279的基本功能8279的控制8279與單片機(jī)、鍵盤/顯示器的接口實(shí)踐與思考可編程鍵盤接口8279的基本功能可編程鍵盤接口348279的基本功能8279的內(nèi)部結(jié)構(gòu)和工作原理8279的引腳和功能

8279的工作方式8279的基本功能358279的內(nèi)部結(jié)構(gòu)8279的內(nèi)部結(jié)構(gòu)框圖

8279的內(nèi)部結(jié)構(gòu)8279的內(nèi)部結(jié)構(gòu)框圖368279的工作原理(1)I/O控制及數(shù)據(jù)緩沖器(2)控制與定時(shí)寄存器及定時(shí)控制(3)掃描計(jì)數(shù)器(4)回復(fù)緩沖器、鍵盤去抖及控制(5)FIFO/傳感器及其狀態(tài)寄存器(6)顯示RAM和顯示寄存器。8279的工作原理(1)I/O控制及數(shù)據(jù)緩沖器37I/O控制及數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù),對應(yīng)的引腳為數(shù)據(jù)總線D0~D7。I/O控制線是CPU對8279進(jìn)行控制的引線,對應(yīng)的引腳為數(shù)據(jù)選擇線A0;片選線;讀、寫信號線和。I/O控制及數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器是雙向38控制與定時(shí)寄存器及定時(shí)控制控制與定時(shí)寄存器用來寄存鍵盤及顯示工作方式控制字,同時(shí)還用來寄存其他操作方式控制字。這些寄存器接收并鎖存各種命令,再通過譯碼電路產(chǎn)生相應(yīng)的信號,從而完成相應(yīng)的控制功能。與其對應(yīng)的引腳為時(shí)鐘輸入端CLK,復(fù)位端RESET。定時(shí)控制電路由N個(gè)基本計(jì)數(shù)器組成,其中,第一個(gè)計(jì)數(shù)器是一個(gè)可編程的N級計(jì)數(shù)器,N=2~31之間的數(shù),由軟件編程,將外部時(shí)鐘輸入端CLK分頻得到內(nèi)部所需的100kHz時(shí)鐘,為鍵盤提供適當(dāng)?shù)膾呙桀l率和顯示掃描時(shí)間。與其相關(guān)的引腳是顯示熄滅控制端。控制與定時(shí)寄存器及定時(shí)控制控制與定時(shí)39掃描計(jì)數(shù)器鍵盤和顯示器共用,提供鍵盤和顯示器的掃描信號。掃描計(jì)數(shù)器有兩種工作方式:編碼方式和譯碼方式。按編碼方式工作時(shí),計(jì)數(shù)器作二進(jìn)制計(jì)數(shù),4位計(jì)數(shù)狀態(tài)從掃描線SL0~SL3輸出,經(jīng)外部譯碼器譯碼后,為鍵盤和顯示器提供掃描信號。按譯碼方式工作時(shí),掃描計(jì)數(shù)器的最低二位被譯碼后,從SL0~SL3輸出,提供了4中選1的掃描譯碼。與其相關(guān)的引腳是掃描線SL0~SL3。掃描計(jì)數(shù)器鍵盤和顯示器共用,提供鍵40回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線作為行列式鍵盤的列輸入線,相應(yīng)的列輸入信號稱為回復(fù)信號,由回復(fù)緩沖器緩沖并鎖存。在逐行列掃描時(shí),回復(fù)線用來搜尋每一行列中閉合的鍵,當(dāng)某一鍵閉合時(shí),去抖電路被置位,延時(shí)等待10ms后,再檢查該鍵是否仍處在閉合狀態(tài),如不是閉合,則當(dāng)做干擾信號不予理睬;如是閉合,則將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù)被送入8279內(nèi)部的FIFO(先進(jìn)先出)存儲器。鍵盤數(shù)據(jù)格式如下:控制移位掃描回復(fù)控制、移位、掃描、回復(fù)控制和移位(D7、D6)的狀態(tài)由兩個(gè)獨(dú)立的附加開關(guān)決定,而掃描(D5、D4、D3)和回復(fù)(D2、D1、D0)則是被按鍵置位的數(shù)據(jù)。D5、D4、D3來自掃描計(jì)數(shù)器,它們是根據(jù)回復(fù)信號而確定的行/列編碼。1.鍵盤工作方式D7D6D5D4D3D2D1D0回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線412.傳感器開關(guān)狀態(tài)矩陣方式回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線的內(nèi)容直接被送往相應(yīng)的傳感器RAM(即FIFO)存儲器。在選通輸入方式工作時(shí),回復(fù)線的內(nèi)容在CNTL/STB線的脈沖上升沿被送入FIFO存儲器。與其相關(guān)的引腳是回復(fù)線RL0~RL7,控制/選通線CNTL/STB。2.傳感器開關(guān)狀態(tài)矩陣方式回復(fù)緩沖器、鍵盤去抖及控制42FIFO/傳感器及其狀態(tài)寄存器FIFO/傳感器RAM是一個(gè)雙重功能的8×8RAM。在鍵盤選通工作方式時(shí),它是FIFO存儲器,其輸入/輸出遵循先入先出的原則,此時(shí),F(xiàn)IFO狀態(tài)寄存器用來存放FIFO的工作狀態(tài)。例如:RAM是滿還是空,其中存有多少數(shù)據(jù),操作是否出錯(cuò)等。當(dāng)FIFO存儲器中有數(shù)據(jù)時(shí),狀態(tài)邏輯將產(chǎn)生IRQ=1信號,向CPU申請中斷。在傳感器矩陣方式工作時(shí),這個(gè)存儲器用做傳感器存儲器,它存放著傳感器矩陣中的每一個(gè)傳感器狀態(tài)。在此方式時(shí),若檢索出傳感器的變化,IRQ信號變?yōu)楦唠娖剑駽PU申請中斷。與其相關(guān)的引腳是中斷請求線IRQ。FIFO/傳感器及其狀態(tài)寄存器FIFO/傳43顯示RAM和顯示寄存器顯示RAM用來存儲顯示數(shù)據(jù),容量為16×8位。在顯示過程中,存儲的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分位A、B兩組,OUTA0~OUTA3和OUTB0~OUTB3,它們既可單獨(dú)送數(shù),也可組成一個(gè)8位(A組為高4位,B組為低4位)的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時(shí),輪流驅(qū)動被選中的顯示器件,以達(dá)到多路復(fù)用的目的,使顯示器件呈穩(wěn)定顯示狀態(tài)。與其相關(guān)的引腳是數(shù)據(jù)顯示線OUTA0~OUTA3和OUTB0~OUTB3。顯示地址寄存器用來寄存由CPU進(jìn)行讀/寫顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀出或?qū)懭牒笞詣舆f增。顯示RAM和顯示寄存器顯示RAM用來存儲顯示448279的引腳和功能8279的引腳和功能458279的引腳和功能D0~D7:數(shù)據(jù)總線,雙向三態(tài)總線。CLK:系統(tǒng)時(shí)鐘輸入端。RESET:系統(tǒng)復(fù)位輸入端,高電平有效,復(fù)位狀態(tài)為:16個(gè)字符顯示;編碼掃描鍵盤——雙鍵鎖定;程序時(shí)鐘編程為31。:片選輸入端,低電平有效。A0:數(shù)據(jù)選擇輸入端,A0=1時(shí),CPU寫入數(shù)據(jù)為命令字,讀出狀態(tài)字為狀態(tài)字;A0=0時(shí),CPU讀、寫均為數(shù)據(jù)。、:讀、寫信號輸入端,低電平有效。IRQ:中斷請求輸出端,高電平有效。SL0~SL3:掃描輸出端,用于掃描鍵盤和顯示器??删幊淘O(shè)定為編碼(4中選1)或譯碼輸出(16選1)。

8279的引腳和功能D0~D7:數(shù)據(jù)總線,雙向三態(tài)總線。468279的引腳和功能RL0~RL7:回復(fù)線,它們是鍵盤或傳感器的列信號輸入端。SHIFT:移位信號輸入端,高電平有效。它是8279鍵盤數(shù)據(jù)的次高位(D6),通常用做鍵盤上、下?lián)豕δ苕I。在傳感器和選通方式中,SHIFT無效。CNTL/STB:控制/選通輸入端,高電平有效。在鍵盤工作方式時(shí),它是鍵盤數(shù)據(jù)的最高位,通常用做控制鍵。在選通輸入方式時(shí),它的上升沿可把來自RL0~RL7的數(shù)據(jù)存入FIFO/傳感器RAM中。在傳感器方式時(shí),無效。OUTA0~OUTA3:A組顯示信號輸出端。OUTB0~OUTB3:B組顯示信號輸出端。:顯示熄滅輸出端,低電平有效。它在數(shù)字切換顯示或使用熄滅命令時(shí)關(guān)顯示。8279的引腳和功能RL0~RL7:回復(fù)線,它們是鍵盤或傳478279的工作方式(1)鍵盤的工作方式(2)顯示器工作方式通過對鍵盤/顯示方式命令字和寫顯示RAM命令字的設(shè)置,顯示數(shù)據(jù)寫入顯示緩沖器時(shí)可置為左端送入和右端送入兩種方式。左端送入為依次填入方式,右端送入為移位方式。(3)傳感器矩陣方式通過對讀FIFO/傳感器RAM命令字的設(shè)置可將8279設(shè)置成傳感器矩陣工作方式,此時(shí),傳感器的開關(guān)狀態(tài)直接送到傳感器RAM。CPU對傳感器陣列掃描時(shí),如果檢測到某個(gè)傳感器狀態(tài)發(fā)生變化時(shí),則中斷申請信號IRQ變?yōu)楦唠娖健?/p>

8279的工作方式(1)鍵盤的工作方式48鍵盤的工作方式

通過對鍵盤/顯示方式命令字的設(shè)置,可置為雙鍵互鎖方式和N鍵巡回方式。雙鍵互鎖:雙鍵鎖定是為兩鍵同時(shí)按下提供的保護(hù)方法。若有兩鍵或多個(gè)鍵同時(shí)按下,則無論這些鍵是以什么次序按下的,它只識別最后一個(gè)釋放的鍵,并把該鍵值送入FIFO/傳感器RAM中。N鍵巡回:N鍵巡回是為N個(gè)鍵同時(shí)按下時(shí)提供的保護(hù)方法。若有多個(gè)鍵同時(shí)按下時(shí),鍵盤掃描能以按鍵先后順序依次將鍵值送入FIFO/傳感器RAM中。鍵盤的工作方式通過對鍵盤/顯示方式命令字的498279的控制8279的命令格式和命令字8279狀態(tài)格式與狀態(tài)字8279的數(shù)據(jù)輸入/輸出8279的內(nèi)部譯碼與外部譯碼8279的控制8279的命令格式和命令字508279與單片機(jī)、鍵盤/顯示器的接口8051與8279的一般接口框圖圖中8279外接8×8鍵盤,16位顯示器,由SL0~SL2譯出鍵掃描線,由4~16譯碼器對SL0~SL3譯出顯示器的位掃描線。8279與單片機(jī)、鍵盤/顯示器的接口8051與8279的一518279與單片機(jī)、鍵盤/顯示器的接口8279應(yīng)用實(shí)例(1)程序功能。對8279初始化,并使實(shí)驗(yàn)板上4只按鍵完成如下功能:K1鍵(加1鍵)按一次數(shù)碼管上數(shù)字加1。K2鍵(減1鍵)按一次數(shù)碼管上數(shù)字減1。K3鍵(左移鍵)按一次兩數(shù)碼管內(nèi)容交換。K4鍵(右移鍵)按一次兩數(shù)碼管內(nèi)容交換。8279與單片機(jī)、鍵盤/顯示器的接口8279應(yīng)用實(shí)例(1528279應(yīng)用實(shí)例(2)8279外接4個(gè)按鍵作為輸入設(shè)備,外接2位數(shù)碼管作為輸出設(shè)備,LED數(shù)碼管采用雙位共陰數(shù)碼管。8279RL0作為按鍵輸入線,SL0~SL2外接LS138譯碼器,對鍵盤和顯示器掃描,8279OUTA~OUTB作為顯示器的段數(shù)據(jù)輸出口。(3)8279的IRQ通過74LS04反相后作為8051外部中斷輸入。(4)如圖中可以看出8051P2.4作為8279選片端,8051P2.0作為8279A0選擇線,根據(jù)線選法原理8279命令/狀態(tài)口地址:DFFFH,數(shù)據(jù)口地址:DEFFH。(5)程序參考流程圖(6)程序清單8279應(yīng)用實(shí)例(2)8279外接4個(gè)按鍵作為輸入設(shè)備,外53程序參考流程圖程序參考流程圖54實(shí)踐與思考

設(shè)計(jì)一個(gè)電子號碼鎖,具體要求如下:1.鍵盤由8279來控制,開機(jī)時(shí),顯示器顯示“00000000”。2.按0~9為數(shù)字鍵,采用右邊進(jìn)入顯示在8個(gè)七段顯示器中。3.其他鍵為功能鍵,設(shè)置如下:(1)*為開鎖鍵,輸入8個(gè)密碼后按“*”,與存放在TAB“123456789”的內(nèi)定密碼進(jìn)行比較,若密碼正確則使電鎖動作,否則清除顯示器為“00000000”。(2)#為清除鍵,清除顯示器為“00000000”。4.試編寫按鍵部分的程序。實(shí)踐與思考

設(shè)計(jì)一個(gè)電子號碼鎖,具體要求如下:55第2章鍵盤接口技術(shù)

按鍵

簡單鍵盤接口矩陣式鍵盤接口可編程鍵盤接口第2章鍵盤接口技術(shù)

按鍵56按鍵的分類按鍵輸入原理按鍵開關(guān)的抖動問題鍵盤由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開關(guān)元件,也就是說鍵盤是一組規(guī)則排列的開關(guān)。單片機(jī)使用的按鍵是一種常開型的開關(guān),平時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開狀態(tài),按下鍵時(shí)它們才閉合。按鍵按鍵的分類鍵盤由一組規(guī)則排列的按鍵組成,一個(gè)按鍵57按鍵的分類按鍵按照結(jié)構(gòu)原理可分為兩類:1.觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;2.無觸點(diǎn)開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。.按鍵按照接口原理可分為:1.編碼鍵盤2.非編碼鍵盤兩類,編碼鍵盤主要是用硬件來實(shí)現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的定義與識別。前者造價(jià)低,后者壽命長。目前,單片機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵。按鍵的分類按鍵按照結(jié)構(gòu)原理可分為兩類:按鍵按照接口原理可分58按鍵輸入原理在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路及專一的復(fù)位功能外,其他按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),單片機(jī)系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。對于一個(gè)鍵盤或一組按鍵,單片機(jī)系統(tǒng)中總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無按鍵輸入并檢查是哪一個(gè)鍵按下,將該鍵號送入累加器ACC,然后通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。按鍵輸入原理在單片機(jī)應(yīng)用系統(tǒng)中,除59按鍵開關(guān)的抖動問題單片機(jī)系統(tǒng)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的按鍵。當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),會有抖動,如下圖所示。在觸點(diǎn)抖動期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。常用的去抖動的方法有兩種:1.硬件方法2.軟件方法按鍵開關(guān)的抖動問題單片機(jī)系統(tǒng)中應(yīng)60硬件方法在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動電路,如圖所示。電路工作過程

硬件方法在硬件上可采用在鍵輸出端加R61電路工作過程按鍵未按下時(shí),a=0,b=1,輸出Q=1,按鍵按下時(shí),因按鍵的機(jī)械彈性作用的影響,使按鍵產(chǎn)生抖動,當(dāng)開關(guān)沒有穩(wěn)定到達(dá)b端時(shí),因與非門2輸出為0反饋到與非門1的輸入端,封鎖了與非門1,雙穩(wěn)態(tài)電路的狀態(tài)不會改變,輸出保持為1,輸出Q不會產(chǎn)生抖動的波形。當(dāng)開關(guān)穩(wěn)定到達(dá)b端時(shí),因a=1,b=0,使Q=0,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn)。當(dāng)釋放按鍵時(shí),在開關(guān)未穩(wěn)定到達(dá)a端時(shí),因Q=0,封鎖了與非門2,雙穩(wěn)態(tài)電路的狀態(tài)不變,輸出Q保持不變,消除了后沿的抖動波形。當(dāng)開關(guān)穩(wěn)定到達(dá)a端時(shí),因a=0,b=1,使Q=1,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn),輸出Q重新返回原狀態(tài)。由此可見,鍵盤輸出經(jīng)雙穩(wěn)態(tài)電路之后,輸出已變?yōu)橐?guī)范的矩形方波。電路工作過程按鍵未按下時(shí),a=62軟件方法軟件方法其實(shí)很簡單,就是在單片機(jī)獲得P1.0口為低電平的信息后,不是立即認(rèn)定S已被按下,而是延時(shí)10ms或更長一些時(shí)間后再次檢測P1.0口,如果仍為低電平,說明S的確按下了,這實(shí)際上是避開了按鍵按下時(shí)的抖動時(shí)間。而在檢測到按鍵釋放后(P1.0為高電平)再延時(shí)5~10ms,消除后沿的抖動,然后再對鍵值處理。不過一般情況下,通常不對按鍵釋放的后沿進(jìn)行處理,實(shí)踐證明,也能滿足一定的要求。當(dāng)然,在實(shí)際應(yīng)用中,對按鍵的要求也是千差萬別的,要根據(jù)不同的需要來編制處理程序,但以上是消除按鍵抖動的原則。軟件方法軟件方法其實(shí)很簡單,就是在63簡單鍵盤接口簡單鍵盤的工作原理簡單鍵盤的接口電路與編程

實(shí)踐與思考簡單鍵盤接口64簡單鍵盤的工作原理如果系統(tǒng)只需幾個(gè)按鍵,可直接采用I/O線構(gòu)成單個(gè)按鍵電路,各個(gè)按鍵之間相互獨(dú)立,一根線上的按鍵狀態(tài)不會影響其他輸入線上的工作狀態(tài),又稱獨(dú)立式鍵盤接口電路。這種電路每個(gè)按鍵需要占用一根I/O線,在按鍵數(shù)量較多時(shí),輸入口浪費(fèi)大且電路結(jié)構(gòu)很煩瑣,因此這種鍵盤接口電路只適用于按鍵較少或要求較高操作速度的場合。簡單鍵盤的工作原理如果系統(tǒng)只需幾個(gè)按鍵,可直65簡單鍵盤的接口電路與編程(1)程序?qū)崿F(xiàn)的功能(2)程序采用的方法(3)程序中用到的變量和常量的定義(4)程序中調(diào)用的子程序(5)程序清單(6)程序分析與思考下面以圖(a)為例進(jìn)行編程。簡單鍵盤的接口電路與編程(1)程序?qū)崿F(xiàn)的功能下面以圖(66程序?qū)崿F(xiàn)的功能檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉(zhuǎn)入相應(yīng)的按鍵處理。程序?qū)崿F(xiàn)的功能檢測是否有鍵閉合,如有鍵67程序采用的方法P3.2:開始,按此鍵則燈開始流動(由上而下)P3.3:停止,按此鍵則停止流動,所有燈為暗P3.4:上,按此鍵則燈由上向下流動P3.5:下,按此鍵則燈由下向上流動程序采用查詢的方法,P1口接8個(gè)發(fā)光二極管,4個(gè)按鍵分別接到P3.2、P3.3、P3.4和P3.5,且定義如下。程序采用的方法P3.2:開始,按此鍵則燈開始流動(由上而下68程序中用到的變量和常量的定義UpDown ;上下行標(biāo)志StartEnd ;啟動及停止標(biāo)志LAMPCODE;存放流動的數(shù)據(jù)代碼程序中用到的變量和常量的定義UpDown 69程序中調(diào)用的子程序KEY;鍵盤程序KEYPROC;鍵盤處理程序LAMP;燈顯示程序DELAY;延時(shí)程序,鍵盤處理中調(diào)用程序中調(diào)用的子程序KEY70程序分析與思考

這里介紹的鍵盤處理程序比較簡單,實(shí)際上,鍵盤的處理是很復(fù)雜的,但這種復(fù)雜并不來自于單片機(jī)的本身,而是來自于操作者的習(xí)慣等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜?,最后再去寫代碼,這樣,才能快速有效地寫好代碼。程序分析與思考71實(shí)踐與思考

1.設(shè)計(jì)一個(gè)簡單3個(gè)按鍵的鍵盤來控制一組發(fā)光二極管,使這組發(fā)光二極管可以以6種不同的花色循環(huán)點(diǎn)亮。2.改用單鍵實(shí)現(xiàn)題1所示功能。實(shí)踐與思考

1.設(shè)計(jì)一個(gè)簡單3個(gè)按鍵的鍵盤來控制一組發(fā)光72矩陣式鍵盤接口矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式鍵盤按鍵的識別鍵盤的編碼鍵盤的工作方式矩陣鍵盤的接口實(shí)例實(shí)踐與思考矩陣式鍵盤接口矩陣式鍵盤的結(jié)構(gòu)與工作原理73矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這一點(diǎn)是識別矩陣按鍵是否被按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號配合起來作適當(dāng)處理,才能確定閉合鍵的位置。矩陣式鍵盤的結(jié)構(gòu)與工作原理矩陣式74矩陣式鍵盤按鍵的識別1.掃描法2.線反轉(zhuǎn)法矩陣式鍵盤按鍵的識別75掃描法按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無鍵按下時(shí)處在高電平,顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會引起行線電平的變化,因此,必須使所有列線處在低電平,只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會由高電平變?yōu)榈碗娖?。CPU根據(jù)行平電的變化,便能判定相應(yīng)的行有鍵按下。8號鍵按下時(shí),第2行一定為低電平,然而,第2行為低電平時(shí),能否肯定是8號鍵按下呢?回答是否定的,因?yàn)?、10、11號鍵按下同樣使第2行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線處于低電平,其余列線均處于高電平,另一時(shí)刻,讓下一列處在低電平,依次循環(huán),這種依次輪流每次選通一列的工作方式稱為鍵盤掃描。掃描法按鍵按下時(shí),與此鍵相連的行線76線反轉(zhuǎn)法第1步:將列線P1.4~P1.7作為輸入線,行線P1.3~P1.0作為輸出線,并將輸出線輸出全為低電平,讀列線狀態(tài),則列線中電平為低的是按鍵所在的列。第2步:將行線作為輸入線,列線作為輸出線,并將輸出線輸出為低電平,讀行線狀態(tài),則行線中電平為低的是按鍵所在的行。綜合第1、2兩步結(jié)果,可確定按鍵所在的行和列,從而識別出所按下的鍵。線反轉(zhuǎn)法第1步:將列線P1.4~P1.7作為輸入線,行線77鍵盤的編碼1.獨(dú)立式鍵盤按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。2.矩陣式鍵盤按鍵的位置由行號和列號唯一確定,因此可分別對行號和列號進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號,低4位是列號。問題:不同行的鍵離散性較大,不利于散轉(zhuǎn)指令對按鍵進(jìn)行處理。采用依次排列鍵號的方式對安排進(jìn)行編碼。無論以何種方式編碼,均應(yīng)以處理問題方便為原則,而最基本的就是鍵所處的物理位置即行號和列號,它是各種編碼之間相互轉(zhuǎn)換的基礎(chǔ),編碼相互轉(zhuǎn)換可通過計(jì)算或查表的方法實(shí)現(xiàn)。總結(jié):鍵盤的編碼1.獨(dú)立式鍵盤按鍵數(shù)量少,可根據(jù)實(shí)際需78鍵盤的工作方式編程掃描方式定時(shí)掃描方式中斷掃描方式鍵盤的工作方式79編程掃描方式

編程掃描方式是利用CPU完成其他工作的空余調(diào)用鍵盤掃描子程序來響應(yīng)鍵盤輸入的要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求,直到CPU重新掃描鍵盤為止。

鍵盤掃描程序一般應(yīng)包括以下內(nèi)容:

(1)判別有無鍵按下。(2)鍵盤掃描取得閉合鍵的行、列值。(3)用計(jì)算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒釋放則繼續(xù)等待。(5)將閉合鍵鍵號保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。

編程掃描方式編程掃描方80定時(shí)掃描方式定時(shí)掃描方式就是每隔一段時(shí)間對鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間(例如10ms)的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷,CPU響應(yīng)中斷后對鍵盤進(jìn)行掃描,并在有鍵按下時(shí)識別出該鍵,再執(zhí)行該鍵的功能程序。定時(shí)掃描方式定時(shí)掃描方式就是每隔一段81定時(shí)掃描方式程序流程圖定時(shí)掃描方式程序流程圖82中斷掃描方式當(dāng)無鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請求,CPU轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識別鍵號。中斷掃描方式可以提高CPU工作效率。圖中的4輸入與門用于產(chǎn)生按鍵中斷,其輸入端與各列線相連,再通過上拉電阻接至+5V電源,輸出端接至8051的外部中斷輸入端。具體工作如下:當(dāng)鍵盤無鍵按下時(shí),與門各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),端為低電平,向CPU申請中斷,若CPU開放外部中斷,則會響應(yīng)中斷請求,轉(zhuǎn)去執(zhí)行鍵盤掃描子程序。中斷掃描方式當(dāng)無鍵按下時(shí),CPU處理83矩陣鍵盤的接口實(shí)例8051單片機(jī)的P1口作為鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0~P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0~P1.3設(shè)置為輸入線,行線P1.4~P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。矩陣鍵盤的接口實(shí)例8051單片機(jī)的P1口作為84(1)程序功能。若有鍵被按下,應(yīng)識別出是哪一個(gè)鍵閉合。方法是對鍵盤的行線進(jìn)行掃描。(2)檢測當(dāng)前是否有鍵被按下。檢測的方法是P1.4~P1.7輸出全“0”,讀取P1.0~P1.3的狀態(tài),若P1.0~P1.3為全“1”,則無鍵閉合,否則有鍵閉合。(3)去除鍵抖動。當(dāng)檢測到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測判斷。(4)P1.4~P1.7按下述4種組合依次輸出:

P1.71110P1.61101P1.51011P1.40111矩陣鍵盤的接口實(shí)例在每組行輸出時(shí)讀取P1.0~P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。(1)程序功能。若有鍵被按下,應(yīng)識別出是哪一個(gè)鍵閉合。方法是85矩陣鍵盤的接口實(shí)例(5)為了保證鍵每閉合一次CPU僅做一次處理,必須去除鍵釋放時(shí)的抖動。(6)掃描程序的流程圖(7)鍵盤掃描程序矩陣鍵盤的接口實(shí)例(5)為了保證鍵每閉合一次CPU僅做一次86實(shí)踐與思考

設(shè)計(jì)一個(gè)簡易計(jì)算器,有鍵盤鎖定功能。具體要求如下:(1)鍵盤鎖定密碼為8888,用戶輸入“鎖定”“8888”后再按“鎖定”鍵解鎖。用戶連續(xù)按兩次“鎖定”鍵,可以鎖定鍵盤。(2)簡易計(jì)算器共有16個(gè)按鍵,0~9十個(gè)數(shù)字鍵,加、減、等于、乘、除共5個(gè)功能鍵,還有一鎖定鍵。(3)設(shè)定一個(gè)指示鎖定狀態(tài)的指示位,該位為“0”表示解鎖狀態(tài),為“1”表示鎖定狀態(tài)。(4)編程實(shí)現(xiàn)鍵盤功能部分。實(shí)踐與思考

設(shè)計(jì)一個(gè)簡易計(jì)算器,有鍵盤鎖定功能。具體要求如下87可編程鍵盤接口Intel8279是一種可編程鍵盤/顯示器接口芯片,它含有鍵盤輸入和顯示器輸出兩種功能。鍵盤輸入時(shí),它提供自動掃描,能與按鍵或傳感器組成的矩陣相連,接收輸入信息,它能自動消除鍵盤抖動并能對多鍵同時(shí)按下提供保護(hù)。顯示輸出時(shí),它有一個(gè)16×8位顯示RAM,其內(nèi)容通過自動掃描,可由8或16位LED數(shù)碼管顯示。可編程鍵盤接口Intel8279是一種可編888279的基本功能8279的控制8279與單片機(jī)、鍵盤/顯示器的接口實(shí)踐與思考可編程鍵盤接口8279的基本功能可編程鍵盤接口898279的基本功能8279的內(nèi)部結(jié)構(gòu)和工作原理8279的引腳和功能

8279的工作方式8279的基本功能908279的內(nèi)部結(jié)構(gòu)8279的內(nèi)部結(jié)構(gòu)框圖

8279的內(nèi)部結(jié)構(gòu)8279的內(nèi)部結(jié)構(gòu)框圖918279的工作原理(1)I/O控制及數(shù)據(jù)緩沖器(2)控制與定時(shí)寄存器及定時(shí)控制(3)掃描計(jì)數(shù)器(4)回復(fù)緩沖器、鍵盤去抖及控制(5)FIFO/傳感器及其狀態(tài)寄存器(6)顯示RAM和顯示寄存器。8279的工作原理(1)I/O控制及數(shù)據(jù)緩沖器92I/O控制及數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù),對應(yīng)的引腳為數(shù)據(jù)總線D0~D7。I/O控制線是CPU對8279進(jìn)行控制的引線,對應(yīng)的引腳為數(shù)據(jù)選擇線A0;片選線;讀、寫信號線和。I/O控制及數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器是雙向93控制與定時(shí)寄存器及定時(shí)控制控制與定時(shí)寄存器用來寄存鍵盤及顯示工作方式控制字,同時(shí)還用來寄存其他操作方式控制字。這些寄存器接收并鎖存各種命令,再通過譯碼電路產(chǎn)生相應(yīng)的信號,從而完成相應(yīng)的控制功能。與其對應(yīng)的引腳為時(shí)鐘輸入端CLK,復(fù)位端RESET。定時(shí)控制電路由N個(gè)基本計(jì)數(shù)器組成,其中,第一個(gè)計(jì)數(shù)器是一個(gè)可編程的N級計(jì)數(shù)器,N=2~31之間的數(shù),由軟件編程,將外部時(shí)鐘輸入端CLK分頻得到內(nèi)部所需的100kHz時(shí)鐘,為鍵盤提供適當(dāng)?shù)膾呙桀l率和顯示掃描時(shí)間。與其相關(guān)的引腳是顯示熄滅控制端??刂婆c定時(shí)寄存器及定時(shí)控制控制與定時(shí)94掃描計(jì)數(shù)器鍵盤和顯示器共用,提供鍵盤和顯示器的掃描信號。掃描計(jì)數(shù)器有兩種工作方式:編碼方式和譯碼方式。按編碼方式工作時(shí),計(jì)數(shù)器作二進(jìn)制計(jì)數(shù),4位計(jì)數(shù)狀態(tài)從掃描線SL0~SL3輸出,經(jīng)外部譯碼器譯碼后,為鍵盤和顯示器提供掃描信號。按譯碼方式工作時(shí),掃描計(jì)數(shù)器的最低二位被譯碼后,從SL0~SL3輸出,提供了4中選1的掃描譯碼。與其相關(guān)的引腳是掃描線SL0~SL3。掃描計(jì)數(shù)器鍵盤和顯示器共用,提供鍵95回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線作為行列式鍵盤的列輸入線,相應(yīng)的列輸入信號稱為回復(fù)信號,由回復(fù)緩沖器緩沖并鎖存。在逐行列掃描時(shí),回復(fù)線用來搜尋每一行列中閉合的鍵,當(dāng)某一鍵閉合時(shí),去抖電路被置位,延時(shí)等待10ms后,再檢查該鍵是否仍處在閉合狀態(tài),如不是閉合,則當(dāng)做干擾信號不予理睬;如是閉合,則將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù)被送入8279內(nèi)部的FIFO(先進(jìn)先出)存儲器。鍵盤數(shù)據(jù)格式如下:控制移位掃描回復(fù)控制、移位、掃描、回復(fù)控制和移位(D7、D6)的狀態(tài)由兩個(gè)獨(dú)立的附加開關(guān)決定,而掃描(D5、D4、D3)和回復(fù)(D2、D1、D0)則是被按鍵置位的數(shù)據(jù)。D5、D4、D3來自掃描計(jì)數(shù)器,它們是根據(jù)回復(fù)信號而確定的行/列編碼。1.鍵盤工作方式D7D6D5D4D3D2D1D0回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線962.傳感器開關(guān)狀態(tài)矩陣方式回復(fù)緩沖器、鍵盤去抖及控制回復(fù)線的內(nèi)容直接被送往相應(yīng)的傳感器RAM(即FIFO)存儲器。在選通輸入方式工作時(shí),回復(fù)線的內(nèi)容在CNTL/STB線的脈沖上升沿被送入FIFO存儲器。與其相關(guān)的引腳是回復(fù)線RL0~RL7,控制/選通線CNTL/STB。2.傳感器開關(guān)狀態(tài)矩陣方式回復(fù)緩沖器、鍵盤去抖及控制97FIFO/傳感器及其狀態(tài)寄存器FIFO/傳感器RAM是一個(gè)雙重功能的8×8RAM。在鍵盤選通工作方式時(shí),它是FIFO存儲器,其輸入/輸出遵循先入先出的原則,此時(shí),F(xiàn)IFO狀態(tài)寄存器用來存放FIFO的工作狀態(tài)。例如:RAM是滿還是空,其中存有多少數(shù)據(jù),操作是否出錯(cuò)等。當(dāng)FIFO存儲器中有數(shù)據(jù)時(shí),狀態(tài)邏輯將產(chǎn)生IRQ=1信號,向CPU申請中斷。在傳感器矩陣方式工作時(shí),這個(gè)存儲器用做傳感器存儲器,它存放著傳感器矩陣中的每一個(gè)傳感器狀態(tài)。在此方式時(shí),若檢索出傳感器的變化,IRQ信號變?yōu)楦唠娖?,向CPU申請中斷。與其相關(guān)的引腳是中斷請求線IRQ。FIFO/傳感器及其狀態(tài)寄存器FIFO/傳98顯示RAM和顯示寄存器顯示RAM用來存儲顯示數(shù)據(jù),容量為16×8位。在顯示過程中,存儲的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分位A、B兩組,OUTA0~OUTA3和OUTB0~OUTB3,它們既可單獨(dú)送數(shù),也可組成一個(gè)8位(A組為高4位,B組為低4位)的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時(shí),輪流驅(qū)動被選中的顯示器件,以達(dá)到多路復(fù)用的目的,使顯示器件呈穩(wěn)定顯示狀態(tài)。與其相關(guān)的引腳是數(shù)據(jù)顯示線OUTA0~OUTA3和OUTB0~OUTB3。顯示地址寄存器用來寄存由CPU進(jìn)行讀/寫顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀出或?qū)懭牒笞詣舆f增。顯示RAM和顯示寄存器顯示RAM用來存儲顯示998279的引腳和功能8279的引腳和功能1008279的引腳和功能D0~D7:數(shù)據(jù)總線,雙向三態(tài)總線。CLK:系統(tǒng)時(shí)鐘輸入端。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論