嵌入式KL25鍵盤中斷實驗_第1頁
嵌入式KL25鍵盤中斷實驗_第2頁
嵌入式KL25鍵盤中斷實驗_第3頁
嵌入式KL25鍵盤中斷實驗_第4頁
嵌入式KL25鍵盤中斷實驗_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗五 鍵盤中斷實驗一、實驗?zāi)康?熟練運用CodeWarrior嵌入式開發(fā)系統(tǒng)環(huán)境、C語言、調(diào)試方式。2復(fù)習(xí)串行通信接口SCI的內(nèi)容。3加強鍵盤中斷基本原理及編程原理的理解。4理解“行掃描”法的原理并能進行鍵值識別和鍵值編碼。5理解鍵盤接線原理圖如圖5-1。二、知識要點本實驗采用的是4×4矩陣式鍵盤以下簡稱鍵盤。PTG4、PTD2、PTD3、PTD7分別接四根列線,定義為輸入且上拉,PTG0PTG3分別接四根行線,且定義為輸出。行掃描法是使鍵盤的某一行輸出為低電平,其余行為高電平,然后讀取列值,如果列值中有某位為低電平,則說明該行和列交點處的鍵被按下;假設(shè)為全高則再掃描下一行,直至掃

2、描完全部的行線為止。這樣就可以確定是哪一行哪一列交點的鍵被按下。MCU與鍵盤接線原理圖:鍵盤的c語言編程:1初始化,先按IO口方式初始化,即定義列線為輸入且上拉,行線為輸出,然后依輸入口的鍵盤功能初始化相應(yīng)的寄存器。2定義鍵值表3掃描一次,讀取鍵值4獲得鍵盤定義值行掃描法是使鍵盤的某一行輸出為低電平,其余行為高電平,然后讀取列值,如果列值中有某位為低電平,則說明該行和列交點處的鍵被按下;假設(shè)為全高則再掃描下一行,直至掃描完全部的行線為止。這樣就可以確定是哪一行哪一列交點的鍵被按下。設(shè)置鍵盤中斷允許寄存器,當(dāng)鍵盤有鍵被按下時,立即產(chǎn)生中斷,中斷程序處理按鍵事件,比方確定哪個鍵被按下,然后轉(zhuǎn)換為該

3、鍵的定義值。鍵盤的鍵面標(biāo)示碼即定義值與MCU 識別的鍵值對應(yīng)關(guān)系通過列表對應(yīng)起來,即鍵盤定義表對應(yīng)表示。當(dāng)通過“行掃描”法獲得某個鍵的鍵值時,通過查表法就可以得到它的定義值。該鍵盤中斷方式程序的主程序主體是一個死循環(huán),且是一個空循環(huán)體,所有處理的過程代碼放在中斷程序中。三、演示性實驗在光盤資料中提供讀者鍵盤實例程序文件夾。編程采用標(biāo)準(zhǔn)要求編寫,將鍵盤獨立成一個構(gòu)件,如C 語言中,形成key.h 頭文件和key.c 源文件。頭文件對鍵盤的所用端口寄存器或引腳進行宏定義以及初始化函數(shù)和驅(qū)動函數(shù)聲明。源文件對初始化函數(shù)和驅(qū)動函數(shù)進行定義。具體實現(xiàn)代碼見光盤。四、設(shè)計性實驗要求按下的一個鍵的鍵值和鍵面

4、定義值鍵的ASCII 碼值通過串口在PC 方軟件界面顯示。當(dāng)鍵值被按下時,高端虛擬鍵盤被按下,或者在高端PC 機中顯示對應(yīng)按鍵值。1、資源使用鍵盤的數(shù)據(jù)線分別接在MCU 口的 號引腳、口的 號引腳。2、硬件設(shè)計標(biāo)識引腳名圖 5-2 4×4 鍵盤按鍵的信息顯示在PC機界面的連線圖3、軟件設(shè)計1MCU 端程序流程圖2編程1下面填寫主程序main。填寫主程序main.c鍵盤中斷程序填寫C 語言編寫的鍵盤中斷程序#include "includes.h" /包涵總頭文件int main(void) /1.聲明主函數(shù)使用的局部變量uint_8 * g_DispalyInit

5、; /2.關(guān)總中斷 enter_critical(); /3.初始化底層模塊 LEDInit(); /LED初始化 LCDInit(); /LCD初始化 KBInit(); uart_init (UART_1,BUSCLK, 9600); /串口1、2使用總線時鐘24000Khz uart_send_string(UART_1, "Hello Uart_1!rn"); /鍵盤初始化 tpm_init(TPM0,TPM_CLKSRC_PLL,1000); /初始化TPM模塊,1ms中斷一次 /4.緩沖區(qū)賦值 g_DispalyInit = (uint_8 *)"Wa

6、it Receiving.Soochow 2013.01." /5.開中斷 tpm_enable_int(0); init_critical(); /6.lcd顯示初始字符 LCDShow(g_DispalyInit); /= for(;) /=return 0; 2PC端軟件的SCI接收函數(shù)填寫PC機的SCI接收函數(shù)/=/文件名稱:isr.c/功能概要: 中斷底層驅(qū)動構(gòu)件源文件/版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心( )/更新記錄:2013-03-12 V1.2 /=#include "includes.h"void tpm0_isr

7、(void) static uint_32 TPMCounter = 0; /計時器 uint_8 value; /鍵盤變量 static uint_8 LEDindex=0; /位選口聲明 uint_8 LEDDataBuffer4; /LED顯示緩沖區(qū)uint_8 i;/LED緩沖區(qū)賦值 LEDDataBuffer0='0' LEDDataBuffer1='2' LEDDataBuffer2='3' LEDDataBuffer3='5' /LCD顯示緩沖區(qū),其中.表示按下的數(shù)字 uint_8 kbv32="The k

8、eyboard you just input is ." if(TPM_SC_REG(TPM0_BASE_PTR) & TPM_SC_TOF_MASK) = TPM_SC_TOF_MASK) TPMCounter+; BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR); /中斷置標(biāo)志位寫1清0 /處理LED部分 LEDindex+; /位選位+1if (LEDindex>=4) LEDindex=0; /大于4位選口置0i=LEDchangeCode(LEDDataBufferLEDindex-'0'); /轉(zhuǎn)

9、碼 LEDshow1(LEDindex,i); /顯示LEDif(TPMCounter>100) TPMCounter = 0; /鍵盤得到掃描值 value = KBScanN(2); /掃描鍵值,存于value中 if(KBDef(value) != 0xff) /發(fā)送鍵值 /修改.成為按鍵值 kbv31 = KBDef(value); /通過LCD顯示出來 LCDShow(kbv); uart_send1(UART_1, kbv31); 五、注意事項實驗前應(yīng)該首先確認(rèn)所使用硬件設(shè)備的正常與否。MCU測試、鍵盤測試方法如第二章所述,否則,假設(shè)出現(xiàn)問題,將難以確認(rèn)問題所在。不過,第二章

10、所述鍵盤測試的方法是軟件的方法,也可以采用硬件方法,方法如下:將擴展板供電,取一根導(dǎo)線,一端接小燈,一端接鍵盤某個行線引腳;用手按住該行某個按鍵不放,另取一根導(dǎo)線,一端接擴展板GND,另一端接鍵盤列線。假設(shè)小燈亮,該按鍵正常,否則不正常。另外,請注意:1、如果實驗箱沒有所需的實驗?zāi)K,可利用實驗箱中的擴展區(qū)按照所設(shè)計的電路圖連線,進行實驗。2、送電實驗前,先將所編寫的程序編譯后,下載至MCU中,接著將所需部件和導(dǎo)線連接至實驗箱中,然后送電。注意:不要帶電操作。3、鍵盤接上排插孔無需連線(自動),接下排插孔需手動連線(手工)。端口和不同引腳連接鍵盤,其他程序不改變,觀察效果。六、實驗總結(jié)通過該實驗上機,熟練運用CodeWarrior嵌入式開發(fā)系統(tǒng)環(huán)境、C語言、調(diào)試方式。復(fù)習(xí)串行通信接口SCI的內(nèi)容。加強鍵盤中斷基本原理及編程原理的理解。理解“行掃描”法的原理并能進行鍵值識別和鍵值編碼。,of rural drinking water sources, protection of drinking w

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論