實驗八鍵盤掃描實驗_第1頁
實驗八鍵盤掃描實驗_第2頁
實驗八鍵盤掃描實驗_第3頁
實驗八鍵盤掃描實驗_第4頁
實驗八鍵盤掃描實驗_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗八 鍵盤掃描實驗一、實驗目的 1. 掌握中斷鍵盤掃描編程方法。2. 掌握led動態(tài)顯示方法。二、實驗原理及實驗內(nèi)容1. 實驗原理無論是單片機控制系統(tǒng)還是單片機測量系統(tǒng),都需要一個人機對話裝置,這種人機對話裝置通常采用鍵盤和顯示器。鍵盤是單片機應用系統(tǒng)中人機對話常用的輸入裝置,而顯示器是單片機應用系統(tǒng)人機對話中的常用輸出裝置。鍵盤是由若干個按鍵開關組成,鍵的多少根據(jù)單片機應用系統(tǒng)的用途而定。鍵盤由許多鍵組成,而每個鍵相當于一個機械開關觸點,當鍵按下時,觸點閉合,當鍵松開時,觸點斷開。單片機接收到按鍵的觸點信號后作相應的功能處理。因此對于單片機系統(tǒng)來說鍵盤接口信號是輸入信號。單片機的鍵盤接口分

2、為獨立式和矩陣式。獨立式鍵盤的每個按鍵都有一個信號線與單片機電路相連,所有按鍵有一個公共地或公共正端,每個鍵相互獨立互不影響。如圖7-7所示,當按下鍵1時,無論其它鍵是否按下,鍵1的信號線就由1變0;當松開鍵1時,無論其它鍵是否按下,鍵1的信號線就由0變1。矩陣式鍵盤的按鍵觸點接于由行、列母線構(gòu)成的矩陣電路的交叉處,每當一個按鍵按下時通過該鍵將相應的行、列母線連通。若在行、列母線中把行母線逐行置0(一種掃描方式),那么列母線就用來作信號輸入線。矩陣式鍵盤原理圖如圖7-8所示。圖7-7 獨立式按鍵原理圖 圖7-8 矩陣式按鍵原理圖針對以上兩大類鍵盤工作方式,單片機又有三種鍵盤掃描方式:查詢方式;

3、定時掃描方式和中斷掃描方式。查詢方式是指在程序中用一段專門的掃描和讀按鍵程序不停查詢有無按鍵按下,確定鍵值。這種方式電路簡單,但需要占用單片機的機器時間。定時掃描方式是指利用單片機內(nèi)的定時器來產(chǎn)生定時中斷,然后在定時中斷的服務程序中掃描,檢查有無按鍵按下,確定鍵值。這種方式的電路也比較簡單,不占用單片機的機器時間,但需要占用一個定時器,同時定時的時間不能過長,否則可能檢測不到相應得按鍵。中斷掃描方式是指當有鍵按下時由相應的硬件電路產(chǎn)生中斷信號,單片機在中斷服務程序中掃描,檢查有無按鍵按下,確定鍵值。這種方式硬件電路上必須要產(chǎn)生中斷線,需要與門和非門來產(chǎn)生。但中斷方式不占用單片機的機器時間,也不

4、會出現(xiàn)定時方式時的檢測不到鍵盤的情況。另外,在掃描鍵盤時需處理鍵盤抖動問題,稱為去抖。一般去抖可以采用軟件方式完成,操作方法是,當檢測到有鍵按下時,等待10ms左右時間,如果此按鍵仍然保持按下的狀態(tài),這是確認此按鍵,如果在100ms內(nèi)連續(xù)檢測到此按鍵按下,則不確認第二次按下的鍵。本實驗系統(tǒng)中的鍵盤在硬件上采用查詢方式工作,鍵盤采用矩陣鍵盤有16個按鍵,見第六章實驗箱硬件資料。2實驗內(nèi)容a. 根據(jù)流程圖在keil編譯環(huán)境下編寫程序,生成*.hex文件,要求是任意按下鍵盤,要求能在led上將按下的鍵對于的十六進制數(shù)顯示出來。b. 通過isp軟件將生成的*.hex文件下載到單片機當中。c. 將k1撥

5、動開關打到“on”的位置,離線運行程序,觀察實驗現(xiàn)象,是否滿足要求。不滿足實驗要求時,檢查實驗代碼。三、參考程序匯編程序: fkey equ 20h.0 /*按鍵標志*/ keynum equ 30h /*按鍵編號變量*/ org 0000h ajmp mainmain: acall keyet mov r0,a mov a,r0 mov p0,a ajmp main 圖7-9鍵盤掃描table: /*字型數(shù)據(jù)數(shù)組*/ db 0c0h,0f9h,0a4h,0b0h db 99h,92h,82h,0f8h db 80h,90h,88h,83h db 0c6h,0a1h,86h,8eh keyet

6、: clr fkey /*清除按鍵標志*/ acall scan /*執(zhí)行按鍵掃描*/ jb fkey,g1 /*測試按鍵標志*/ ajmp keyet /*若沒有按鍵則等待按鍵*/delay: /*延遲子程序*/ mov r6,#50 /*總延遲時間r5*10 ms*/ d1: mov r7,#100 djnz r7,$ djnz r6,d1 djnz r5,delay ret g1: acall scan /*執(zhí)行按鍵掃描*/ jb fkey,g1 /*等待按鍵放開*/ mov a,keynum mov dptr,#table /*找出按鍵碼*/ movc a,a+dptr retscan

7、: /*鍵盤掃描控制程序*/ mov r3,#0feh /*加載掃描輸出信號初值11111110b*/ mov r4,#0 /*按鍵計數(shù)標號清除為0*/ mov r1,#4 /*循環(huán)1執(zhí)行4次*/ clr psw.5 /*psw.5=0表示未按鍵*/l1: mov a,r3 mov p2,a /*由p2口送出掃描輸出信號*/ mov r5,#1 acall delay mov a,p2 /*讀取p2數(shù)據(jù)以便判斷是否有按鍵*/ anl a,#0f0h mov r2,#4l2: jb acc.4,n1 /*累加器a位4若為1表示沒按鍵*/ mov keynum,r4 /*加載按鍵編號*/ setb

8、 psw.5 /*按鍵標志設為1*/n1: inc r4 /*按鍵編號加1*/ rr a /*檢查下一位*/ djnz r2,l2 mov a,r3 /*加載舊的掃描碼*/ rl a mov r3,a djnz r1,l1back: jnb psw.5,no_key /*設置是否按鍵*/ setb fkey /*若有按鍵fkey=1*/ retno_key: clr fkey ret end c語言程序:#include<reg52.h>#define uchar unsigned char#define unit unsigned intvoid delay();uchar ke

9、yscan();unit j,h;void main() uchar key; p1=0xff; /*數(shù)碼管使能*/ while (1) key=keyscan();/*鍵盤值返回*/ delay(); switch(key)/*判斷鍵值*/ case 0xee:p0=0xc0; break;/*0f的鍵值*/ case 0xde:p0=0xf9; break; case 0xbe:p0=0xa4; break; case 0x7e:p0=0xb0; break; case 0xed:p0=0x99; break; case 0xdd:p0=0x92; break; case 0xbd:p0=

10、0x82; break; case 0x7d:p0=0xf8; break; case 0xeb:p0=0x80; break; case 0xdb:p0=0x90; break; case 0xbb:p0=0x88; break; case 0x7b:p0=0x83; break; case 0xe7:p0=0xc6; break; case 0xd7:p0=0xa1; break; case 0xb7:p0=0x86; break; case 0x77:p0=0x8e; break; case 0x00:p0=0xc1; break; / void delay() /*延時*/ unsig

11、ned int i; for(i=8000;i>0;i-); / uchar keyscan() /*鍵盤掃描*/ while(1) p2=0xff;/*p2口拉高*/ p2=0xfe;/*第一行置低*/ if (p2&0xff)!=0xfe) /判斷是否有鍵按下 delay(); /*去抖動*/ if(p2&0xff)!=0xfe) return p2;/*返回鍵值*/ else p2=0xfd; else p2=0xfd;/*第二行置低*/ if (p2&0xff)!=0xfd) delay(); if (p2&0xff)!=0xfd) return p2; else p2=0xfb; else p2=0xfb;/*第三行置低*/ if (p2&0xff)!=0xfb) delay(); if (p2&0xff)!=0xfb) return p2; else p2=0xf7; else p2=0xf7; /*第四行

溫馨提示

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

評論

0/150

提交評論