文档介绍:单片机系统及其应用实验
指导老师:银翔
2013年
实验四矩阵键盘实验
一、实验目的
*4矩阵键盘的工作原理
及软件消抖的方法。
3. 熟练操作学****板下载和演示程序
(或熟练掌握Proteus软件的使用方法。)
1、实验内容
利用开发板的键盘矩阵和最右边一位数码管,编写程序,实现在键盘上每按一个
数字键(0-F),在数码管上显示对应的键值。
2、实验步骤1
使用Keil uVision4仿真软件,建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误,创建HEX文件。
3、实验步骤2
正确操作学****板,将程序实时下载和演示(或使用PROTEUS软件画硬件原理图,下载HEX文件至CPU,执行程序。)
硬件原理图
程序流程图
源程序
BUF EQU 20H
ORG 0000H
MAIN: MOV BUF,#10H
MAIN1:
ACALL KEY ;调用键盘扫描程序
ACALL DS1 ;调用显示子程序
LJMP MAIN1
DELAY: MOV R6,#00;延时程序
DEL11: DJNZ R6,DEL11
RET
KEY:MOV P2,#0E0H ;全扫描,各列线都送低电平
MOV P1,#00H;
MOV A,P1 ;读回各行线电平值
ORL A,#0F0H ;只读低四位
CPL A ;所读值置反
JNZ IN ;不是全0说明有键按下
RET ;无键按下返回
IN:ACALL DELAY ;调延时,等待按合抖动过去
MOV R2,#04H ;R2做计数器,存待扫描列数
MOV R4,#7FH ;R4做指针,指示待扫描列数
MOV R7,#00H ;R7用于决定键号,初值置以0
SCAN:MOV A,R4
RL A
MOV R4,A ;以上三条调整待扫描列
MOV P2,A ;逐列扫描, 被扫描列送低电平
MOV P1,#00H;
MOV A,P1 ;读回各行线电平值
MOV R3,#04H;R3做记数器,存被扫描列的待查行数
NEXT:RRC A ;调整待查行
JNC FIND;被查行为低电平,被按键找到,转FIND
INC R7 ;未找到,键号加一
DJNZ R3,NEXT ;被扫描列的待查行数不为0, 转回NEXT
DJNZ R2,SCAN ;扫描下一列
RET ;未找到所按键,返回
FIND: MOV BUF,R7
MOV P2,#0E0H
LOOSEN:MOV A,P1
ORL A,#0F0H
CPL A
JNZ LOOSEN; 等待所按键松按
MOV A,R7;松按后才考虑键处理 ADD A,#0F6H ;
JC ORDER;键号大于9, 执行命令键处理程序
NUM:NOP ;键号小于等于9,执行数字键处理程序
RET
ORDER:NOP
RET