基于C語言的MCS-51單片機(jī)教程 課件 2任務(wù)3:鍵盤應(yīng)用_第1頁
基于C語言的MCS-51單片機(jī)教程 課件 2任務(wù)3:鍵盤應(yīng)用_第2頁
基于C語言的MCS-51單片機(jī)教程 課件 2任務(wù)3:鍵盤應(yīng)用_第3頁
基于C語言的MCS-51單片機(jī)教程 課件 2任務(wù)3:鍵盤應(yīng)用_第4頁
基于C語言的MCS-51單片機(jī)教程 課件 2任務(wù)3:鍵盤應(yīng)用_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

任務(wù)3:鍵盤的應(yīng)用1、鍵盤的分類鍵盤分編碼鍵盤和非編碼鍵盤。在單片機(jī)組成的測(cè)控系統(tǒng)及智能化儀器中,用的最多的是非編碼鍵盤。非編碼鍵盤有分為:獨(dú)立式非編碼鍵盤和行列式非編碼鍵盤。2、鍵盤的結(jié)構(gòu)常用的機(jī)械式按鍵,按鍵是4腳封裝,內(nèi)部2腳相連,圖(b)是按鍵的背面圖,用萬用表測(cè)試4只引腳的通斷。1號(hào)和2號(hào)引腳是連通的,3號(hào)和4號(hào)引腳是連通的。硬件連接時(shí)注意引出按鍵4個(gè)引腳中不相通的2個(gè)引腳,如按鍵的對(duì)角上的兩個(gè)引腳。

按鍵與單片機(jī)引腳相連后,按鍵按下或閉合會(huì)影響單片機(jī)引腳狀態(tài),讀取引腳狀態(tài),推斷按鍵是否按下,從而達(dá)到輸入信息的目的。3、獨(dú)立式按鍵

獨(dú)立式按鍵是指各按鍵相互獨(dú)立地接通一條輸入數(shù)據(jù)線。當(dāng)任何一個(gè)鍵按下時(shí),與之相連的輸入數(shù)據(jù)線即可讀入數(shù)據(jù)0,而沒有按下時(shí)讀入1。獨(dú)立式鍵盤的電路簡(jiǎn)單,易于編程,但占用的IO口線較多,當(dāng)需要較多按鍵時(shí)可能產(chǎn)生IO資源緊張問題。獨(dú)立按鍵的三種接法的分析1)當(dāng)按鍵閉合時(shí),單片機(jī)引腳接地,當(dāng)按鍵斷開時(shí),單片機(jī)引腳不能穩(wěn)定工作,因?yàn)樘幱诟咦钁B(tài),易受干擾。獨(dú)立按鍵的三種接法的分析2)當(dāng)按鍵閉合時(shí),單片機(jī)引腳接地,當(dāng)按鍵斷開時(shí),單片機(jī)引腳被上拉電阻拉為高電平,按鍵閉合或按下,單片機(jī)引腳的電平穩(wěn)定,是一種標(biāo)準(zhǔn)的接法。獨(dú)立按鍵的三種接法的分析3)當(dāng)按鍵斷開時(shí),單片機(jī)引腳接地,當(dāng)按鍵閉合時(shí),單片機(jī)引腳直接和電源相連,這種接法短路電流大,易燒毀單片機(jī)I/O口電路,是危險(xiǎn)的連接方法。4、獨(dú)立按鍵讀取引腳狀態(tài)的方法

軟件方面如何讀取引腳狀態(tài)呢?有查詢法和中斷法。普遍采用查詢法。查詢法是CPU讀取連接按鍵的單片機(jī)端口的電平狀態(tài),如果讀取的是低電平,就確認(rèn)該端口對(duì)應(yīng)的按鍵已按下,如果讀取的是高電平,就確認(rèn)該端口對(duì)應(yīng)的按鍵沒按下。

提示:因?yàn)?1系列單片機(jī)的端口是準(zhǔn)雙向口,在讀引腳前,需要先對(duì)輸入端口置1。

舉例:讀P1.0bits1;//定義位變量s1,保存按鍵通斷狀態(tài)P1_0=1;S1=P1_0;讀P1:Unsignedcharsw;//定義字節(jié)變量

P1=0xff;Sw=P1;

5、按鍵的去抖由于機(jī)械觸點(diǎn)的彈性作用,按鍵在閉合時(shí)不會(huì)馬上穩(wěn)定地接地,在斷開時(shí)也不會(huì)立刻斷開。通常在閉合和斷開的瞬間都伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),如下圖。抖動(dòng)時(shí)間一般為5

10ms,在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。因此,為保證CPU對(duì)按鍵的斷開和閉合做出正確的判斷,就必須消除抖動(dòng)。按鍵的去抖—硬件方法在鍵數(shù)較少時(shí)可用硬件方法消除鍵抖動(dòng)。如圖所示的RS觸發(fā)器為常用的硬件去抖。圖中兩個(gè)“與非”門構(gòu)成一個(gè)RS觸發(fā)器。當(dāng)按鍵未按下時(shí),輸出為1;當(dāng)鍵按下時(shí),輸出為0。此時(shí)即使用按鍵的機(jī)械性能,使按鍵因彈性抖動(dòng)而產(chǎn)生瞬時(shí)斷開(抖動(dòng)跳開B),中要按鍵不返回原始狀態(tài)A,雙穩(wěn)態(tài)電路的狀態(tài)不改變,輸出保持為0,不會(huì)產(chǎn)生抖動(dòng)的波形。也就是說,即使B點(diǎn)的電壓波形是抖動(dòng)的,但經(jīng)雙穩(wěn)態(tài)電路之后,其輸出為正規(guī)的矩形波。這一點(diǎn)通過分析RS觸發(fā)器的工作過程很容易得到驗(yàn)證。按鍵的去抖—硬件方法利用電容的放電延時(shí),采用按鍵并聯(lián)電容法,也可以實(shí)現(xiàn)消抖。按鍵的去抖—軟件延時(shí)法

(a)檢測(cè)按鍵(b)釋放按鍵按鍵去抖流程圖軟件去抖的原理一:前沿消抖法。讀按鍵狀態(tài),判斷有鍵按下,延時(shí)10ms,再次讀按鍵狀態(tài),有鍵按下,才確認(rèn)是哪一個(gè)按鍵,從而消除前沿的抖動(dòng)。流程如下圖(a)。按鍵的去抖—軟件延時(shí)法

軟件去抖的原理二:在去抖時(shí)間內(nèi)連續(xù)多次去讀按鍵所在端口的狀態(tài),并與上一次進(jìn)行對(duì)比,若狀態(tài)改變,則重新初始化去抖時(shí)間。直到在去抖時(shí)間內(nèi),每次讀到的口狀態(tài)都一致時(shí),我們才認(rèn)為掃描到穩(wěn)定的按鍵。流程如下圖(C)。舉例編寫程序,識(shí)別圖中的8個(gè)按鍵是哪一個(gè)鍵被按下,返回鍵的編號(hào)。

硬件電路按鍵編號(hào)K0K1K2K3K4K5K6K7P1二進(jìn)制1111111011111101111110111111011111101111110111111011111101111111十六進(jìn)制0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f/****************獲取按鍵狀態(tài)的參考程序片段*************///**********按鍵掃描程序

unsignedcharkeyscan(){unsignedcharsw;//定義變量sw,暫存P1狀態(tài)的變量

unsignedcharkey//定義變量key,暫存按下鍵的編號(hào)

P1=0xff;//預(yù)先對(duì)輸入端口置1

sw=P1;

switch(sw){ case0xfe:key=0;break; case0xfd:key=1;break; case0xfb:key=2;break; case0xf7:key=3;break; case0xef:key=4;break; case0xdf:key=5;break; case0xbf:key=6;break; case0x7f:key=7;break;} returnkey;//獲得按鍵編號(hào)}6、矩陣式按鍵特點(diǎn):占用IO口線較少,但軟件將較為復(fù)雜。判斷鍵盤的位置—常用方法鍵盤掃描法和反線法。行列式鍵盤鍵盤掃描法步驟:第一步:判別有無按鍵按下。其方法:向所有行給低電平0,所有的列給高電平1。讀取此時(shí)列線I/O狀態(tài),如果不是全高,則有按鍵按下。第二步:有按鍵按下,則下一步就是查找按鍵所在位置,具體步驟:向第0行給低電平0,其它給高電平1,讀取所有列的電平狀態(tài)。如果所有列電平均為高電平,則說明按下的按鍵不在第0列。反之則找到了該按鍵。依次對(duì)第1列、第2列、第3列如此操作,直到找到按下的按鍵為止。第三步:對(duì)按鍵進(jìn)行編碼。反線法步驟:①判斷哪一列有鍵壓下寫端口(0xf0):行線電平=0;列線電平=1。讀端口進(jìn)行判斷:若P3=0xf0→沒有按鍵壓下。若P3≠0xf0→某列有鍵壓下→則將讀取的值賦值給K1。②判斷哪一行有鍵壓下寫端口(0x0f):行線電平=1;列線電平=0。讀端口進(jìn)行判斷:若P3=0x0f→沒有按鍵壓下;若P3≠0x0f→某行有鍵壓下→K2。③將K1與K2相“或”并存于K2(形成鍵值)——閉合鍵所在行、列的狀態(tài)均為0,其余皆為1。

第一列第二列第三列第四列第一行

ee de be 7e第二行

ed dd

bd 7d第三行

eb db bb 7b第四行

e7 d7 b7

溫馨提示

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