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

上传人:woxinch****an2018 文档编号:38969835 上传时间:2018-05-10 格式:DOC 页数:12 大小:32.50KB
返回 下载 相关 举报
单片机驱动4X4矩阵式键盘输入程序_第1页
第1页 / 共12页
单片机驱动4X4矩阵式键盘输入程序_第2页
第2页 / 共12页
单片机驱动4X4矩阵式键盘输入程序_第3页
第3页 / 共12页
单片机驱动4X4矩阵式键盘输入程序_第4页
第4页 / 共12页
单片机驱动4X4矩阵式键盘输入程序_第5页
第5页 / 共12页
点击查看更多>>
资源描述

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

1、单片机驱动单片机驱动 4X44X4 矩阵式键盘输入程序矩阵式键盘输入程序用 AT89S51 单片机的并行口 P1 接 44 矩阵键盘,以 P1.0P1.3 作输入线,以 P1.4P1.7 作输出线;在数码管上显示每个按键的“0F”序号。 实现键盘输入的识别。我将给大家提供 c 和汇编两个版本的 4X4 矩阵式键盘输入程序。如果网页上不清楚点此处下载本键盘输入程序源代码汇编语言源程序: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 N

2、OKEY1 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

3、 A,A+DPTR MOV P0,ADK1A: 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: C

4、JNE 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,ADK2A: 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 X

5、RL 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,ADK3A: MOV A,P3 A

6、NL 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,#

7、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,ADK4A: 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,

8、6FH,77H,7CH,39H,5EH,79H,71H ENDC 语言源程序:#include 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;/我的程序没有注释,不过很简单。有不懂的上单片机论坛 51 版块那解决 http:/ c 程序和上面的汇编程序是实现一样的功能的,初学者可通过对比熟悉两种语言的使用方法。v

9、oid main(void) while(1) P3=0xff; P3_4=0; temp=P3; temp=temp if (temp!=0x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp 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

10、=tablekey; temp=temp while(temp!=0x0f) temp=P3; temp=temp P3=0xff; P3_5=0; temp=P3; temp=temp if (temp!=0x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key

11、=11; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp while(temp!=0x0f) temp=P3; temp=temp P3=0xff; P3_6=0; temp=P3; temp=temp if (temp!=0x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=1; break; case 0x0d: key=2; break; case

12、0x0b: key=3; break; case 0x07: key=12; break; temp=P3; P1_0=P1_0; P0=tablekey; temp=temp while(temp!=0x0f) temp=P3; temp=temp P3=0xff; P3_7=0; temp=P3; temp=temp if (temp!=0x0f) for(i=50;i0;i-) for(j=200;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp 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=tablekey; temp=temp while(temp!=0x0f) temp=P3; temp=temp

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号