女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用單片機設計實現鍵盤的資料和源代碼概述

Wildesbeast ? 來源:單片機教程網 ? 作者:h1654155169.2086 ? 2020-05-05 14:12 ? 次閱讀

1.實驗任務

如圖4.14.2所示,用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;在數碼管上顯示每個按鍵的“0-F”序號。對應的按鍵的序號排列如圖4.14.1所示

圖4.14.1

2.硬件電路設計原理圖

圖4.14.2

3.系統板上硬件連線設計

(1. 把“單片機系統“區域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區域中的C1-C4R1-R4端口上;

(2. 把“單片機系統”區域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個a-h端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……,P0.7/AD7對應著h。

4. 程序設計內容

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

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

5.程序框圖

圖4.14.3

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語言源程序

#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;

}

}

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6062

    文章

    44915

    瀏覽量

    646656
  • 鍵盤
    +關注

    關注

    4

    文章

    864

    瀏覽量

    40415
  • 硬件電路
    +關注

    關注

    39

    文章

    252

    瀏覽量

    29654
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于單片機的12864圖形溫度計+矩陣鍵盤_源代碼

    基于單片機的12864圖形溫度計+矩陣鍵盤源代碼資料來源網絡,如有侵權,敬請見諒
    發表于 12-28 11:36 ?5次下載

    使用單片機設計888光立方的資料合集包括軟件,源代碼,原理圖等

    本文檔的主要內容詳細介紹的是使用單片機設計888光立方的資料合集包括工具軟件,源代碼,原理圖,動畫數組,元件清單等資料免費下載。
    發表于 12-05 08:00 ?56次下載
    使用<b class='flag-5'>單片機設</b>計888光立方的<b class='flag-5'>資料</b>合集包括軟件,<b class='flag-5'>源代碼</b>,原理圖等

    使用51單片機設計遙控解碼通過電腦串口顯示的源代碼資料免費下載

    本文檔的主要內容詳細介紹的是基于51單片機設計,紅外傳感器接收,單片機處理后通過串口將解碼傳輸至電腦,keil5工程源代碼
    發表于 12-10 08:00 ?2次下載
    使用51<b class='flag-5'>單片機設</b>計遙控解碼通過電腦串口顯示的<b class='flag-5'>源代碼</b><b class='flag-5'>資料</b>免費下載

    使用51單片機設計的簡易計算器資料合集免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計的簡易計算器資料合集免費下載本計算器是以MCS-51單片機控制,實現對4*4鍵盤掃描進行實時的
    發表于 01-09 08:00 ?55次下載
    使用51<b class='flag-5'>單片機設</b>計的簡易計算器<b class='flag-5'>資料</b>合集免費下載

    使用STC89C51單片機設計的秒表源代碼和電路圖免費下載

    本文檔的主要內容詳細介紹的是使用STC89C51單片機設計的秒表源代碼和電路圖免費下載。
    發表于 01-25 16:52 ?45次下載
    使用STC89C51<b class='flag-5'>單片機設</b>計的秒表<b class='flag-5'>源代碼</b>和電路圖免費下載

    使用51單片機實現矩陣鍵盤代碼免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現矩陣鍵盤代碼免費下載。
    發表于 08-28 17:29 ?5次下載
    使用51<b class='flag-5'>單片機</b><b class='flag-5'>實現</b>矩陣<b class='flag-5'>鍵盤</b>的<b class='flag-5'>代碼</b>免費下載

    使用51單片機設計愛心燈的電路圖和源代碼免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計愛心燈的電路圖和源代碼免費下載。
    發表于 07-01 17:42 ?12次下載
    使用51<b class='flag-5'>單片機設</b>計愛心燈的電路圖和<b class='flag-5'>源代碼</b>免費下載

    使用51單片機設計流水燈的源代碼免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計流水燈的C語言源代碼免費下載。
    發表于 06-28 17:42 ?5次下載
    使用51<b class='flag-5'>單片機設</b>計流水燈的<b class='flag-5'>源代碼</b>免費下載

    使用單片機設計籃球計時計分系統的protues仿真和源代碼資料合集

    本文檔的主要內容詳細介紹的是使用單片機設計籃球計時計分系統的protues仿真和源代碼資料合集。
    發表于 05-28 08:00 ?34次下載
    使用<b class='flag-5'>單片機設</b>計籃球計時計分系統的protues仿真和<b class='flag-5'>源代碼</b><b class='flag-5'>資料</b>合集

    使用ARMK60單片機設計的平衡智能小車源代碼免費下載

    本文檔的主要內容詳細介紹的是使用ARMK60單片機設計的平衡智能小車源代碼免費下載。
    發表于 07-22 08:00 ?1次下載
    使用ARMK60<b class='flag-5'>單片機設</b>計的平衡智能小車<b class='flag-5'>源代碼</b>免費下載

    基于STM32F103單片機設計的MP3的工程文件和源代碼免費下載

    本文檔的主要內容詳細介紹的是基于STM32F103單片機設計的MP3的工程文件和源代碼免費下載。
    發表于 10-21 08:00 ?17次下載
    基于STM32F103<b class='flag-5'>單片機設</b>計的MP3的工程文件和<b class='flag-5'>源代碼</b>免費下載

    使用單片機實現矩陣鍵盤源代碼和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現矩陣鍵盤源代碼和工程文件免費下載。
    發表于 12-03 11:32 ?11次下載
    使用<b class='flag-5'>單片機</b><b class='flag-5'>實現</b>矩陣<b class='flag-5'>鍵盤</b>的<b class='flag-5'>源代碼</b>和工程文件免費下載

    使用單片機設計溫度濕度采集系統的源代碼和原理圖免費下載

    本文檔的主要內容詳細介紹的是使用單片機設計溫度濕度采集系統的源代碼和原理圖免費下載。
    發表于 12-11 08:00 ?7次下載
    使用<b class='flag-5'>單片機設</b>計溫度濕度采集系統的<b class='flag-5'>源代碼</b>和原理圖免費下載

    使用單片機設計紅外遙控風扇LCD1602顯示鍵值的源代碼資料免費下載

    本文檔的主要內容詳細介紹的是使用單片機設計紅外遙控風扇LCD1602顯示鍵值的源代碼資料免費下載。
    發表于 04-08 08:00 ?21次下載
    使用<b class='flag-5'>單片機設</b>計紅外遙控風扇LCD1602顯示鍵值的<b class='flag-5'>源代碼</b>和<b class='flag-5'>資料</b>免費下載

    使用單片機設計流水燈的源代碼和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用單片機設計流水燈的源代碼和工程文件免費下載。
    發表于 04-29 08:00 ?26次下載
    使用<b class='flag-5'>單片機設</b>計流水燈的<b class='flag-5'>源代碼</b>和工程文件免費下載