矩陣鍵盤介紹與使用程序_第1頁
矩陣鍵盤介紹與使用程序_第2頁
矩陣鍵盤介紹與使用程序_第3頁
矩陣鍵盤介紹與使用程序_第4頁
矩陣鍵盤介紹與使用程序_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)外接鍵盤電路一、原理簡(jiǎn)介鍵盤接口電路是單片機(jī)系統(tǒng)設(shè)計(jì)格外重要的一環(huán)備。我們可以通過鍵盤輸入數(shù)據(jù)或命令來實(shí)現(xiàn)簡(jiǎn)潔的人機(jī)通信。在設(shè)計(jì)鍵盤電路與程序前,我們需要了解鍵盤和組成鍵盤的按鍵的一些學(xué)問。按鍵的分類一般來說,按鍵依據(jù)構(gòu)造原理可分為兩類,一類是觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)后者壽命長(zhǎng)。目前,微機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵〔如本學(xué)習(xí)板上所承受按鍵〕。按鍵依據(jù)接口原理又可分為編碼鍵盤與非編碼鍵盤兩類由軟件來實(shí)現(xiàn)鍵盤的識(shí)別。等保護(hù)電路,這種鍵盤使用便利,硬件開銷大,一般的小型嵌入式應(yīng)用系統(tǒng)較少承受,較多地應(yīng)用于單片機(jī)系統(tǒng)中〔本學(xué)習(xí)板也承受非編碼鍵盤〕。按鍵的輸入原理換成為電氣上的規(guī)律關(guān)系。也就是說,它能供給標(biāo)準(zhǔn)的TTL規(guī)律電平,以便與通用數(shù)字系用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能。因此,鍵信息輸入是與軟件構(gòu)造親熱相關(guān)的過程。對(duì)無鍵按下則連續(xù)執(zhí)行其他程序。按鍵的特點(diǎn)與去抖械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來。其抖動(dòng)過程如圖1〔a〕所示,抖動(dòng)時(shí)間的長(zhǎng)短與開關(guān)的機(jī)械特性有關(guān),一般為5~10ms軟件兩方面予以考慮。一般來說,在鍵數(shù)較少時(shí),可承受硬件去抖,而當(dāng)鍵數(shù)較多時(shí),承受軟件去抖?!脖緦W(xué)習(xí)板承受軟件去抖方式〕。軟件去抖的流程圖如圖1〔b〕所示。1〔可調(diào)用5ms~10ms的延遲子程序〕,然后再次推斷按鍵是否被按下,假設(shè)此時(shí)推斷按鍵仍被按可以推斷按鍵是否釋放。二、電路詳解2所示。22中可知獨(dú)立式按鍵承受每個(gè)按鍵單獨(dú)占用一根I/OI/O端口的電平是不一樣的,因此可以依據(jù)不同端口電平的變化推斷是否有按鍵按下以及是哪一個(gè)按鍵按下。從圖2〔a〕中可以看出,按鍵和單片機(jī)引腳連接并加了上拉電阻,這樣當(dāng)沒有按鍵按下的時(shí)候,I/O輸入的電平是高電平,當(dāng)有按鍵按下的時(shí)候,I/O輸入的電平是低電平。雖然獨(dú)立式按鍵電路配置敏捷,軟件構(gòu)造簡(jiǎn)潔,但每個(gè)按鍵必需占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線鋪張較大。對(duì)于比較簡(jiǎn)單的系統(tǒng)或按鍵比較多的場(chǎng)合,可2〔b〕中所示的為4×4的矩陣式鍵盤,其他矩陣式鍵盤的設(shè)計(jì)方法類似。4×444根列線穿插構(gòu)成,按鍵位于行列的穿插點(diǎn)上,這16的行線和列線導(dǎo)通2〔b〕VCC上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線在交點(diǎn)導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平打算。這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的每條行線與4條列線相交必需將行線、列線信號(hào)協(xié)作起來作適當(dāng)處理,才能確定閉合鍵的位置。值得留意的是本文介紹的矩陣鍵盤74HC2174HC21的輸出端接0〔P32管腳P00~P03為盤響應(yīng)時(shí)間,在系統(tǒng)實(shí)時(shí)性要求較高的狀況下格外有用。本文的全部源程序見“://ele169/“ele169。三、程序設(shè)計(jì)本文設(shè)計(jì)實(shí)例關(guān)鍵程序如下。獨(dú)立按鍵程序……#definekeyioP0〔1〕#definekey1P0_3〔2〕……keyio|=0X0F;〔3〕if〔key1==0〕〔4〕{delay_nms〔20〕;〔5〕if〔key1==0〕〔6〕{while〔key1==0〕;〔7〕return1;〔8〕}}程序說明:定義按鍵管腳。定義按鍵連接收腳。將按鍵連接收腳輸出高電平,從而接收輸入。假設(shè)此時(shí)管腳所連接按鍵被按下。延時(shí)一段時(shí)間,去抖作業(yè)。假設(shè)此時(shí)按鍵仍舊被按下,此時(shí)按鍵有效。等待按鍵抬起,死循環(huán),假設(shè)按鍵始終按下則始終等待。返回鍵值。矩陣鍵盤程序……#defineKEYIOP0〔1〕……codeksp[4]={0x7F,0xBF,0xDF,0xEF};〔2〕unsignedcharkeypad_scan〔〕〔3〕{charkey,i;〔4〕KEYIO=0xF0;〔5〕if〔KEYIO!=0xF0〕〔6〕{for〔i=0;i<=3;i++〕〔7〕{delaykey〔10〕;〔8〕KEYIO=ksp[i];〔9〕delaykey〔10〕;〔10〕if〔KEYIO!=ksp[i]〕//ox〔11〕{delaykey〔10〕;〔12〕key=KEYIO;〔13〕while〔KEYIO==key〕;〔14〕return〔key〕;〔15〕}}}}程序說明:定義矩陣鍵盤管腳。將掃描時(shí)用到的管腳四種輸出電平狀態(tài)定義成一個(gè)數(shù)組。//確定第幾列數(shù)按鍵掃描程序。key,i。讓鍵盤管腳的高四位輸出高電平,低四位為低電平,為掃描按鍵預(yù)備。假設(shè)此時(shí)管腳狀態(tài)電平發(fā)生變化。將之前定義的數(shù)組中的值賜予管腳,開頭逐次掃描。延時(shí)一段時(shí)間,去抖。輸出掃描按鍵的電平。再延時(shí)一段時(shí)間。假設(shè)此時(shí)按鍵管腳電平照舊不是輸出的默認(rèn)電平,表示有鍵按下。延時(shí)一段時(shí)間,讓電平穩(wěn)定。讀取當(dāng)前按鍵管腳電平,即鍵值。等待按鍵抬起,死循環(huán),假設(shè)按鍵始終按下則始終等待。返回鍵值。四、調(diào)試要點(diǎn)與試驗(yàn)現(xiàn)象接好硬件,通過冷啟動(dòng)方式將程序所生成的。hex文件下載到單片機(jī)運(yùn)行后,翻開串口調(diào)試助手軟件,設(shè)置好波特率9600,復(fù)位單片機(jī),然后按下板上的4×4按鍵中的任意一〔見圖3〕,可以觀看到在接收窗口有按鍵的數(shù)據(jù)顯示。3按鍵通過串口調(diào)試助手顯示界面不僅直觀便利而且不增加其他本錢。五、總結(jié)善的鍵盤掌握程序應(yīng)具備以下功能:檢測(cè)有無按鍵按下,并實(shí)行硬件或軟件措施,消退鍵盤按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。有牢靠的規(guī)律處理方法

溫馨提示

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

評(píng)論

0/150

提交評(píng)論