ATmega8-Protues仿真之三 鍵盤掃描_第1頁(yè)
ATmega8-Protues仿真之三 鍵盤掃描_第2頁(yè)
ATmega8-Protues仿真之三 鍵盤掃描_第3頁(yè)
ATmega8-Protues仿真之三 鍵盤掃描_第4頁(yè)
ATmega8-Protues仿真之三 鍵盤掃描_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三講鍵盤掃描的學(xué)習(xí)提要:主要學(xué)習(xí)Atmega8通用數(shù)字I/O接口掃描鍵盤的應(yīng)用。前面我們學(xué)習(xí)了ATmega8的I/O口作為通用數(shù)字輸入/輸出口來用時(shí)對(duì)LED 數(shù)碼管控制的應(yīng)用,其實(shí)主要是作為輸出口的應(yīng)用。下面我們就來學(xué)習(xí)一下用作輸入口的應(yīng)用掃描鍵盤。3.1 按鍵的使用特點(diǎn):按鍵的應(yīng)用主要就是在按鍵閉合時(shí)改變電路的電平,但是一般情況下按鍵的開關(guān)都是機(jī)械彈性觸點(diǎn)開關(guān),它利用觸點(diǎn)的接觸和分離來實(shí)現(xiàn)電路的通斷,在按鍵按下和釋放時(shí)往往會(huì)產(chǎn)生抖動(dòng)干擾,所以要想辦法消除抖動(dòng)干擾。消除抖動(dòng)干擾即可用硬件設(shè)計(jì)也可用軟件設(shè)計(jì)的方法。硬件消抖就要在硬件設(shè)計(jì)上增加消抖電路,如用R-S觸發(fā)器等,這樣就會(huì)增加系統(tǒng)成本。

2、軟件消抖就是要在軟件中對(duì)按鍵進(jìn)行二次測(cè)試確認(rèn),既當(dāng)?shù)谝淮螜z測(cè)到按鍵被按下后,間隔10毫秒左右再次檢測(cè)該按鍵是否被按下,只有兩次都冊(cè)到按鍵按下時(shí)才確認(rèn)該按鍵被按下了,從而消除抖動(dòng)干擾。另外我們還要判別按鍵的釋放,為了設(shè)計(jì)方便,我們現(xiàn)不考慮長(zhǎng)時(shí)間按下按鍵的情況,只簡(jiǎn)單考慮檢測(cè)到按下和釋放才計(jì)作一次按鍵操作。3.2 單鍵盤掃描的應(yīng)用下面我們就用軟件消抖的方法來做個(gè)簡(jiǎn)單的應(yīng)用,我們用PB口接一個(gè)LED 數(shù)碼管,用來顯示數(shù)據(jù),用PC0端口接一個(gè)按鍵電路,我先畫出電路: 我們要實(shí)現(xiàn)的功能是每按一次按鍵,LED數(shù)碼管顯示的數(shù)據(jù)加1,到9回0。怎么樣不是很復(fù)雜吧,是不是很快就可以些出來了呢?下面是我寫的,你也

3、參考一下吧: 上面的程序沒考慮按鍵長(zhǎng)按的情況,如果象我們使用的鍵盤一樣,長(zhǎng)時(shí)間按下一個(gè)按鍵,在屏幕上就不斷的打印該字符,在這個(gè)例子里就是長(zhǎng)時(shí)間按下按鍵的話就對(duì)CountNum加一,而不是每次按下按鍵一次就加一一次,該怎么考慮呢,你可以試試能不能實(shí)現(xiàn)。3.3 矩陣按鍵(鍵盤掃描的應(yīng)用如果按鍵多的話,我們一般就要考慮節(jié)省I/O資源,通常會(huì)考慮采用矩陣式的接口。矩陣鍵盤由行和列組成,每個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別每個(gè)鍵盤的編碼。確定哪個(gè)按鍵的流程是:先在行和列的一個(gè)口中輸出高電平,在另一個(gè)行列口讀取一個(gè)掃描碼;然后在后一個(gè)行列口輸出高電平,在前一行列口讀取第二個(gè)掃描碼,然后查表

4、就可確定哪個(gè)按鍵被按下了。有了確定哪個(gè)按鍵的方法,就簡(jiǎn)單多了。鍵盤的處理程序也就基本出來了,因?yàn)樗鼈€(gè)單按鍵的掃描程序是很類似的:先確定有無(wú)按鍵按下,然后確定是哪個(gè)按鍵,返回該鍵值或處理對(duì)應(yīng)的任務(wù)就可以了。當(dāng)然這里也要考慮抖動(dòng)的消除,等待按鍵的斷開。下面我們就設(shè)計(jì)一個(gè)3X3的鍵盤來學(xué)習(xí)多按鍵的應(yīng)用。我先畫出電路圖,然后再描述要實(shí)現(xiàn)的功能: 我們要實(shí)現(xiàn)的目標(biāo)是每按下一個(gè)按鍵就要在LED數(shù)碼管中顯示出該按鍵對(duì)應(yīng)的值,按鍵斷開后顯示”-”,這個(gè)符號(hào)不在前面介紹的內(nèi)容中,你可以試著計(jì)算一下該值應(yīng)該是多少。好了,我給出一個(gè)參考: 資料整理自互聯(lián)網(wǎng),版權(quán)歸原作者! 歡迎訪問 www.XinShiL 新勢(shì)力單片機(jī)、嵌入式 Protues-ATmega8仿真 好了,我是在主函數(shù)中判斷是否有按鍵按下,然后消除抖動(dòng)干擾的,然后用 ScanKey 函數(shù)的到按鍵值,顯示在 LED 數(shù)碼管中,最后等待按鍵釋放;ScanKey 的功能主要就是的到掃描碼確定是哪個(gè)按鍵,返回該按鍵的值。 除了像上面的對(duì)按鍵的接口不停的掃描,還可以使用定時(shí)掃描,例如用一個(gè) 定時(shí)器,每隔 10MS 對(duì)按鍵接口進(jìn)行掃描,看是否有按鍵按下;也可以使用中斷 的方式去掃描,當(dāng)按鍵按下時(shí)由硬件電路產(chǎn)生一個(gè)中斷,MCU 響應(yīng)該中斷,確 定哪個(gè)按鍵被按下,處理相應(yīng)函數(shù)。 這些內(nèi)容在后面講到時(shí)鐘和中

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論