在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM9的多行列鍵盤設(shè)計(jì)及其驅(qū)動(dòng)實(shí)現(xiàn)

            基于ARM9的多行列鍵盤設(shè)計(jì)及其驅(qū)動(dòng)實(shí)現(xiàn)

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

            3.3 掃描程序

            的工作原理是通過(guò)的行線和列線的狀態(tài)來(lái)判斷鍵盤中有無(wú)按鍵被按下。鍵盤掃描程序的功能就是用來(lái)判斷處于按下狀態(tài)的按鍵的具體位置及取得相應(yīng)的鍵碼值,因此掃描程序的是鍵盤模塊的核心。

            鍵盤掃描程序的主要有兩種,即輪詢方式和中斷方式[5]。在本例中,利用操作系統(tǒng)定時(shí)器隊(duì)列與輪詢掃描方式結(jié)合的方法對(duì)鍵盤的程序進(jìn)行了,主要是以下兩個(gè)方面的原因。其一是AT91RM9200芯片的中斷信號(hào)線是非常寶貴的硬件資源,每一組GPIO端口只配置了一根中斷信號(hào)線,即32個(gè)GPIO端口共享一條信號(hào)線。這樣若采用中斷方式,則至少需要占用一條芯片中斷信號(hào)線,對(duì)多的鍵盤,如果其所采用的 GPIO端口不是來(lái)自于同一組時(shí),就需要占用多條中斷信號(hào)線。而且若其他設(shè)備使用的GPIO端口與鍵盤使用的GPIO口屬于同一組,那么在兩種設(shè)備的程序中,必須進(jìn)行中斷共享,這樣不僅使系統(tǒng)的軟件設(shè)計(jì)更為復(fù)雜,且易產(chǎn)生中斷丟失和中斷竟態(tài)等問(wèn)題,使設(shè)備性能受到影響。其二鍵盤是系統(tǒng)中屬于一種相對(duì)低速的設(shè)備,采用輪詢方式完全可以滿足鍵盤的輸入要求。

            ARM-Linux操作系統(tǒng)提供了良好的定時(shí)器機(jī)制,因此通過(guò)簡(jiǎn)單定時(shí)器操作,就可以以固定間隔對(duì)鍵盤的狀態(tài)進(jìn)行掃描并對(duì)按鍵事件進(jìn)程處理,固定間隔的大小可根據(jù)系統(tǒng)需求進(jìn)行配置,定義器的詳細(xì)操作可參見文獻(xiàn)[1]。如前所述,鍵盤掃描程序的功能就是對(duì)鍵盤的狀態(tài)進(jìn)行判斷和處理。若無(wú)按鍵按下,則掃描直接返回;若有按鍵按下,則對(duì)被按下鍵的位置進(jìn)行判斷,并將相應(yīng)的鍵碼值寫入緩沖區(qū)中。因?yàn)楸纠械逆I盤是為POS機(jī)配置,因此按鍵的準(zhǔn)確性是至關(guān)重要,因此在掃描代碼中對(duì)按鍵值進(jìn)行了多次驗(yàn)證,下面是本例中使用的鍵盤掃描程序的偽代碼:
            int Scan_Keyboard()
            {

            定義并初始化變量;

            取得鍵碼放置緩沖區(qū)的自旋鎖;

            if 緩沖區(qū)中還有空;

            ① 依次判斷各GPIO口的狀態(tài),若無(wú)低電平,則無(wú)鍵按下,直接退出if語(yǔ)句;否則,有鍵按下,且當(dāng)前檢驗(yàn)的GPIO口連接的行線即為按鍵所在的行;

            ② 給鍵盤列線連接的數(shù)據(jù)線依次送入高電平,再通過(guò)判斷按鍵行線所在的GPIO端口的電平狀態(tài),得到按鍵所在的列;

            延時(shí)一小段時(shí)間,以消除鍵盤抖動(dòng);

            ③ 再向給鍵盤列線連接的數(shù)據(jù)線全送低電平,使用代碼段①再次判斷是否有鍵按下,若有,則取得按鍵所在的行;

            ④ 同樣使用代碼段②重新判斷按鍵所在的列;

            ⑤ 判斷第一次得到的按鍵的行與列是否與第二次完全一樣,若完全相同,則可進(jìn)入下一步,否則退出if語(yǔ)句;

            ⑥ 重新向給鍵盤列線連接的數(shù)據(jù)線全送低電平,并判斷按鍵是否彈起,若仍處于按下狀態(tài),則繼續(xù)等待,否則根據(jù)行與列,轉(zhuǎn)化為相應(yīng)鍵值,并寫入緩沖區(qū);

            if語(yǔ)句結(jié)束;

            釋放自旋鎖;

            函數(shù)返回 0;
            }

            完成驅(qū)動(dòng)程序代碼編寫后,就可以將鍵盤的驅(qū)動(dòng)程序加載到ARM-Linux內(nèi)核中了,既可以采用靜態(tài)加載方式,也可以采用動(dòng)態(tài)方式進(jìn)行加載。加載后,在應(yīng)用程序中鍵盤的編程使用方式與其他字符設(shè)備一樣。采用本文所述方式設(shè)計(jì)的鍵盤,目前已配置在筆者參與開發(fā)的POS機(jī)中交用戶使用,據(jù)用戶測(cè)試,鍵盤的輸入準(zhǔn)確率和反應(yīng)時(shí)間都達(dá)到了設(shè)計(jì)要求。

            4、結(jié)束語(yǔ)

            本文以運(yùn)行ARM-Linux的AT91RM9200系統(tǒng)為基礎(chǔ),提出了一種在上擴(kuò)展特殊鍵盤的新設(shè)計(jì)方法,并對(duì)鍵盤擴(kuò)展的硬件設(shè)計(jì)和驅(qū)動(dòng)軟件開發(fā)都作了詳細(xì)說(shuō)明。本設(shè)計(jì)方法利用數(shù)據(jù)鎖存方式替代了常規(guī)的GPIO擴(kuò)展,提高了系統(tǒng)硬件的資源利用率,這一思想也為在其他嵌入式設(shè)備擴(kuò)展多鍵盤提供了一種新的設(shè)計(jì)思路。

            參考文獻(xiàn)
            [1] 魏永明,駱剛,姜君(譯).Linux設(shè)備驅(qū)動(dòng)程序(第二版)[M].中國(guó)電力出版社.2002.4
            [2] ATMEL.AT91RM9200 User Manual.2005
            [3] 張秀松.AT91RM9200的嵌入式工業(yè)控制系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,1-2:45-47
            [4] 王建忠,田力,武凌.20T核的AT91RM9200微控制器在嵌入式家庭網(wǎng)關(guān)中的應(yīng)用[J].微計(jì)算機(jī)信息, 2004,20(5):49-51
            [5] 馬忠梅.ARMLinux嵌入式系統(tǒng)教程[M].北京航空航天大學(xué)出版社.2004.9

            DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY


            pos機(jī)相關(guān)文章:pos機(jī)原理



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

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉