新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 4×4矩陣鍵盤的工作原理與編程

        4×4矩陣鍵盤的工作原理與編程

        作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/201611/321762.htm

        =====================================================

        矩陣鍵盤鍵值查找程序

        鍵值存入30H單元

        =====================================================

        KEY_SCAN:;識別鍵盤有無鍵按下子程序

        MOVP1,# 0F0H;置列線為0,行線為1

        MOVA,P1;讀P1口

        ANLA,#0F0H;取出高四位

        MOVB,A;暫存到B

        MOVP1,#0FH;置列線為1,行線為0

        MOVA,P1;讀P1口

        ANLA,#0FH;取出低四位

        ORLA,B;高四位與低四位邏輯或運算重新組合

        CJNEA,#0FFH,KEY_IN1;0FFH為無按鍵按下

        RET

        KEY_IN1:;識別具體按鍵值子程序

        MOVB,A;將按鍵的特征編碼暫存于B

        MOVDPTR,#KEYTABLE

        MOVR3,#0FFH

        KEY_IN2:

        INCR3;順序碼加1

        MOVA,R3

        MOVCA,@A+DPTR;查表

        CJNEA,B,KEY_IN3;比較,若相同則找到按鍵的特征編碼。

        MOVA,R3;找到特征編碼后,取順序碼

        MOV30H,A;存入30H單元

        RET

        KEY_IN3:

        CJNEA,#00H,KEY_IN2;末完,繼續(xù)查

        RET;00H為結(jié)束碼

        ;特征編碼與順序編碼的對應(yīng)關(guān)系表

        KEY_TABLE:

        DB0EEH,0EDH,0EBH,0E7H,0DEH;0,1,2,3,4,順序碼

        DB0DDH,0DBH,0D7H,0BEH,0BDH;5,6,7,8,9,順序碼

        DB0BBH,0B7H,07EH,07DH,07BH, 077H;A,B,C,D,E,F順序碼

        DB00H;結(jié)束碼

        2、8位數(shù)碼管顯示程序的編程方法

        根據(jù)要使用的數(shù)碼管的具體位置來確定掃描初值和掃描方向。

        根據(jù)使用數(shù)碼管的個數(shù)來確定掃描的位數(shù)。

        準備好要顯示的數(shù)據(jù),放入相應(yīng)的顯示單元中。

        ===========================================================

        8位數(shù)碼管顯示子程序

        ;從右至左依次點亮8個數(shù)碼管

        ===========================================================

        DISPLAY:

        MOV R1,#07FH;掃描初值送入R1

        MOV R2,#08H;掃描位數(shù)送入R2

        MOV R0,#30H;開始填充顯示單元

        DISP1:MOV A,@R0;顯示內(nèi)容送入A

        MOV DPTR,#TABLE;獲得表頭

        MOVC A,@A+DPTR;查表獲得顯示數(shù)據(jù)

        MOV P0,A;顯示單元數(shù)據(jù)

        MOV P2,R1;開始顯示當(dāng)前位

        MOV A,R1;準備顯示下一位

        RR A

        MOV R1,A

        INC R0;取下一個單元地址

        LCALL DELAY2MS;延時2 MS

        DJNZ R2,DISP1;重復(fù)顯示下一個

        RET;顯示完成,返回

        因鍵值顯示只需用一位數(shù)碼管,可將上面的顯示程序進行優(yōu)化,得到下面的顯示程序。

        ====================================================

        鍵值顯示子程序

        ====================================================

        KEY_PLAER:

        MOVA,30H;鍵值數(shù)據(jù)送入A

        MOVDPTR,#TABLE;取段碼表地址

        MOVCA,@A+DPTR;查顯示數(shù)據(jù)對應(yīng)段碼

        MOVP0,A;段碼送入P0口

        CLRP2.7;第一個數(shù)碼管顯示

        CALLDELAY2MS

        SETBP2.7

        RET

        TABLE:

        DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

        DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;0-F

        三、演示程序的功能

        當(dāng)你按下矩陣鍵盤中的任何一個鍵,蜂鳴器響一聲,并在數(shù)碼管上顯示相應(yīng)的鍵值。圖4為ME300B開發(fā)系統(tǒng)的實際演示圖片。

        圖4ME300B開發(fā)系統(tǒng)顯示鍵值“E”


        上一頁 1 2 下一頁

        關(guān)鍵詞: 4×4矩陣鍵盤單片

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 自贡市| 揭东县| 成武县| 江油市| 丽江市| 瓮安县| 云南省| 邢台县| 陆川县| 乃东县| 民和| 农安县| 合肥市| 南开区| 娱乐| 车险| 黄骅市| 南昌市| 伊春市| 丹江口市| 合江县| 安顺市| 嘉鱼县| 湖南省| 辽源市| 精河县| 崇州市| 陈巴尔虎旗| 沁阳市| 昌黎县| 南召县| 台东市| 崇州市| 海安县| 遂宁市| 宜川县| 杭州市| 梅州市| 陆河县| 仁怀市| 从江县|