項(xiàng)目7 單片機(jī)的按鍵_第1頁(yè)
項(xiàng)目7 單片機(jī)的按鍵_第2頁(yè)
項(xiàng)目7 單片機(jī)的按鍵_第3頁(yè)
項(xiàng)目7 單片機(jī)的按鍵_第4頁(yè)
項(xiàng)目7 單片機(jī)的按鍵_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目7單片機(jī)的按鍵項(xiàng)目導(dǎo)讀:

單片機(jī)作為計(jì)算機(jī)的一類,同樣有輸入輸出(I/O)系統(tǒng)。按鍵是計(jì)算機(jī)系統(tǒng)外設(shè)常見(jiàn)的輸入設(shè)備。在單片機(jī)系統(tǒng)中,按鍵數(shù)目一般比較少,常采用獨(dú)立按鍵方式或矩陣按鍵方式實(shí)現(xiàn)系統(tǒng)輸入功能。本項(xiàng)目首先介紹機(jī)械按鍵相關(guān)知識(shí),再分析按鍵與單片機(jī)接口的連接,最后通過(guò)典型程序代碼段展示單片機(jī)按鍵功能。任務(wù)7.1獨(dú)立按鍵輸入控制LED狀態(tài)的設(shè)計(jì)與仿真任務(wù)描述:

本任務(wù)要求利用AT89C51單片機(jī)的I/O接口連接4個(gè)獨(dú)立按鍵和4位LED,使獨(dú)立按鍵動(dòng)作被LED的狀態(tài)反映出來(lái)。用Keil、Proteus等開發(fā)平臺(tái)進(jìn)行系統(tǒng)搭建、編程、仿真,實(shí)現(xiàn)獨(dú)立按鍵控制LED亮滅狀態(tài)的功能。

鍵盤是單片機(jī)應(yīng)用系統(tǒng)中常用的輸入設(shè)備。

在單片機(jī)應(yīng)用系統(tǒng)中,操作人員一般都是通過(guò)鍵盤向單片機(jī)系統(tǒng)輸入指令、地址、數(shù)據(jù),實(shí)現(xiàn)簡(jiǎn)單的人機(jī)交互。7.1.1鍵盤的工作原理

鍵盤實(shí)際上是一組按鍵開關(guān)的集合,平時(shí)按鍵開關(guān)總是處于斷開狀態(tài),當(dāng)按下鍵時(shí)它才閉合。按鍵開關(guān)結(jié)構(gòu)和按鍵產(chǎn)生的波形如下圖

所示。1.按鍵的識(shí)別

當(dāng)按鍵未按下時(shí),開關(guān)處于斷開狀態(tài),向P1.1輸入高電平;

當(dāng)按鍵按下時(shí),開關(guān)處于閉合狀態(tài),向P1.1輸入低電平。

因此,可通過(guò)讀入P1.1的高低電平狀態(tài)來(lái)判斷按鍵是否按下。2.按鍵的消抖

在單片機(jī)應(yīng)用系統(tǒng)中,通常按鍵開關(guān)為機(jī)械式開關(guān),由于機(jī)械觸點(diǎn)的彈性作用,按鍵開關(guān)在閉合時(shí)往往不會(huì)馬上穩(wěn)定地接通,斷開時(shí)也不會(huì)馬上斷開,因而在閉合和斷開的瞬間都會(huì)伴隨著一串抖動(dòng),其波形如下圖所示。2.按鍵的消抖

按下鍵時(shí)產(chǎn)生的抖動(dòng)稱為前沿抖動(dòng),松開鍵時(shí)產(chǎn)生的抖動(dòng)稱為后沿抖動(dòng)。如果不對(duì)抖動(dòng)做處理,會(huì)出現(xiàn)按一次鍵而確認(rèn)多次的情況,為確保按一次鍵只確認(rèn)一次,必須消除按鍵抖動(dòng)。

消除按鍵抖動(dòng)通常有硬件消抖和軟件消抖兩種方法。硬件消抖是通過(guò)在按鍵輸出電路上添加一定的硬件線路來(lái)消除抖動(dòng),一般采用R-S觸發(fā)器或單穩(wěn)態(tài)電路實(shí)現(xiàn)。

由兩個(gè)與非門組成的R-S觸發(fā)器消抖電路如下圖所示。

當(dāng)未按下按鍵時(shí),開關(guān)倒向下方,上面的與非門輸入高電平,下面的與非門輸入低電平,輸出端輸出高電平。

當(dāng)按下按鍵時(shí),開關(guān)倒向上方,上面的與非門輸入低電平,下面的與非門輸入高電平,由于R-S觸發(fā)器的反饋?zhàn)饔?,使輸出端迅速地變?yōu)榈碗娖?,而不?huì)產(chǎn)生抖動(dòng)波形,而當(dāng)按鍵松開時(shí),輸出端迅速地回到高電平而不會(huì)產(chǎn)生抖動(dòng)波形。

經(jīng)過(guò)圖中的R-S觸發(fā)器消抖后,輸出端的信號(hào)就變?yōu)闃?biāo)準(zhǔn)的矩形波。

軟件消抖是利用延時(shí)程序消除抖動(dòng)。

由于抖動(dòng)時(shí)間都比較短,因此可以這樣處理:當(dāng)檢測(cè)到有鍵被按下時(shí),執(zhí)行一段延時(shí)程序跳過(guò)抖動(dòng),再去檢測(cè),通過(guò)兩次檢測(cè)來(lái)識(shí)別一次按鍵,這樣就可以消除前沿抖動(dòng)的影響。

對(duì)于后沿抖動(dòng),由于在接收一個(gè)鍵位后,一般都要經(jīng)過(guò)一定時(shí)間再去檢測(cè)是否按鍵,這樣就自然跳過(guò)后沿抖動(dòng)時(shí)間而消除后沿抖動(dòng)了。當(dāng)然在第二次檢測(cè)時(shí)有可能發(fā)現(xiàn)又沒(méi)有鍵被按下,這是怎么回事呢?這種情況一般是線路受到外部電路干擾使輸入端產(chǎn)生干擾脈沖,這時(shí)就認(rèn)為鍵沒(méi)有被按下。7.1.2獨(dú)立式鍵盤與單片機(jī)的接口

獨(dú)立式鍵盤就是各按鍵相互獨(dú)立,每個(gè)按鍵各接一根I/O接口線,每根I/O接口線上的按鍵都不會(huì)影響其他的I/O接口線。

因此,通過(guò)檢測(cè)各I/O接口線的電平狀態(tài)就可以很容易地判斷出哪個(gè)按鍵被按下了。

7.1.2獨(dú)立式鍵盤與單片機(jī)的接口

獨(dú)立式鍵盤與單片機(jī)的接口如下圖所示。

獨(dú)立式鍵盤的電路配置靈活、簡(jiǎn)單。但每個(gè)按鍵要占用一根I/O接口線,在按鍵數(shù)量較多時(shí),I/O接口線需求很大。故一般僅在按鍵數(shù)量不多時(shí)采用這種形式。任務(wù)7.2矩陣按鍵輸入控制數(shù)碼管顯示的設(shè)計(jì)與仿真任務(wù)描述:

本任務(wù)要求利用AT89C52單片機(jī)的I/O接口連接16位矩陣按鍵,使矩陣按鍵動(dòng)作控制數(shù)碼管顯示。用Keil、Proteus等開發(fā)平臺(tái)進(jìn)行系統(tǒng)搭建、編程、仿真,實(shí)現(xiàn)矩陣按鍵控制數(shù)碼管數(shù)字的功能。7.2.1矩陣按鍵的結(jié)構(gòu)

矩陣鍵盤又叫行列式鍵盤。

它用兩組I/O接口線排列成行、列結(jié)構(gòu),一組設(shè)定為輸入,另一組設(shè)定為輸出,輸入線要帶上拉電阻器,鍵位設(shè)置在行、列線的交點(diǎn)上,按鍵的一端接行線,另一端接列線。

由4根行線和4根列線組成的4×4矩陣鍵盤如下圖所示。

行線為輸入,列線為輸出,可管理4×4=16個(gè)鍵。矩陣鍵盤占用的I/O接口線數(shù)目少,圖中4×4矩陣鍵盤總共只用了8根I/O接口線,比獨(dú)立式鍵盤少了一半,而且鍵位越多,情況越明顯。因此,在按鍵數(shù)量較多時(shí),往往采用矩陣鍵盤。

矩陣鍵盤的處理一般需注意兩個(gè)方面:鍵位的編碼和鍵位的識(shí)別。1.鍵位的編碼

矩陣鍵盤的編碼通常有兩種:二進(jìn)制組合編碼和順序排列編碼。

二進(jìn)制組合編碼如圖所示,每一根行線有一個(gè)編碼,每一根列線也有一個(gè)編碼,行線的編碼從下到上分別為1、2、4、8,列線的編碼從右到左分別為1、2、4、8,每個(gè)鍵位的編碼直接用該鍵位的行線編碼和列線編碼組合得到。1.鍵位的編碼

圖中4×4鍵盤從右到左、從下到上的鍵位編碼分別是十六進(jìn)制數(shù)11、12、14、18、21、22、24、28、41、42、44、48、81、82、84、88。這種編碼過(guò)程簡(jiǎn)單,但得到的編碼復(fù)雜、不連續(xù),程序處理起來(lái)不方便。

順序排列編碼如圖所示,每一行有一個(gè)行首碼,每一列有一個(gè)列號(hào),4行的行首碼從下到上分別為0、4、8、12,4列的列號(hào)從右到左分別是0、1、2、3,每個(gè)鍵位的編碼用行首碼加列號(hào)得到,即編碼=行首碼+列號(hào)。

圖中4×4鍵盤從右到左、從下到上的鍵位編碼分別是十六進(jìn)制數(shù)0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。這種編碼雖然編碼過(guò)程復(fù)雜,但得到的編碼簡(jiǎn)單、連續(xù),程序處理起來(lái)方便。

現(xiàn)在矩陣鍵盤一般都采用順序排列編碼。2.鍵位的識(shí)別

矩陣鍵盤鍵位的識(shí)別可分為兩步:第一步是檢測(cè)鍵盤上是否有鍵被按下;第二步是識(shí)別哪一個(gè)鍵被按下。

第一步,檢測(cè)鍵盤上是否有鍵被按下的處理方法:將列線送入全掃描字,讀入行線的狀態(tài)來(lái)判別。

2.鍵位的識(shí)別

以圖為例,其具體過(guò)程如下:P2口低4位輸出都為低電平,然后讀連接行線的P1口低4位(P1內(nèi)部自帶上拉電阻器),如果讀入的內(nèi)容都是高電平,說(shuō)明沒(méi)有鍵被按下,則不用做第二步;如果讀入的內(nèi)容不全為1,則說(shuō)明有鍵被按下,再做第二步,識(shí)別是哪一個(gè)鍵被按下。

第二步,識(shí)別鍵盤中哪一個(gè)鍵被按下的處理方法:將列線逐列置成低電平,檢查行輸入狀態(tài),稱為逐列掃描。

其具體過(guò)程如下:從P2.0開始,依次輸出0,置對(duì)應(yīng)的列線為低電平,其他列為高電平,然后從P1低4位讀入行線狀態(tài)。在掃描某列時(shí),如果讀入的行線全為1,則說(shuō)明被按下的鍵不在此列;如果讀入的行線不全為1,則被按下的鍵在此列,而且是該列與0電平行線相交的點(diǎn)上的鍵。

為求取編碼,在逐列掃描時(shí),可用計(jì)數(shù)器記錄下當(dāng)前掃描列的列號(hào),檢測(cè)到第幾行有鍵被按下,就用該行的行首碼加列號(hào)得到當(dāng)前按鍵的編碼。7.2.2矩陣鍵盤的工作方式

矩陣鍵盤常采用查詢工作方式和中斷工作方式。

查詢工作方式是直接在主程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論