<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è) > 嵌入式系統 > 設計應用 > 基于Murphypinyin的嵌入式鍵盤(pán)設計

基于Murphypinyin的嵌入式鍵盤(pán)設計

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

  引 言

本文引用地址:http://dyxdggzs.com/article/265782.htm

  隨著(zhù)嵌入式系統的飛速發(fā)展,在嵌入式手持設備中,人機交互設備是與用戶(hù)接觸最多的部分,最能夠直接快速地體現出該設備的性能。所以,是否有一個(gè)友好的、快速的、可靠的人機交互設備已經(jīng)成為衡量一款手持設備的重要指標。在嵌入式人機交互設備中,鍵盤(pán)由于其具有很高的準確性和可靠性,能夠適應各種惡劣的工作環(huán)境,并且具有很長(cháng)的使用壽命,而得到廣泛應用。

  本文根據手持終端的特點(diǎn),設計出一款矩陣鍵盤(pán),并在平臺下開(kāi)發(fā)出鍵盤(pán)的驅動(dòng)程序。采用Qt/Embedded構建圖形界面,通過(guò)對Qt/Embedded自帶輸入法的分析,結合Murphpinyin中文輸入法軟件包,構建了一款可輸入數字、中/英文的嵌入式鍵盤(pán)。

  1 硬件設計

  本系統的硬件部分主要是一個(gè)4列5行的矩陣鍵盤(pán),如圖1所示。其中列線(xiàn)COL0~COL3使用了S3C2440的4個(gè)中斷引腳——EINT10、ENIT13、EINT15、EINT20,并且每根列線(xiàn)都有一個(gè)4.7 kΩ的上拉電路,把中斷引腳電平拉高,確保按鍵空閑時(shí)不會(huì )觸發(fā)中斷;行線(xiàn)ROW0~ROW4使用的是S3C2440的5個(gè)普通I/O口——GPE11、 GPE13、GPG3、GPG6、GPG11。這里需要注意的問(wèn)題是,一定要確保列線(xiàn)所用的中斷在的各個(gè)設備中尚未使用到,否則在后面的驅動(dòng)程序中將會(huì )造成驅動(dòng)程序初始化失敗。



  考慮到手持終端操作的方便性,將所有的按鍵進(jìn)行重新布局,如圖2所示。為了延長(cháng)手持設備的使用壽命、提高可靠性,增加了電源按鍵Power。另外,考慮到手持設備的低功耗要求,增加了背光控制按鈕Back-Light,通過(guò)控制LCD_PWREN引腳的高低電平,控制LCD背光的開(kāi)關(guān)。其中電源按鍵 Power、背光控制按鍵BackLight為單獨按鍵,直接與S3C2440的中斷引腳相連。本文重點(diǎn)對矩陣鍵盤(pán)做詳細介紹,電源按鍵和背光控制按鍵的處理機制與矩陣鍵盤(pán)類(lèi)似,這里不再做介紹。



  2 軟件設計

  2.1 矩陣鍵盤(pán)的驅動(dòng)程序設計

  矩陣鍵盤(pán)是作為L(cháng)inux的一個(gè)字符設備注冊到系統中的。為了降低對系統資源的損耗,采用中斷處理函數對按鍵做處理;同時(shí)考慮到按鍵的抖動(dòng)問(wèn)題,采用定時(shí)器來(lái)消除抖動(dòng)。

  該驅動(dòng)程序的流程如圖3所示。首先,使用S3C2440_Kb_init()函數將鍵盤(pán)作為一個(gè)字符設備進(jìn)行注冊,初始化行線(xiàn)引腳為:輸出、非上拉,并將所有行輸出置為低電平;注冊該鍵盤(pán)設備。初始化列線(xiàn)所連接的中斷引腳為:輸入、下降沿觸發(fā)中斷,并建立中斷與中斷處理函數Key_interrupt()的連接。



  當有按鍵按下后,由于所有的行為低電平,必然有一行和一列線(xiàn)導通,從而將相應的列線(xiàn)拉低,觸發(fā)中斷。然后,中斷處理函數Key_interrupt()記錄相應的中斷號碼,由于按鍵存在抖動(dòng),單憑一次中斷的觸發(fā)就判定相應的按鍵按下很不可靠,所以在中斷觸發(fā)后開(kāi)啟定時(shí)器kb_timer對按鍵狀態(tài)再次進(jìn)行判定。

  上層應用程序使用S3C2440_Kb_open()打開(kāi)鍵盤(pán)設備,開(kāi)啟列線(xiàn)中斷,初始化定時(shí)器。當中斷觸發(fā)后,開(kāi)啟定時(shí)器,定時(shí)器定時(shí)時(shí)間到后,觸發(fā)定時(shí)器中斷kb_timer_handler()。kb_timer_handler()首先會(huì )調用鍵盤(pán)掃描函數 Scan_keyboard()掃描按鍵狀態(tài),Scan_keyboard()流程如圖4所示。如果經(jīng)過(guò)3次鍵盤(pán)掃描,每次都掃描到相同的按鍵值被按下,則證明確實(shí)有按鍵被按下,Scan_keyboard()函數返回:KEYDOWN。如果按本次按鍵值與上一次按鍵值不同,則保存本次按鍵值到循環(huán)隊列,這樣可以不保存重復數據到緩沖隊列。如果連續10次掃描到按鍵的狀態(tài)都不為KEY_DOWN,則證明按鍵已經(jīng)彈起,關(guān)閉定時(shí)器kb_timer。



  S3C2440_Kb_read()函數負責從循環(huán)隊列中讀取按鍵值反饋給上層應用程序。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



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

關(guān)鍵詞: Murphypinyin Linux

評論


相關(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>