課題六按鍵原理_第1頁(yè)
課題六按鍵原理_第2頁(yè)
課題六按鍵原理_第3頁(yè)
課題六按鍵原理_第4頁(yè)
課題六按鍵原理_第5頁(yè)
已閱讀5頁(yè),還剩37頁(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頁(yè),共42頁(yè),2023年,2月20日,星期四課題目標(biāo)本課題的任務(wù)是用按鍵控制單片機(jī)實(shí)現(xiàn)顯示,如圖6-1所示。學(xué)習(xí)單片機(jī)對(duì)鍵盤(pán)信息的處理方法,學(xué)會(huì)用鍵盤(pán)控制單片機(jī)程序的運(yùn)行。第2頁(yè),共42頁(yè),2023年,2月20日,星期四課題分析為了讓單片機(jī)控制發(fā)光二極管,需要將發(fā)光二極管連接到單片機(jī)的端口上,圖6-1就是實(shí)驗(yàn)電路板單片機(jī)對(duì)彩燈(發(fā)光二極管)控制的電路連接。在一個(gè)單片機(jī)系統(tǒng)中,為了實(shí)現(xiàn)人對(duì)單片機(jī)的控制,按鍵是最常用的輸入設(shè)備之一。而要實(shí)現(xiàn)多個(gè)按鍵的輸入識(shí)別與控制,先要學(xué)習(xí)并理解單個(gè)按鍵的輸入與對(duì)應(yīng)程序的處理方法,然后再學(xué)習(xí)對(duì)多個(gè)鍵進(jìn)行處理。因此,將按鍵任務(wù)分為單鍵控制LED顯示和獨(dú)立式按鍵控制兩個(gè)任務(wù)來(lái)完成。第3頁(yè),共42頁(yè),2023年,2月20日,星期四任務(wù)一獨(dú)立式按鍵控制的LED顯示

本任務(wù)是利用獨(dú)立按鍵實(shí)現(xiàn)對(duì)LED進(jìn)行控制,每當(dāng)按下一次鍵時(shí),LED顯示方式變化左移一次,用以顯示按鍵控制的結(jié)果。

第4頁(yè),共42頁(yè),2023年,2月20日,星期四圖6-2鍵盤(pán)控制原理圖第5頁(yè),共42頁(yè),2023年,2月20日,星期四圖6-3LED顯示原理圖第6頁(yè),共42頁(yè),2023年,2月20日,星期四

為了實(shí)現(xiàn)用按鍵控制LED的顯示,首先要使單片機(jī)讀入按鍵的狀態(tài),再根據(jù)鍵盤(pán)的狀態(tài)去控制LED的亮滅。對(duì)LED的控制,在前面的課題中已經(jīng)講了,這里不再作重點(diǎn)講解,僅僅作為一個(gè)鍵盤(pán)控制對(duì)象的例子。根據(jù)圖6-2所示的硬件電路,每當(dāng)按下按鍵時(shí),單片機(jī)引腳P0.0將為低電平,程序運(yùn)行時(shí),需要檢測(cè)P0.0引腳是否為低電平,若P0.0引腳為低電平,表示按鍵已按下。當(dāng)每次按下按鍵時(shí),則使P1口輸出的數(shù)據(jù)變化一次,輸出不同數(shù)據(jù),對(duì)應(yīng)不同的發(fā)光二極管被點(diǎn)亮,對(duì)應(yīng)的程序設(shè)計(jì)框圖如圖6-4所示。程序設(shè)計(jì)分析第7頁(yè),共42頁(yè),2023年,2月20日,星期四初始化LED左移是否按下鍵否是圖6-4按鍵控制LED流程圖第8頁(yè),共42頁(yè),2023年,2月20日,星期四一、按鍵的特性

作為機(jī)械按鈕,鍵按下或者放開(kāi)時(shí),都存在著接通或斷開(kāi)的不穩(wěn)定現(xiàn)象,從而使信號(hào)電平具有抖動(dòng)現(xiàn)象,這種現(xiàn)象稱(chēng)為抖動(dòng)。由于按鍵的抖動(dòng),使按鍵對(duì)應(yīng)的輸出電平出現(xiàn)若干個(gè)干擾脈沖,如圖6-5所示。為了保證每按下一次按鍵,單片機(jī)程序只動(dòng)作一次,就需要消除因按鍵的抖動(dòng)現(xiàn)象而引起的錯(cuò)誤動(dòng)作,具體的處理方式分為硬件消除抖動(dòng)和軟件消除抖動(dòng),簡(jiǎn)稱(chēng)消抖。鍵盤(pán)電路原理抖動(dòng)時(shí)間<10ms開(kāi)關(guān)動(dòng)作時(shí)間>100ms“1”“0”<10ms圖6-5按鍵的波形第9頁(yè),共42頁(yè),2023年,2月20日,星期四1、硬件消抖硬件消抖采用硬件電路完成,圖6-6所示的電路就是一種硬件消抖電路。&I/O接口&+5v圖6-6消除抖動(dòng)電路開(kāi)關(guān)單片機(jī)第10頁(yè),共42頁(yè),2023年,2月20日,星期四2、軟件消抖

也可用軟件方法消除抖動(dòng),而用軟件消抖則一般是采用軟件延時(shí)的方式,通過(guò)延時(shí)來(lái)?yè)Q取讀入穩(wěn)定的數(shù)據(jù)。圖6-7就是軟件消抖的流程圖。延時(shí)等待10ms

仍有按鍵信號(hào)?Y

有按鍵信號(hào)?NYN鍵盤(pán)處理按鍵釋放?NY圖6-7軟件消抖的流程圖第11頁(yè),共42頁(yè),2023年,2月20日,星期四C語(yǔ)言程序:#include<AT89X51.H>#include<intrins.h>unsignedcharcount;voiddelay10ms(void){unsignedchari,j;for(i=250;i>0;i--)for(j=248;j>0;j--);}第12頁(yè),共42頁(yè),2023年,2月20日,星期四voidmain(void){count=0xfe;while(1){if(P0_3==0){delay10ms();if(P0_3==0){P1=count;count=_crol_(count,1);while(P0_3==0);}}}}第13頁(yè),共42頁(yè),2023年,2月20日,星期四2、匯編語(yǔ)言程序

ORG00hmova,#0fehREL:JBP0.3,REL;判斷SP1是否按下

LCALLDELAY;若按下,則延時(shí)10ms左右

JBP0.3,REL;再判斷SP1是否真得按下

movp1,arlaJNBP0.3,$;等待SP1釋放SJMPrel;繼續(xù)對(duì)K1按鍵掃描DELAY:MOVR6,#20;延時(shí)10ms子程序L1:MOVR7,#248DJNZR7,$DJNZR6,L1RETEND第14頁(yè),共42頁(yè),2023年,2月20日,星期四

任務(wù)二獨(dú)立式按鍵控制數(shù)碼管顯示本任務(wù)是利用獨(dú)立按鍵實(shí)現(xiàn)對(duì)數(shù)碼管的控制,每當(dāng)按下一次鍵時(shí),數(shù)碼管顯示按鍵次數(shù)0-9。第15頁(yè),共42頁(yè),2023年,2月20日,星期四程序設(shè)計(jì)流程圖分析初始化數(shù)碼管顯示是否按下鍵否是圖6-5按鍵控制數(shù)碼管流程圖第16頁(yè),共42頁(yè),2023年,2月20日,星期四1、C語(yǔ)言程序:#include<AT89X51.H>unsignedcharcount;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay10ms(void){unsignedchari,j;for(i=250;i>0;i--)for(j=248;j>0;j--);}第17頁(yè),共42頁(yè),2023年,2月20日,星期四voidmain(void){while(1){if(P0_3==0){delay10ms();if(P0_3==0){count++;if(count==10){count=0;}P1=table[count];while(P0_3==0);}}}}第18頁(yè),共42頁(yè),2023年,2月20日,星期四2、匯編程序ORG00hSTART:MOVR1,#00H;初始化R1為0,

REL:JBP0.3,REL;判斷SP1是否按下

LCALLDELAY;若按下,則延時(shí)10ms左右

JBP0.3,REL;再判斷SP1是否真得按下

MOVA,R1MOVDPTR,#TABLEMOVCA,@A+DPTRMOVP1,AINCR1JNBP0.3,$;等待SP1釋放CJNER1,#10,REL第19頁(yè),共42頁(yè),2023年,2月20日,星期四SJMPSTART;繼續(xù)對(duì)K1按鍵掃描DELAY:MOVR6,#20;延時(shí)10ms子程序L1:MOVR7,#248DJNZR7,$DJNZR6,L1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FHEND第20頁(yè),共42頁(yè),2023年,2月20日,星期四任務(wù)三矩陣鍵盤(pán)數(shù)碼管顯示本任務(wù)目標(biāo)是用矩陣鍵盤(pán)控制數(shù)碼管顯示。第21頁(yè),共42頁(yè),2023年,2月20日,星期四圖6-7按鍵電路圖第22頁(yè),共42頁(yè),2023年,2月20日,星期四任務(wù)分析為了便于學(xué)習(xí)和理解,如何用鍵盤(pán)實(shí)現(xiàn)程序控制,完成設(shè)計(jì)需要的鍵盤(pán)控制功能。著重強(qiáng)調(diào)鍵盤(pán)定義和鍵盤(pán)控制的實(shí)現(xiàn)。為了便于輸入,采用16個(gè)鍵的4×4矩陣式鍵盤(pán)作為輸入,輸出電路采用前面課題已經(jīng)介紹的LED數(shù)碼管的顯示電路,控制電路由AT89S51單片機(jī)系統(tǒng)。第23頁(yè),共42頁(yè),2023年,2月20日,星期四圖4-7顯示電路原理圖第24頁(yè),共42頁(yè),2023年,2月20日,星期四在單片機(jī)程序中,對(duì)多個(gè)鍵的處理應(yīng)包括以下三項(xiàng)內(nèi)容:鍵輸入檢查鍵盤(pán)是否有鍵被按下,并消除按鍵抖動(dòng),獲得或規(guī)定(單個(gè)按鍵)按鍵的鍵號(hào)。鍵譯碼鍵號(hào)為鍵盤(pán)位置碼,根據(jù)鍵號(hào)查表得出被按鍵的鍵值。鍵值:數(shù)字鍵0~9、字符鍵0AH~0FH、功能鍵10H~等,是按鍵在物理位置上的人為規(guī)定數(shù)值。鍵處理根據(jù)鍵值執(zhí)行不同程序段。如:若鍵值屬于數(shù)字、字符鍵,則調(diào)用顯示數(shù)字和字符子程序;若鍵值屬于功能鍵,則進(jìn)行多分支轉(zhuǎn)移,執(zhí)行各個(gè)功能程序段。一、鍵盤(pán)處理第25頁(yè),共42頁(yè),2023年,2月20日,星期四

1.掃描鍵盤(pán)行列式鍵盤(pán)的具體識(shí)別方法有掃描法和反轉(zhuǎn)法。所謂掃描法,即用列線(xiàn)輸出,行線(xiàn)輸入(可交換行線(xiàn)和列線(xiàn)的輸入、輸出關(guān)系)。其中,列線(xiàn)逐列輸出0,某行有鍵按下,行線(xiàn)有0輸入,若無(wú)按鍵,行線(xiàn)輸入全部為1。當(dāng)有鍵按下時(shí),根據(jù)行線(xiàn)和列線(xiàn)可最終確定哪個(gè)按鍵被按下。另外,還可以采用反轉(zhuǎn)法,也就是行線(xiàn)和列線(xiàn)交換輸入、輸出,分兩步獲取按鍵的鍵號(hào),但是在多鍵同時(shí)按下時(shí)不能準(zhǔn)確判斷。一、鍵盤(pán)處理第26頁(yè),共42頁(yè),2023年,2月20日,星期四

2.鍵譯碼通過(guò)上述步驟獲得按鍵的行號(hào)和列號(hào),但按鍵所在物理位置的變化將引起鍵號(hào)的不一致,或者由于按鍵功能的不同規(guī)定也將影響鍵號(hào)所對(duì)應(yīng)的功能的執(zhí)行。如圖4-9所示的鍵盤(pán),就是兩種典型的鍵盤(pán)布局,鍵盤(pán)的編號(hào)與鍵盤(pán)的掃描碼沒(méi)有直接的運(yùn)算關(guān)系,造成程序編寫(xiě)的困難。一、鍵盤(pán)處理第27頁(yè),共42頁(yè),2023年,2月20日,星期四3.鍵處理對(duì)于鍵盤(pán)上的每一個(gè)鍵,具體是完成什么功能,由鍵盤(pán)要完成具體任務(wù)和程序設(shè)計(jì)來(lái)決定。對(duì)于鍵盤(pán)處理來(lái)說(shuō),首先要做的事情是要消除抖動(dòng),矩陣鍵盤(pán)的消抖原理與單鍵的消抖原理是一致的,但在程序的編寫(xiě)上略有不同。為了同時(shí)兼顧動(dòng)態(tài)顯示,而動(dòng)態(tài)顯示函數(shù)調(diào)用一次需要幾個(gè)ms,因此可以用動(dòng)態(tài)顯示函數(shù)代替消抖用的延時(shí)函數(shù)。手按動(dòng)鍵盤(pán)的時(shí)間為零點(diǎn)幾秒到幾秒之間,遠(yuǎn)大于動(dòng)態(tài)顯示函數(shù)的所消耗的時(shí)間,所以可以每調(diào)用一次顯示函數(shù)后,再判斷一次是否有鍵按下的方法進(jìn)行消抖和鍵盤(pán)信息處理。具體的消抖功能的鍵盤(pán)處理程序框圖如圖4-10所示。一、鍵盤(pán)處理第28頁(yè),共42頁(yè),2023年,2月20日,星期四圖4-10帶動(dòng)態(tài)顯示的鍵盤(pán)消抖程序框圖第29頁(yè),共42頁(yè),2023年,2月20日,星期四C語(yǔ)言程序:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchartemp,num;voiddelay(uintZ);ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};第30頁(yè),共42頁(yè),2023年,2月20日,星期四voidmain(){while(1){P0=0xfe; temp=P0; temp=temp&0xf0;while(temp!=0xf0){delay(5); temp=P0;temp=temp&0xf0; while(temp!=0xf0) {temp=P0; switch(temp){case0xee:num=0;break;case0xde:num=1;break;case0xbe:num=2;break; case0x7e:num=3; break;}第31頁(yè),共42頁(yè),2023年,2月20日,星期四while(temp!=0xf0){temp=P0;temp=temp&0xf0;}P1=table[num];}}第32頁(yè),共42頁(yè),2023年,2月20日,星期四

P0=0xfd; temp=P0; temp=temp&0xf0;while(temp!=0xf0){delay(5); temp=P0;temp=temp&0xf0; while(temp!=0xf0) {temp=P0; switch(temp){case0xed:num=4;break;case0xdd:num=5;break;case0xbd:num=6;break; case0x7d:num=7;break;}第33頁(yè),共42頁(yè),2023年,2月20日,星期四while(temp!=0xf0){temp=P0;temp=temp&0xf0;}P1=table[num];}}第34頁(yè),共42頁(yè),2023年,2月20日,星期四

P0=0xfb; temp=P0; temp=temp&0xf0;while(temp!=0xf0){delay(5); temp=P0;temp=temp&0xf0; while(temp!=0xf0) {temp=P0; switch(temp){case0xeb:num=8;break;case0xdb:num=9;break;case0xbb:num=10;break; case0x7b:num=11;break;}第35頁(yè),共42頁(yè),2023年,2月20日,星期四while(temp!=0xf0){temp=P0;temp=temp&0xf0;}P1=table[num];}}第36頁(yè),共42頁(yè),2023年,2月20日,星期四

P0=0xf7; temp=P0; temp=temp&0xf0;while(temp!=0xf0){delay(5); temp=P0;temp=temp&0xf0; while(temp!=0xf0) {temp=P0; switch(temp){case0xe7:num=12;break;case0xd7:num=13;break;case0xb7:num=14;break; case0x77:num=15;break;}第37頁(yè),共42頁(yè),2023年,2月20日,星期四while(temp!=0xf0){temp=P0;temp=temp&0xf0;}P1=table[num];}}}}voiddelay(uintZ){uintx,y;for(x=Z;x>0;x--)for(y=110;y>0;y--);}第38頁(yè),共42頁(yè),2023年,2月20日,星期四匯編語(yǔ)言源程序ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#07HLOOP:MOVP0,#0feHACALLSCANKEYMOVP0,#0fdHACALLSCANKEYMOVP0,#0fbHACALLSCANKEYMOVP0,#0f7HACALLSCANKEYAJMPLOOP

第39頁(yè),共42頁(yè),2023年,2月20日,星期四

SCANKEY:MOVA,P0CJNEA,#0EEH,NEXT2MOVA,#00HAJMPSENDLEDNEXT2:CJNEA,#0deH,NEXT3MOVA,#01HAJMPSENDLEDNEXT3:CJNEA,#0beH,NEXT4MOVA,#02HAJMPSENDLEDNEXT4:CJNEA,#07eH,NEXT5MOVA,#03HAJMPSENDLEDNEXT5:CJNEA,#0edH,NEXT6MOVA,#04HAJMPSENDLEDNEXT6:CJNEA,#0DDH,NEXT7MOVA,#05HAJMPSENDLED第40頁(yè),共42頁(yè),2023年,2月20日,星期四

NEXT7:CJNEA,#0bdH,NEXT8MOVA,#06HAJMPSENDLEDNEXT8:CJNEA,#07dH,NEXT9MOVA,#07HAJMPSENDLEDNEXT9:CJNEA,#0ebH,NEXT10MOVA,#08HAJMPSENDLEDNEXT10:CJNEA,#0d

溫馨提示

  • 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)論