英創(chuàng)公司ARM9系列工控主板預裝正版WinCE操作系統,板載了豐富的通訊接口,GPIO,存儲器等資源,支持TFT LCD顯示及觸摸,支持標準USB鍵盤,鼠標輸入。在實際使用中,客戶如果不需要標準鍵盤輸入,僅需要一些數字鍵或功能鍵(比如方向鍵),此時可通過外擴矩陣鍵盤來實現。
1、矩陣鍵盤擴展硬件電路
英創(chuàng)ARM9工控主板可通過GPIO或精簡ISA總線擴展矩陣鍵盤,通過GPIO擴展時,程序直接驅動IO作為掃描輸入輸出,比較簡單,此處主要介紹通過ISA總線擴展矩陣鍵盤的方法。
圖1是通過ISA總線擴展矩陣鍵盤的原理圖,用1片74HCT139對總線地址譯碼,再通過74HCT273實現8位數字輸出用于掃描輸出,通過74HCT245回讀掃描碼,僅需要3個器件,就能實現8X8矩陣鍵盤擴展。
2、矩陣鍵盤擴展驅動程序
通過GPIO擴展和ISA擴展鍵盤的程序流程是一致的,驅動程序每隔20ms掃描一次鍵盤,判斷是否有按鍵輸入,如果確認了按鍵輸入,則產生WM_KEYDOWN消息,緊接著判斷按鍵是否釋放,按鍵釋放后產生WM_KEYUP消息,然后進行下一次掃描,如此循環(huán)。圖2是按鍵掃描程序的流程圖。
根據上述流程圖,英創(chuàng)公司封裝了KEY_API類,該類提供兩個方法函數,如下:
// 打開鍵盤掃描
// nRow,nCol矩陣鍵盤行列數,最大為8X8
BOOL OpenKeyPad( int nRow, int nCol );
// 關閉鍵盤掃描
BOOL CloseKeyPad( );
通過KEY_API類,在應用程序中,僅需要調用OpenKeyPad()函數,就能打開鍵盤掃描程序。當鍵盤上某個鍵按下時,驅動程序將產出WM_KEYDOWN和WM_KEYUP消息。這兩個消息的附加參數(wParam和lParam)包含的是虛擬鍵代碼和掃描碼等信息,應用程序中可通過TranslateMessage函數將WM_KEYDOWN和WM_KEYUP消息組合轉換為一條WM_CHAR消息,該消息的wParam附加參數包含了按鍵字符的ASCII碼。
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35616
發(fā)布評論請先 登錄
相關推薦
評論