<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Windows CE的7×3手機鍵盤(pán)驅動(dòng)實(shí)現

基于Windows CE的7×3手機鍵盤(pán)驅動(dòng)實(shí)現

作者: 時(shí)間:2012-03-22 來(lái)源:網(wǎng)絡(luò ) 收藏

對于7×3的,下圖為物理按鍵和掃描碼的對應關(guān)系(掃描碼為16進(jìn)制):

 

5列(KP_MKOUT4)

6列(KP_MKOUT5)

7列(KP_MKOUT6)

1行(KP_MKIN0)

0x04

0x05

0x06

2行(KP_MKIN1)

0x14

0x15

0x16

3行(KP_MKIN2)

0x24

0x25

0x26

4行(KP_MKIN3)

0x34

0x35

0x36

5行(KP_MKIN4)

0x44

0x45

0x46

6行(KP_MKIN5)

0x54

0x55

0x56

7行(KP_MKIN6)

0x64

0x65

0x66

7. ScanCodeToVKeyEx函數

此函數提供掃描碼到虛擬鍵的映射操作,主要調用MapVkeyFromSCode函數完成從掃描碼到虛擬按鍵的映射。在 MapVkeyFromSCode函數的實(shí)現過(guò)程中,首先需要按照自己的要求和物理鍵盤(pán)的布局確定SC2VKMap[i][j]二維數組,其中數組的第一列為物理鍵盤(pán)上每個(gè)按鍵所對應的掃描碼,第二列為第一列掃描碼所對應的虛擬按鍵,開(kāi)發(fā)者可以根據實(shí)際需要確定掃描碼和虛擬按鍵的對應關(guān)系,通過(guò)這個(gè)二維數組的設定,就可以在程序運行的過(guò)程中,當檢測到有按鍵被按下時(shí),通過(guò)KeypdPdd_GetEventEx函數產(chǎn)生的掃描碼,然后通過(guò)查表的方式得到掃描碼所對應的虛擬按鍵值。下表為掃描碼與虛擬碼的對應關(guān)系表:

 

5列

6列

7列

掃描碼

虛擬碼

物理按鍵

掃描碼

虛擬碼

物理按鍵

掃描碼

虛擬碼

物理按鍵

1行

0x04

VK_A

預留

0x05

VK_B

0x06

VK_C

預留

2行

0x14

VK_D

0x15

VK_E

菜單鍵

0x16

VK_F

3行

0x24

VK_G

OK鍵

0x25

VK_H

0x26

VK_I

Cancel鍵

4行

0x34

VK_1

1

0x35

VK_2

2

0x36

VK_3

3

5行

0x44

VK_4

4

0x45

VK_5

5

0x46

VK_6

6

6行

0x54

VK_7

7

0x55

VK_8

8

0x56

VK_9

9

7行

0x64

VK_J

*

0x65

VK_0

0

0x66

VK_K

#

其中VK_A、VK_B、VK_C、VK_D、VK_E、VK_F、VK_G、VK_H、VK_I、VK_J、VK_K、VK_1、VK_2、 VK_3、VK_4、VK_5、VK_6、VK_7、VK_8、VK_9、VK_0對應的輸出為A、B、C、D 、E、F、G、H、I、J、K、1、2、3、4、5、6、7、8、9、0,但實(shí)際顯示的時(shí)候可以按照具體的要求進(jìn)行定義,完成物理按鍵對應的輸出值,每個(gè)按鍵所實(shí)現的功能是由上層應用程序定義的,這里再不詳細敘述。

8. KeyPadGpioConfigure函數

此函數的功能是完成所對應GPIO口的配置,在具體函數的實(shí)現和開(kāi)發(fā)中必須按照物理鍵盤(pán)的布局及芯片引腳占用情況進(jìn)行相應的更改的。下面為KeyPadGpioConfigure函數的實(shí)現:

XLLP_UINT32_T GpioDirOutList[]={3,107,108,96, }; //3個(gè)輸出端口引腳號

XLLP_UINT32_T GpioDirInList[]={7,100,101,102,97,39,90,91}; //矩陣鍵盤(pán)7個(gè)輸出端口引腳號XLLP_UINT32_T GpioAltFnPinList[]={10,39,90,91,96,97,100,101,102,107,108};//矩陣鍵盤(pán)GPIO引腳 XLLP_UINT32_T GpioAltFnValList[]={10,1,1,1,3,1,1,1,1,2,2}; // GPIO對應的附加功能選擇

if(v_pGPIOReg != 0) //判斷鍵盤(pán)GPIO寄存器是否已經(jīng)被配置

{

XllpGpioSetDirectionIn(v_pGPIOReg, GpioDirInList); //設置GPIO輸入端口方向

XllpGpioSetDirectionOut(v_pGPIOReg, GpioDirOutList); //設置GPIO輸出端口方向

XllpGpioSetOutput0(v_pGPIOReg, GpioDirOutList); //設置GPIO輸出端口

XllpGpioSetAlternateFn(v_pGPIOReg, GpioAltFnPinList, GpioAltFnValList); //設置GPIO附加功能

}

if(v_pKeyPadRegs != 0) //判斷鍵盤(pán)寄存器是否已經(jīng)被配置

{

v_pKeyPadRegs->kpControlReg=(MATRIX_KP_NUMBER_OF_ROWS| MATRIX_KP_NUMBER_OF_COLUMNS | MAT_SCAN_LINE4 | MAT_SCAN_LINE5 | MAT_SCAN_LINE6 | AUTO_SCAN_ON_ACTIVITY | MATRIX_INTR_ENABLE | MATRIX_KP_ENABLE ) ; //設置矩陣鍵盤(pán)控制寄存器初值

retval = XLLP_TRUE;

}

return(retval);

9. 結束語(yǔ)

本文作者創(chuàng )新點(diǎn):完整地分析了Windows CE操作系統中7×3矩陣鍵盤(pán)的基本原理及其驅動(dòng)程序模型,此設計是按照目前通用的手機鍵盤(pán)開(kāi)發(fā)。并從實(shí)現方法的角度深入剖析了Windows CE中矩陣鍵盤(pán)掃描碼的獲取流程、將掃描碼映射到虛擬碼的方法,最后給出了矩陣鍵盤(pán)所對應GPIO口的配置方法,對于類(lèi)似系統的矩陣鍵盤(pán)驅動(dòng)開(kāi)發(fā)具有重要的參考價(jià)值。

參考文獻

[1] 阿蘭特嵌入式實(shí)驗室.PXA27x處理器開(kāi)發(fā)手冊,2005:825-826.

[2] 楊翠娥,王麗敏,王景敏.實(shí)時(shí)系統VxWorks下設備驅動(dòng)程序的編寫(xiě)[J].微計算機信息2004年第一期

[3] 傅曦.Windows CE 嵌入式開(kāi)發(fā)入門(mén)——基于Xscale架構[M] 北京.人民郵電出版社,2006 :227-230.

[4] 微軟.Platform Builder幫助文檔.

[5] Windows CE設備驅動(dòng)程序開(kāi)發(fā)指南:15-16.


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 矩陣鍵盤(pán) WindowsCE MDD PDD

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>