項目3-51單片機按鍵識別的設(shè)計_第1頁
項目3-51單片機按鍵識別的設(shè)計_第2頁
項目3-51單片機按鍵識別的設(shè)計_第3頁
項目3-51單片機按鍵識別的設(shè)計_第4頁
項目3-51單片機按鍵識別的設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目3

按鍵識別的設(shè)計★知識目標:

1.掌握AT89S51單片機最小系統(tǒng)的組成及相關(guān)電路的工作原理;

2.掌握AT89S51單片機基本鍵盤接口電路的組成及按鍵識別方法?!锬芰δ繕耍?/p>

1.認識AT89S51單片機、晶體振蕩器、電阻、電容、按鍵,鍵盤等元器件。

2.會設(shè)計硬件去抖動電路,編寫軟件去抖動按鍵識別程序;

3.掌握矩陣鍵盤按鍵掃描程序,分支處理。在單片機應(yīng)用系統(tǒng)中,鍵盤主要用于向計算機輸入數(shù)據(jù)、傳送命令等,是人工干預(yù)計算機的主要手段。鍵盤要通過接口與單片機相連,分為編碼鍵盤和非編碼鍵盤兩類。鍵盤上閉合鍵的識別由專用的硬件編碼器實現(xiàn),并產(chǎn)生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機組成的各種系統(tǒng)中,使用最廣泛的是非編碼鍵盤。當然,也有用到編碼鍵盤的。非編碼鍵盤有分為:獨立鍵盤和行列式(又稱為矩陣式)鍵盤。單鍵矩陣鍵盤讀P1口的按鍵狀態(tài),P2口以二進制記錄P1口的狀態(tài)變化次數(shù)。1.提出任務(wù)2.任務(wù)分析(1)硬件電路設(shè)計以8051單片機作為控制電路,按鍵連接至單片機的P1口,P2口外接8個采用共陽極連接方式的發(fā)光二極管(LED)和8個限流電阻,硬件電路原理圖所示。任務(wù)1:按鍵測試任務(wù)1:按鍵測試3.程序流程#include<STC_NEW_8051.H>#defineucharunsignedcharunsignedchari,j;voidmain(){j=0;//變化次數(shù)P2=0xff;//P2口燈全滅,燈滅表示為0,燈亮表示1i=P1;//讀P1口while(1){ if(i!=P1)//判斷P1口是否有變化 { j++;//有變化次數(shù)加1P2=~j;//次數(shù)在P2口顯示 i=P1;//重新記錄P1口的狀態(tài) }

}}Lesson369-lesskey11在鍵盤的軟件設(shè)計中還要注意按鍵的去抖動問題。由于按鍵一般是由機械式觸點構(gòu)成的,在按鍵按下和斷開的瞬間均有一個抖動過程,時間大約為5ms~10ms,可能會造成單片機對按鍵的誤識別。

物理按鍵抖動波形圖按鍵消抖一般有兩種方法,即硬件消抖和軟件消抖。硬件消抖方法在軟件設(shè)計中,當單片機檢測到有鍵按下時,可以先延時一段時間越過抖動過程再對按鍵識別。實際應(yīng)用中,一般希望按鍵一次按下單片機只處理一次,但由于單片機執(zhí)行程序的速度很快,按鍵一次按下可能被單片機多次處理。為避免此問題,可在按鍵第一次按下時延時10ms之后再次檢測按鍵是否按下,如果此時按鍵仍然按下,則確定有按鍵輸入。這樣便可以避免按鍵的重復(fù)處理。軟件消抖方法任務(wù)2

單鍵控制LED的設(shè)計軟件消抖流程圖任務(wù)2

單鍵控制LED的設(shè)計用單鍵(即獨立鍵盤中的按鍵)實現(xiàn)對LED進行控制,每按一次按鍵時,LED方式變化一次,用以表示按鍵控制的結(jié)果。1.提出任務(wù)2.任務(wù)分析(1)硬件電路設(shè)計以8051單片機作為控制電路,按鍵連接至單片機的P1.4引腳,另一端接地,P2.0口外接1個采用共陽極連接方式的發(fā)光二極管(LED)和1個限流電阻,硬件電路原理圖所示。任務(wù)2

單鍵控制LED的設(shè)計任務(wù)2

單鍵控制LED的設(shè)計軟件消抖流程圖#include<reg51.h>#defineucharunsignedcharvoiddelay(uchar);sbitp14=P1^4;//定義位sbitp20=P2^0;main(){p20=0;//P2.0初始狀態(tài)燈亮while(1){if(p14==0)//判斷是否按鍵{delay(2);//延時20MS,去抖動if(p14==0)//確認有鍵按下 {p20=~p20;//指示燈狀態(tài)取反while(!p14);//等待按鍵釋放 }}}}/*延時子程序*/voiddelay(uchark){ucharx,y,z;for(x=k;x>0;x--)for(y=20;y>0;y--)for(z=250;z>0;z--);}Lesson3-lessonkey12思考題:1.用P2口指示燈記錄P14復(fù)位鍵,按鍵的次數(shù)任務(wù)2多路按鍵狀態(tài)指示的設(shè)計

知識鏈接一、矩陣式鍵盤1.結(jié)構(gòu)和工作原理當輸入部分有多個按鍵時,若仍然采用獨立鍵盤,必然會占用大量的I/O口,采用矩陣鍵盤是一種比較節(jié)省資源的方法。矩陣式鍵盤又稱行列式鍵盤,往往用于按鍵數(shù)量較多的場合。矩陣式鍵盤的按鍵設(shè)置在行與列的交點上。任務(wù)3

多路按鍵狀態(tài)指示的設(shè)計一般矩陣鍵盤的連接示意圖任務(wù)2多路按鍵狀態(tài)指示的設(shè)計2.按鍵的識別A)行(列)掃描法。(1)先將全部列線置為低電平,然后通過行線接口讀取行線電平,判斷鍵盤中是否有按鍵被按下。(2)判斷閉合鍵的具體位置。在確認鍵盤中有按鍵被按下后,依次將列線置為低電平,再逐行檢測各行的電平狀態(tài)。若某行為低電平,則該行與置為低電平的列線相交處的按鍵即為閉合按鍵。(3)綜合上述兩步的結(jié)果,即可確定出閉合鍵所在的行和列,從而識別出所按下的鍵。B)反轉(zhuǎn)法:

1)行輸入、列輸出,將列輸出端全置為0,

通過接口讀取行線電平,判斷行的位置

2)列輸入、行輸出,將行輸出端全置為0,通過接口讀取列線電平,判斷列的位置綜合兩步獲取按鍵號。任務(wù)2多路按鍵狀態(tài)指示的設(shè)計任務(wù)2多路按鍵狀態(tài)指示的設(shè)計3.矩陣式鍵盤的軟件設(shè)計無論采用哪種方式,都要編制相應(yīng)的鍵盤掃描程序。在鍵盤掃描程序中一般要完成以下幾個功能:(1)判斷鍵盤上有無按鍵按下;(2)去鍵的機械抖動影響;(3)求所按鍵的鍵號;(4)轉(zhuǎn)向鍵處理程序。任務(wù)2多路按鍵狀態(tài)指示的設(shè)計按鍵識別程序流程圖任務(wù)3

多路按鍵狀態(tài)指示的設(shè)計用8051單片機及LED數(shù)碼管實現(xiàn)對鍵盤鍵值的實現(xiàn)。當按下鍵盤中不同按鍵時,用LED燈顯示不同的鍵值。

1.提出任務(wù)任務(wù)2多路按鍵狀態(tài)指示的設(shè)計2.任務(wù)分析(1)硬件電路設(shè)計本設(shè)計采用8051單片機最小系統(tǒng),P1口外接矩陣式鍵盤接口電路,P2口外接8個共陽發(fā)光二極管。任務(wù)2多路按鍵狀態(tài)指示的設(shè)計鍵盤鍵值顯示電路圖任務(wù)3多路按鍵狀態(tài)指示的設(shè)計3.源程序編寫ucharkeyscan()//鍵盤反轉(zhuǎn)掃描{uchari,scan1,scan2,keycode;P1=0xf0;//行線設(shè)為低低平scan1=P1;//讀P1口if((scan1&0xf0)!=0xf0)//判斷是否有按鍵{delay(2);//延時

scan1=P1;if((scan1&0xf0)!=0xf0)//再次判斷{ P1=0x0f;//列線設(shè)為低電平 scan2=P1; keycode=scan1|scan2;//組合成鍵編碼 for(i=0;i<16;i++) { if(keycode==keytable[i]) {key=i;//查表得鍵值 return(i);//返回鍵值 }}}}else{return(16)}}voiddelay(uchark){ucharx,y,z;for(x=k;x>0;x--)for(y=20;y>0;y--)for(z=250;z>0;z--);}

/*延時20ms*/任務(wù)3多路按鍵狀態(tài)指示的設(shè)計3.源程序編寫//#include<reg51.h>#include<STC_NEW_8051.H>#defineucharunsignedcharvoiddelay(uchar);ucharkeyscan();ucharcodekeytable[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77,0xff};ucharkey;main(){while(1){

key=keyscan();if(key!=16)

//顯示二進制鍵值P2=~key;elseP2=0xff;

//無按鍵不顯示} }任務(wù)3

多路按鍵狀態(tài)指示的設(shè)計二、函數(shù)的返回值

函數(shù)的值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值。對函數(shù)返回值有以下一些說明:

函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。

return語句的一般形式為:

return表達式;

或者為:

return(表達式);

該語句的功能是計算表達式的值,并返回給主調(diào)函數(shù)。在函數(shù)中允許有多個return語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。

任務(wù)3

多路按鍵狀態(tài)指示的設(shè)計函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。如果兩者不一致,則以函數(shù)類型為準,自動進行類型轉(zhuǎn)換。

如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。

不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。如:

voids(intn){……}一旦函數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論