单片机驱动4X4矩阵式键盘输入程序.docx

上传人:b****6 文档编号:16711276 上传时间:2023-07-16 格式:DOCX 页数:12 大小:15.67KB
下载 相关 举报
单片机驱动4X4矩阵式键盘输入程序.docx_第1页
第1页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第2页
第2页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第3页
第3页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第4页
第4页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第5页
第5页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第6页
第6页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第7页
第7页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第8页
第8页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第9页
第9页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第10页
第10页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第11页
第11页 / 共12页
单片机驱动4X4矩阵式键盘输入程序.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机驱动4X4矩阵式键盘输入程序.docx

《单片机驱动4X4矩阵式键盘输入程序.docx》由会员分享,可在线阅读,更多相关《单片机驱动4X4矩阵式键盘输入程序.docx(12页珍藏版)》请在冰点文库上搜索。

单片机驱动4X4矩阵式键盘输入程序.docx

单片机驱动4X4矩阵式键盘输入程序

单片机驱动4X4矩阵式键盘输入程序

用AT8S51单片机的并行口P1接4M矩阵键盘,以P1.0—P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的0-F”序号。

实现键盘输入的识别。

我将给大家提供c和汇编两个版本的4X4矩阵式键盘输入程序。

如果网页上不清楚点此处下载本键盘输入

程序源代码

汇编语言源程序:

KEYBFEQU30H

ORG00H

STAR:

MOVKEYBF,#2

WAIT:

MOVP3,#0FFH

CLRP3.4

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE1

LCALDELY0MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE1

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK1

LJMPDK1

NK1:

CJNEA,#0DH,NK2

MOV

KEYBF,#1

LJMP

DK1

NK2:

CJNEA,#0BH,NK3

MOV

KEYBF,#2

LJMP

DK1

NK3:

CJNEA,#07H,NK4

MOV

KEYBF,#3

LJMP

DK1

NK4:

NOP

DK1:

MOV

A,KEYBF

MOV

DPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

DK1A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK1A

NOKE1:

MOVP3,#0FFH

CLRP3.5

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE2

LCAL

DELY0MS

MOV

A,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE2

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBF,#4

LJMPDK2

NK5:

CJNEA,#0DH,NK6

MOVKEYBF,#5

LJMPDK2

NK6:

CJNEA,#0BH,NK7

MOVKEYBF,#6

LJMPDK2

NK7:

CJNEA,#07H,NK8

MOVKEYBF,#7

LJMPDK2

NK8:

NOP

DK2:

MOVA,KEYBF

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

DK2A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK2A

NOKE2:

CLRP3.6

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE3

LCALDELY0MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE3

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBF,#8

LJMPDK3

NK9:

CJNEA,#0DH,NK10

MOVKEYBF,#9

LJMPDK3

NK10:

CJNEA,#0BH,NK11

MOVKEYBF,#10

LJMPDK3

NK11:

CJNEA,#07H,NK12

MOVKEYBF,#11

LJMPDK3

NK12:

NOP

DK3:

MOVA,KEYBF

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

DK3A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK3A

NOKE3:

MOVP3,#0FFH

CLRP3.7

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE4

LCALDELY0MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKE4

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBF,#12

LJMPDK4

NK13:

CJNEA,#0DH,NK14

MOVKEYBF,#13

LJMPDK4

NK14:

CJNEA,#0BH,NK15

MOVKEYBF,#14

LJMPDK4

NK15:

CJNEA,#07H,NK16

LJMPDK4

NK16:

NOP

DK4:

MOVA,KEYBF

MOVDPTR,#TABL

MOVCA,@A+DPTR

MOVP0,A

DK4A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK4A

NOKE4:

LJMPWAIT

DELY0MS:

MOVR6,#10

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABL:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

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

END

C语言源程序:

#inclde

unsinedcharcodetabl[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsinedchartemp;

unsinedcharkey;

unsinedchari,j;

〃我的程序没有注释,不过很简单。

有不懂的上单片机论坛51版块那解决http:

//www.51hec程序和上面的

汇编程序是实现一样的功能的,初学者可通过对比熟悉两种语言的使用方法。

voidmain(void)

{

whil

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

swith(temp)

{

case0x0e:

key=7;

brea;

case0x0d:

key=8;

brea;

case0x0b:

key=9;

brea;

case0x07:

key=10;

brea;

}

temp=P3;

P1_0=~P1_0;

P0=tabl[key];temp=temp&0x0f;whil(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;

swith(temp)

{

case0x0e:

key=4;

brea;

case0x0d:

key=5;

brea;

case0x0b:

key=6;

brea;

case0x07:

key=11;

brea;

}

temp=P3;

P1_0=~P1_0;

P0=tabl[key];temp=temp&0x0f;whil(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;swith(temp)

{

case0x0e:

key=1;

brea;

case0x0d:

key=2;

brea;

case0x0b:

key=3;

brea;

case0x07:

key=12;

brea;

}

temp=P3;

P1_0=~P1_0;

P0=tabl[key];temp=temp&0x0f;whil(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;swith(temp)

{

case0x0e:

key=0;

brea;

case0x0d:

key=13;

brea;

case0x0b:

key=14;

brea;

case0x07:

key=15;

brea;

}

temp=P3;

P1_0=~P1_0;

P0=tabl[key];temp=temp&0x0f;whil(temp!

=0x0f){

temp=P3;temp=temp&0x0f;

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2