<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

      單片機(jī)4×4矩陣鍵盤設(shè)計方案

      作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2012-2-4

       1、設(shè)計原理

        (1)如圖14.2所示,用單片機(jī)的并行口P3連接4×4矩陣鍵盤,并以單片機(jī)的P3.0-P3.3各管腳作輸入線,以單片機(jī)的P3.4-P3.7各管腳作輸出線,在數(shù)碼管上顯示每個按鍵 “0-F”的序號。

        (2)鍵盤中對應(yīng)按鍵的序號排列如圖14.1所示。

      單片機(jī)矩陣鍵盤 

        2、參考電路

        單片機(jī)矩陣設(shè)計   圖14.2 4×4矩陣式鍵盤識別電路原理圖

        3、電路硬件說明

        (1)在“單片機(jī)系統(tǒng)”區(qū)域中,把單片機(jī)的P3.0-P3.7端口通過8聯(lián)撥動撥碼開關(guān)JP3連接到“4×4行列式鍵盤”區(qū)域中的M1-M4,N1-N4端口上。

        (2)在“單片機(jī)系統(tǒng)”區(qū)域中,把單片機(jī)的P0.0-P0.7端口連接到“靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任何一個a-h端口上;要求:P0.0對應(yīng)著a,P0.1對應(yīng)著b,……,P0.7對應(yīng)著h。

        4、程序設(shè)計內(nèi)容

        (1)4×4矩陣鍵盤識別處理 。

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

        5、程序流程圖(如圖14.3所示)

      單片機(jī)矩陣鍵盤設(shè)計程序框圖 

      6、匯編源程序

        ;;;;;;;;;;定義單元;;;;;;;;;;

        COUNT EQU 30H

        ;;;;;;;;;;入口地址;;;;;;;;;;

        ORG 0000H

        LJMP START

        ORG 0003H

        RETI

        ORG 000BH

        RETI

        ORG 0013H

        RETI

        ORG 001BH

        RETI

        ORG 0023H

        RETI

        ORG 002BH

        RETI

        ;;;;;;;;;;主程序入口;;;;;;;;;;

        ORG 0100H

        START: LCALL CHUSHIHUA

        LCALL PANDUAN

        LCALL XIANSHI

        LJMP START

        ;;;;;;;;;;初始化程序;;;;;;;;;;

        CHUSHIHUA: MOV COUNT,#00H

        RET

        ;;;;;;;;;;判斷哪個按鍵按下程序;;;;;;;;;;

        PANDUAN: MOV P3,#0FFH

        CLR P3.4

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ SW1

        LCALL DELAY10MS

        JZ SW1

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,K1

        MOV COUNT,#0

        LJMP DK

        K1: CJNE A,#0DH,K2

        MOV COUNT,#4

        LJMP DK

        K2: CJNE A,#0BH,K3

        MOV COUNT,#8

        LJMP DK

        K3: CJNE A,#07H,K4

        MOV COUNT,#12

        K4: NOP

        LJMP DK

        SW1: MOV P3,#0FFH

        CLR P3.5

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ SW2

        LCALL DELAY10MS

        JZ SW2

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,K5

        MOV COUNT,#1

        LJMP DK

        K5: CJNE A,#0DH,K6

        MOV COUNT,#5

        LJMP DK

        K6: CJNE A,#0BH,K7

        MOV COUNT,#9

        LJMP DK

        K7: CJNE A,#07H,K8

        MOV COUNT,#13

        K8: NOP

        LJMP DK

        SW2: MOV P3,#0FFH

        CLR P3.6

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ SW3

        LCALL DELAY10MS

        JZ SW3

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,K9

        MOV COUNT,#2

        LJMP DK

        K9: CJNE A,#0DH,KA

        MOV COUNT,#6

        LJMP DK

        KA: CJNE A,#0BH,KB

        MOV COUNT,#10

        LJMP DK

        KB: CJNE A,#07H,KC

        MOV COUNT,#14

        KC: NOP

        LJMP DK

        SW3: MOV P3,#0FFH

        CLR P3.7

        MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JZ SW4

        LCALL DELAY10MS

        JZ SW4

        MOV A,P3

        ANL A,#0FH

        CJNE A,#0EH,KD

        MOV COUNT,#3

        LJMP DK

        KD: CJNE A,#0DH,KE

        MOV COUNT,#7

        LJMP DK

        KE: CJNE A,#0BH,KF

        MOV COUNT,#11

        LJMP DK

        KF: CJNE A,#07H,KG

        MOV COUNT,#15

        KG: NOP

        LJMP DK

        SW4: LJMP PANDUAN

        DK: RET

        ;;;;;;;;;;顯示程序;;;;;;;;;;

        XIANSHI: MOV A,COUNT

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        LCALL DELAY

        SK: MOV A,P3

        ANL A,#0FH

        XRL A,#0FH

        JNZ SK

        RET

        ;;;;;;;;;;10ms延時程序;;;;;;;;;;

        DELAY10MS: MOV R6,#20

        D1: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        RET

        ;;;;;;;;;;200ms延時程序;;;;;;;;;;

        DELAY: MOV R5,#20

        LOOP: LCALL DELAY10MS

        DJNZ R5,LOOP

        RET

        ;;;;;;;;;;共陰碼表;;;;;;;;;;

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

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

        ;;;;;;;;;;結(jié)束標(biāo)志;;;;;;;;;;

        END

      7、C語言源程序

        #include

        unsigned char code table[]={0x3f,0x66,0x7f,0x39,

        0x06,0x6d,0x6f,0x5e,

        0x5b,0x7d,0x77,0x79,

        0x4f,0x07,0x7c,0x71};

        void main(void)

        { unsigned char i,j,k,key;

        while(1)

        { P3=0xff; //給P3口置1//

        P3_4=0; //給P3.4這條線送入0//

        i=P3;

        i=i&0x0f; //屏蔽低四位//

        if(i!=0x0f) //看是否有按鍵按下//

        { for(j=50;j>0;j--) //延時//

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

        if(i!=0x0f) //再次判斷按鍵是否按下//

        { switch(i) //看是和P3.4相連的四個按鍵中的哪個//

        { case 0x0e:

        key=0;

        break;

        case 0x0d:

        key=1;

        break;

        case 0x0b:

        key=2;

        break;

        case 0x07:

        key=3;

        break;

        }

        P0=table[key]; //送數(shù)到P0口顯示//

        }

        }

        P3=0xff;

        P3_5=0; //讀P3.5這條線//

        i=P3;

        i=i&0x0f; //屏蔽P3口的低四位//

        if(i!=0x0f) //讀P3.5這條線上看是否有按鍵按下//

        { for(j=50;j>0;j--) //延時//

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

        i=P3; //再看是否有按鍵真的按下//

        i=i&0x0f;

        if(i!=0x0f)

        { switch(i) //如果有,顯示相應(yīng)的按鍵//

        { case 0x0e:

        key=4;

        break;

        case 0x0d:

        key=5;

        break;

        case 0x0b:

        key=6;

        break;

        case 0x07:

        key=7;

        break;

        }

        P0=table[key]; //送入P0口顯示//

        }

        }

        P3=0xff;

        P3_6=0; //讀P3.6這條線上是否有按鍵按下//

        i=P3;

        i=i&0x0f;

        if(i!=0x0f)

        { for(j=50;j>0;j--)

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

        i=P3;

        i=i&0x0f;

        if(i!=0x0f)

        { switch(i)

        { case 0x0e:

        key=8;

        break;

        case 0x0d:

        key=9;

        break;

        case 0x0b:

        key=10;

        break;

        case 0x07:

        key=11;

        break;

        }

        P0=table[key];

        }

        }

        P3=0xff;

        P3_7=0; //讀P3.7這條線上是否有按鍵按下//

        i=P3;

        i=i&0x0f;

        if(i!=0x0f)

        { for(j=50;j>0;j--)

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

        i=P3;

        i=i&0x0f;

        if(i!=0x0f)

        { switch(i)

        { case 0x0e:

        key=12;

        break;

        case 0x0d:

        key=13;

        break;

        case 0x0b:

        key=14;

        break;

        case 0x07:

        key=15;

        break;

        }

        P0=table[key];

        }

        }

        }

        }

        8、注意事項

        在硬件電路中,要把8聯(lián)撥動撥碼開關(guān)JP2撥下,把8聯(lián)撥動撥碼開關(guān)JP3撥上去。

      Tags:單片機(jī),矩陣鍵盤,設(shè)計  
      責(zé)任編輯:admin
    4. 上一篇文章:
    5. 下一篇文章:
    6. 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網(wǎng)友評論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 色欲综合久久躁天天躁蜜桃| 色天使久久综合网天天| 国产激情综合在线观看| 亚洲综合网站色欲色欲| 青青热久久综合网伊人| 综合欧美五月丁香五月| 国产综合在线观看| 伊人色综合一区二区三区影院视频| 国产精品成人免费综合| 久久综合丝袜长腿丝袜| 丁香婷婷色五月激情综合深爱| 色综合天天综合网站中国| 亚洲精品二区国产综合野狼| 色综合久久久无码中文字幕| 久久精品水蜜桃av综合天堂| 国产精品亚洲综合专区片高清久久久 | 色综合67194| 一本色道久久综合网| 色偷偷亚洲第一综合网| 亚洲综合精品成人| 亚洲国产综合人成综合网站00| 国产综合成人久久大片91| 一本色道久久综合网| 亚洲伊人久久综合中文成人网| 天天综合久久一二三区| 狠狠色综合久久婷婷色天使| 久久综合久久久久88| 亚洲综合小说另类图片动图| 色综合久久天天综合| 亚洲a无码综合a国产av中文| 色婷婷久久综合中文网站 | 卡通动漫第一页综合专区| 一本色道久久88亚洲精品综合| 亚洲乱码中文字幕小综合| 中文字幕亚洲综合久久| 2020国产精品亚洲综合网| 色综合网天天综合色中文男男| 色婷婷久久综合中文久久蜜桃av| 久久久久青草大香线综合精品| 伊人青青综合网站| 色综合视频一区二区三区44|