在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 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)著a,P0.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ù)專(zhuān)區(qū)

            關(guān)閉