中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 4×4矩陣式鍵盤(pán)識(shí)別技術(shù)

        4×4矩陣式鍵盤(pán)識(shí)別技術(shù)

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

        (1. 把“系統(tǒng)“區(qū)域中的P3.0P3.7端口用8芯排線連接到“4X4行列式鍵盤(pán)”區(qū)域中的C1C4 R1R4端口上;

        (2. 把“系統(tǒng)”區(qū)域中的P0.0/AD0P0.7/AD7端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個(gè)ah端口上;要求:P0.0/AD0對(duì)應(yīng)著aP0.1/AD1對(duì)應(yīng)著b,……,P0.7/AD7對(duì)應(yīng)著h

        4. 程序設(shè)計(jì)內(nèi)容

        (1. 4×4矩陣鍵盤(pán)識(shí)別處理

        (2. 每個(gè)按鍵有它的行值和列值 ,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開(kāi)關(guān)的一端(列線)通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。

        5.程序框圖

        6.匯編源程序

        KEYBUF EQU 30H

        ORG 00H

        START: MOV KEYBUF,#2

        WAIT:

        MOV P3,#0FFH

        CLR P3.4

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY1

        LCALL DELY10MS

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY1

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,NK1

        MOV KEYBUF,#0

        LJMP DK1

        NK1: CJNE A,#0DH,NK2

        MOV KEYBUF,#1

        LJMP DK1

        NK2: CJNE A,#0BH,NK3

        MOV KEYBUF,#2

        LJMP DK1

        NK3: CJNE A,#07H,NK4

        MOV KEYBUF,#3

        LJMP DK1

        NK4: NOP

        DK1:

        MOV A,KEYBUF

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        DK1A: MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JNZ DK1A

        NOKEY1:

        MOV P3,#0FFH

        CLR P3.5

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY2

        LCALL DELY10MS

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY2

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,NK5

        MOV KEYBUF,#4

        LJMP DK2

        NK5: CJNE A,#0DH,NK6

        MOV KEYBUF,#5

        LJMP DK2

        NK6: CJNE A,#0BH,NK7

        MOV KEYBUF,#6

        LJMP DK2

        NK7: CJNE A,#07H,NK8

        MOV KEYBUF,#7

        LJMP DK2

        NK8: NOP

        DK2:

        MOV A,KEYBUF

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        DK2A: MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JNZ DK2A

        NOKEY2:

        MOV P3,#0FFH

        CLR P3.6

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY3

        LCALL DELY10MS

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY3

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,NK9

        MOV KEYBUF,#8

        LJMP DK3

        NK9: CJNE A,#0DH,NK10

        MOV KEYBUF,#9

        LJMP DK3

        NK10: CJNE A,#0BH,NK11

        MOV KEYBUF,#10

        LJMP DK3

        NK11: CJNE A,#07H,NK12

        MOV KEYBUF,#11

        LJMP DK3

        NK12: NOP

        DK3:

        MOV A,KEYBUF

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        DK3A: MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JNZ DK3A

        NOKEY3:

        MOV P3,#0FFH

        CLR P3.7

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY4

        LCALL DELY10MS

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ NOKEY4

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,NK13

        MOV KEYBUF,#12

        LJMP DK4

        NK13: CJNE A,#0DH,NK14

        MOV KEYBUF,#13

        LJMP DK4

        NK14: CJNE A,#0BH,NK15

        MOV KEYBUF,#14

        LJMP DK4

        NK15: CJNE A,#07H,NK16

        MOV KEYBUF,#15

        LJMP DK4

        NK16: NOP

        DK4:

        MOV A,KEYBUF

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        DK4A: MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JNZ DK4A

        NOKEY4:

        LJMP WAIT

        DELY10MS:

        MOV R6,#10

        D1: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        RET

        TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

        END

        7.C語(yǔ)言源程序

        #include AT89X51.H>

        unsigned char code table[]={0x3f,0x06,0x5b,0x4f,

        0x66,0x6d,0x7d,0x07,

        0x7f,0x6f,0x77,0x7c,

        0x39,0x5e,0x79,0x71};

        unsigned char temp;

        unsigned char key;

        unsigned char i,j;

        void main(void)

        {

        while(1)

        {

        P3=0xff;

        P3_4=0;

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        for(i=50;i>0;i--)

        for(j=200;j>0;j--);

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        switch(temp)

        {

        case 0x0e:

        key=7;

        break;

        case 0x0d:

        key=8;

        break;

        case 0x0b:

        key=9;

        break;

        case 0x07:

        key=10;

        break;

        }

        temp=P3;

        P1_0=~P1_0;

        P0=table[key];

        temp=temp 0x0f;

        while(temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        }

        }

        }

        P3=0xff;

        P3_5=0;

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        for(i=50;i>0;i--)

        for(j=200;j>0;j--);

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        switch(temp)

        {

        case 0x0e:

        key=4;

        break;

        case 0x0d:

        key=5;

        break;

        case 0x0b:

        key=6;

        break;

        case 0x07:

        key=11;

        break;

        }

        temp=P3;

        P1_0=~P1_0;

        P0=table[key];

        temp=temp 0x0f;

        while(temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        }

        }

        }

        P3=0xff;

        P3_6=0;

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        for(i=50;i>0;i--)

        for(j=200;j>0;j--);

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        switch(temp)

        {

        case 0x0e:

        key=1;

        break;

        case 0x0d:

        key=2;

        break;

        case 0x0b:

        key=3;

        break;

        case 0x07:

        key=12;

        break;

        }

        temp=P3;

        P1_0=~P1_0;

        P0=table[key];

        temp=temp 0x0f;

        while(temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        }

        }

        }

        P3=0xff;

        P3_7=0;

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        for(i=50;i>0;i--)

        for(j=200;j>0;j--);

        temp=P3;

        temp=temp 0x0f;

        if (temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        switch(temp)

        {

        case 0x0e:

        key=0;

        break;

        case 0x0d:

        key=13;

        break;

        case 0x0b:

        key=14;

        break;

        case 0x07:

        key=15;

        break;

        }

        temp=P3;

        P1_0=~P1_0;

        P0=table[key];

        temp=temp 0x0f;

        while(temp!=0x0f)

        {

        temp=P3;

        temp=temp 0x0f;

        }

        }

        }

        }

        }



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉