51单片机4×4矩阵按键程序

发布者:MysticGlow最新更新时间:2015-07-09 来源: 51hei关键字:51单片机4×4  阵按键 手机看文章 扫描二维码
随时随地手机看文章
ORG 0000H
LJMP MAIN ;跳转至主程序
ORG 0100H
MAIN: LCALL KEY_IN
MOV P0,A
LCALL DEL
AJMP MAIN
;======================
;判断有无按键,无按键直接返回
;KEY_IN: MOV P1,#0F0H ;置行线为低电平,读列线状态(在高4位,无按键则全为1)
; MOV A,P1
; ANL A,#0F0H ;屏蔽低四位
; MOV B,A
; MOV P1,#0FH ;置列线为低电平,读行线状态(在低4位,无按键则全为1)
; MOV A,P1
; ANL A,#0FH
; ORL A,B ;高四位与低四位重新组合
; CJNE A,#0FFH,KEYSCAN ;0FFH为末按键
; RET
;==========================================
;//=============键盘扫描程序==============================================
;KEYSCAN:
KEY_IN: MOV R1,#0 ;初始化列地址
MOV R3,#11110111B ;初始化扫描码
LOOP:
MOV A,R3
RL A
MOV R3,A ;保留扫描码
MOV P1,A ;送扫描码
MOV A,P1 ;读键盘
ORL A,#0F0H ;屏蔽高四位
CJNE A,#0FFH,NEXT31 ;A不等于FFH,说明该列有按键动作
INC R1 ;列地址加1,准备扫描下一列
CJNE R1,#4,LOOP ;列地址不等于4,扫描下一列
SJMP EXIT ;没有按键,退出
;//=============按键判断对应位等于零,说明该行有按键按下==================
NEXT31:
JB ACC.0,NEXT32
MOV R2,#0 ;第0行有按键
SJMP NEXT5
NEXT32:
JB ACC.1,NEXT33
MOV R2,#1 ;第1行有按键
SJMP NEXT5
NEXT33:
JB ACC.2,NEXT34
MOV R2,#2 ;第2行有按键
SJMP NEXT5
NEXT34:
MOV R2,#3 ;第3行有按键
NEXT5: ;计算按键地址
MOV A,R1
RL A
RL A ;列地址乘4(每列对应4行)
ADD A,R2 ;加行地址
MOV DPTR,#KEYTAB
MOVC A,@A+DPTR
EXIT:
; MOV P1,#0FFH ;置键盘接口高电平
RET
;延时子程序,1s延时
DEL: MOV R7,#10
DEL1: MOV R6,#200
DEL2: MOV R5,#248
HERE: DJNZ R5,HERE
DJNZ R6,DEL2
DJNZ R7,DEL1
RET

;//=============按键名称表================================================
KEYTAB:
DB 3fH ;扫描码0 *****************************************
DB 06H ;扫描码1 **
DB 5bH ;扫描码2 I/O口 P1.0 P1.1 P1.2 P1.3 **
DB 4fH ;扫描码3 **
DB 66H ;扫描码4 P1.4 0 1 2 3 **
DB 6dH ;扫描码5 **
DB 7dH ;扫描码6 P1.5 4 5 6 7 **
DB 07H ;扫描码7 **
DB 7fH ;扫描码8 P1.6 8 9 A B **
DB 6fH ;扫描码9 **
DB 77H ;扫描码A P1.7 C D E F **
DB 7cH ;扫描码B **
DB 39H ;扫描码C *****************************************
DB 5eH ;扫描码D
DB 79H ;扫描码E
DB 71H ;扫描码F
DB 00H
DB 00H
END 
关键字:51单片机4×4  阵按键 引用地址:51单片机4×4矩阵按键程序

上一篇:用在摩托车上的遥控时钟
下一篇:基于单片机的旋转led(初级版)

推荐阅读最新更新时间:2024-03-16 14:24

51单片机驱动1602液晶(4线串行)
/*单片机I/O口使单片机资源的重要组成部分,也是用来扩展外围设备的必选资源,尽可能以更少的I/O口实现更多的功能是单片机工程师追求的目标,现在的一些串行器件也为这一目标的实现添加了更多的可能性,比如I2C总线,MAXIM力推的1-WIRE等等,都可以以很少的I/O口实现更多的功能,当然这是以降低一定的速度为代价的。 废话少说,进入正题。 显示器件多见的是LED数码管,LCD液晶屏等。一般的数码管成本低廉,在显示内容要求不多的时候适用;LCD液晶屏以更多的显示空间得到了许多人的爱好,不过成本上要高的多(市场价在20元左右),本文以LCD1602为例说明如何驱动液晶屏。 LCD1602外接的控制接口有RS,R/W,E;数据接口为D
[单片机]
基于51单片机4×4矩阵键盘电子琴
前些日子,做而论道写了一篇关于单片机发音的文章,后来,就不断有网友来电询问单片机电子琴的设计方法。 以前制作过一个24键(独立按键)的,程序是用汇编语言写的,估计多数人看不了。 下面,把新设计的16按键的电子琴,公布给网友。 电路图如下: 制作说明:   单片机采用51系列的都行,AT89C2051也可;   图中没有画出复位和晶振电路,实际制作时,不可省略,晶振可以使用11.0592或12MHz;   扬声器应该按照图中给出的附图加上驱动电路;   显示器及七段译码器不接,单片机电子琴也可以正常工作。   74LS47 和数码管之间,应该接上“限流电阻”,约 470 欧姆即可。 C语言程序如下: /**********
[单片机]
基于<font color='red'>51单片机</font>的<font color='red'>4</font>×<font color='red'>4</font>矩阵键盘电子琴
AT89S51单片机4×4矩阵键盘的控制设计
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-C4 R1-R4端口上; (2).把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P
[单片机]
AT89S<font color='red'>51单片机</font>对<font color='red'>4</font>×<font color='red'>4</font>矩阵键盘的控制设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved