51單片機(jī)矩陣鍵盤(pán)_第1頁(yè)
51單片機(jī)矩陣鍵盤(pán)_第2頁(yè)
51單片機(jī)矩陣鍵盤(pán)_第3頁(yè)
51單片機(jī)矩陣鍵盤(pán)_第4頁(yè)
51單片機(jī)矩陣鍵盤(pán)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、51單片機(jī)矩陣鍵盤(pán)51單片機(jī)矩陣鍵盤(pán)非編碼鍵盤(pán)有分為:獨(dú)立鍵盤(pán)和行列式(又稱(chēng)為矩陣式)鍵盤(pán)。非編碼鍵盤(pán)有分為:獨(dú)立鍵盤(pán)和行列式(又稱(chēng)為矩陣式)鍵盤(pán)。51單片機(jī)矩陣鍵盤(pán)按鍵在閉合和斷開(kāi)時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象: 按鍵在閉合和斷開(kāi)時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象: 51單片機(jī)矩陣鍵盤(pán)51單片機(jī)矩陣鍵盤(pán)數(shù)碼管前三位顯示一個(gè)跑表,從000到999之間以1%秒速度運(yùn)行,當(dāng)按下一個(gè)獨(dú)立鍵盤(pán)時(shí)跑表停止,松開(kāi)手后跑表繼續(xù)運(yùn)行。(用定時(shí)器設(shè)計(jì)表)。在上題的基礎(chǔ)上,用另外三個(gè)獨(dú)立鍵盤(pán)實(shí)現(xiàn)按下第一個(gè)時(shí)計(jì)時(shí)停止,按下第二個(gè)時(shí)計(jì)時(shí)開(kāi)始,按下第三個(gè)是計(jì)數(shù)值清零從頭開(kāi)始。按下16個(gè)矩陣鍵盤(pán)依次在數(shù)碼管上顯示1-16的平方。如按下第一個(gè)

2、顯示1,第二個(gè)顯示4.數(shù)碼管前三位顯示一個(gè)跑表,從000到999之間以1%秒速度運(yùn)識(shí)別方法行掃描法 行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一種最常用的按鍵識(shí)別方法,如上圖所示鍵盤(pán),介紹過(guò)程如下。1、判斷鍵盤(pán)中有無(wú)鍵按下 將全部行線(xiàn)Y0-Y3置低電平,然后檢測(cè)列線(xiàn)的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線(xiàn)與4根行線(xiàn)相交叉的4個(gè)按鍵之中。若所有列線(xiàn)均為高電平,則鍵盤(pán)中無(wú)鍵按下。2、判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線(xiàn)置為低電平,即在置某根行線(xiàn)為低電平時(shí),其它線(xiàn)為高電平。在確定某根行線(xiàn)位置為低電平后,再逐行檢

3、測(cè)各列線(xiàn)的電平狀態(tài)。若某列為低,則該列線(xiàn)與置為低電平的行線(xiàn)交叉處的按鍵就是閉合的按鍵。識(shí)別方法行掃描法 行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一下面給出一個(gè)具體的例子:圖仍如上所示。8031單片機(jī)的P1口用作鍵盤(pán)I/O口,鍵盤(pán)的列線(xiàn)接到P1口的低4位,鍵盤(pán)的行線(xiàn)接到P1口的高4位。列線(xiàn)P1.0-P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線(xiàn)P1.0-P1.3設(shè)置為輸入線(xiàn),行線(xiàn)P1.4-P.17設(shè)置為輸出線(xiàn)。4根行線(xiàn)和4根列線(xiàn)形成16個(gè)相交點(diǎn)。1、檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,

4、否則有鍵閉合。2、去除鍵抖動(dòng)。當(dāng)檢測(cè)到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測(cè)判斷。下面給出一個(gè)具體的例子:3、若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤(pán)的行線(xiàn)進(jìn)行掃描。P1.4-P1.7按下述4種組合依次輸出:P1.7 1 1 1 0P1.6 1 1 0 1P1.5 1 0 1 1P1.4 0 1 1 1在每組行輸出時(shí)讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒(méi)有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值4、為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時(shí)的抖動(dòng)。3、若有鍵被按下,應(yīng)識(shí)別出是

5、哪一個(gè)鍵閉合。方法是對(duì)鍵盤(pán)的行線(xiàn)鍵盤(pán)掃描程序:從以上分析得到鍵盤(pán)掃描程序的流程圖所示。程序如下SCAN: MOV P1,#0FHMOV A,P1ANL A,#0FHCJNE A,#0FH,NEXT1SJMP NEXT3NEXT1: ACALL D20MSMOV A,#0EFHNEXT2: MOV R1,AMOV P1,AMOV A,P1ANL A,#0FHCJNE A,#0FH,KCODE;MOV A,R1鍵盤(pán)掃描程序:SETB CRLC AJC NEXT2NEXT3: MOV R0,#00HRETKCODE: MOV B,#0FBHNEXT4: RRC AINC BJC NEXT4MOV A

6、,R1SWAP ANEXT5: RRC AINC BINC BINC BINC B。SETB CJC NEXT5NEXT6: MOV A,P1ANL A,#0FHCJNE A,#0FH,NEXT6MOV R0,#0FFHRET確定矩陣式鍵盤(pán)上何鍵被按下介紹一種“高低電平翻轉(zhuǎn)法”。首先讓P1口高四位為1,低四位為0,。若有按鍵按下,則高四位中會(huì)有一個(gè)1翻轉(zhuǎn)為0,低四位不會(huì)變,此時(shí)即可確定被按下的鍵的行位置。然后讓P1口高四位為0,低四位為1,。若有按鍵按下,則低四位中會(huì)有一個(gè)1翻轉(zhuǎn)為0,高四位不會(huì)變,此時(shí)即可確定被按下的鍵的列位置。最后將上述兩者進(jìn)行或運(yùn)算即可確定被按下的鍵的位置。JC NEXT5鍵盤(pán)處理程序就作這么一個(gè)簡(jiǎn)單的介紹,實(shí)際上,鍵盤(pán)、顯示處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見(jiàn)其重要性,但說(shuō)到,這種復(fù)雜并不來(lái)自于單片機(jī)的本身,而是來(lái)自于操作者的習(xí)慣等等問(wèn)題,因

溫馨提示

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

評(píng)論

0/150

提交評(píng)論