找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 27755|回复: 5
打印 上一主题 下一主题
收起左侧

51单片机4X4矩阵键盘LED显示 汇编程序+电路图

[复制链接]
跳转到指定楼层
楼主
ID:85192 发表于 2015-7-14 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


;4X4矩阵键盘程序。主要原理为扫描键盘矩阵时,每次只有一行电平拉低。在逐次扫描拉低的这些行的同时,去读那些列的电平。
;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位位CY里就可以检测出是0还是1.为1表示无按下,
;为0表示该键按下。在扫描按键时,如无按下,则取码指针R1加1后,继续扫描 。如有键按下,转按键处理子程序,按键按下标志位
;F0清0(表示按下)。此时,取码指针的值,就是按键的键名。 随后继续进入按键检测子程序重新扫描。
;注:本程序只通过仿真,因无按键防抖,实物中正常与否,未能确定 。




;2016 04 10    D:\DPJ\4X4KEY.ASM

ORG 00H   
AJMP MAIN   
ORG 30H
MAIN:
MOV SP,#60H
MOV DPTR,#TABLE

KEY:
ACALL KEY0_1   ;调用KEY0_1,判断是否有键按下
JB F0,$-2   ;无键按下,转ACALL KEY0_1,继续扫描
MOV A,R1   ;R1为取码指针
MOVC A,@A+DPTR  ;取码,关送显示
MOV P1,A
AJMP KEY

KEY0_1:    ;按键检测子程序
SETB F0   ;设F0=1
MOV R3,#0F7H  ;行扫描指针初值(P2.3=0)
MOV R1,#00H   ;取码指针初值
L2:
MOV A,R3   ;载入扫描指针
MOV P2,A   ;输出至P2,开始扫描为0的一行
NOP
MOV A,P2   ;读入P2
SETB C   
MOV R5,#4   ;检测P2.7~P2.4,共4 列
L3:    ;检测4列
RLC A   ;左移一位(P2.7~P2.4)
JNC KEY1   ;检测到C=0,表示被按下
INC R1   ;无键按下则取码指针加1
DJNZ R5,L3   ;4列检测完毕?
MOV A,R3   ;载入扫描指针
SETB C
RRC A       ;扫描为0的下一行,
MOV R3,A   ;存回R3扫描指针寄存器
JC L2   ;C=0,行扫描完毕
RET
   
KEY1:
CLR F0   ;F0清0 ,表示按键按下
RET   

TABLE:  
DB      0C0H;0
DB      0F9H;1
DB      0A4H;2
DB      0B0H;3
DB      099H;4
DB      092H;5
DB      082H;
DB      0F8H;7
DB      080H;8
DB      090H;9
DB      088H;A
DB      083H;b
DB      0C6H;C
DB      0A1H;d
DB      086H;E
DB      08EH;F

END   


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:128017 发表于 2016-6-28 20:46 | 只看该作者
兄弟 你这个 仿真 能通过吗
回复

使用道具 举报

板凳
ID:128017 发表于 2016-6-28 20:47 | 只看该作者
我这  怎么第二步就错误了呢
回复

使用道具 举报

地板
ID:155051 发表于 2016-12-15 16:50 | 只看该作者
数码管直接不亮
回复

使用道具 举报

5#
ID:157566 发表于 2016-12-25 19:15 | 只看该作者
我想问问看,要是我想将你这个4X4矩阵识别系统和计数器结合起来,就是按下一个建,继续往下按的时候,可以将本次和上一次的进行累加,我这边试着做了一个,发现有点问题,首先矩阵识别的程序是对的,但是只要相加了,就会出错,怎么回事
回复

使用道具 举报

6#
ID:704585 发表于 2020-6-26 11:45 | 只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表