标题:
单片机键盘扫描显示汇编源码
[打印本页]
作者:
赵子龙OL
时间:
2019-6-20 20:47
标题:
单片机键盘扫描显示汇编源码
这次做的单片机 键盘扫描显示汇编源码
一、实验目的
ORG 0000H
AJMP MAIN
LEDMAP:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
; 八段管显示码
Delay: MOV R6, #01H; 延时子程序
Delay1:MOV R7, #00H
Delay2:DJNZ R7, Delay2
DJNZ R6, Delay1
RET
DisplayLED:
MOV R0, #60H
MOV R1, #06H ; 共 共 6 个八段管
MOV R2, #00100000B ; 从左边开始显示
Loop:
MOV DPTR, #8002H
MOV A, #00H
MOVX @DPTR, A; 关所有八段管
MOV A, @R0
MOV DPTR, #8004H ; 段控制口
MOVX @DPTR, A
MOV DPTR, #8002H ; 位控制口
MOV A, R2
MOVX @DPTR,A ; 显示一位八段管
ACALL Delay
MOV A, R2 ; 显示下一位
RR A
MOV R2,A
INC R0
DJNZ R1, Loop
RET
TestKey:
MOV DPTR, #8002H
MOV A, #00H
MOVX @DPTR, A; 输出线置为 0
MOV DPTR, #8001H
MOVX A, @DPTR ; 读入键状态
CPL A
ANL A, #0FH ; 高四位不用
RET
KeyTable: ; 键码定义
DB 16H, 15H, 14H, 0FFH
DB 13H, 12H, 11H, 10H
DB 0DH, 0CH, 0BH, 0AH
DB 0EH, 03H, 06H, 09H
DB 0FH, 02H, 05H, 08H
DB 00H, 01H, 04H, 07H
GetKey:
MOV DPTR, #8002H
MOV R1, #00100000B
MOV R2, #06H
KLoop:
MOV A, R1 ; 找出键所在列
CPL A
MOV DPTR, #8002H
MOVX @DPTR, A
CPL A
RR A
MOV R1,A ; 下一列
MOV DPTR, #8001H
MOVX A, @DPTR
CPL A
ANL A, #0FH
JNZ Goon1 ; 该列有键入
DJNZ R2, KLoop
MOV R2, #0FFH ; 没有键按下,
回 返回 0FFH
AJMP Exit
Goon1:
MOV R1,A; 值 键值 = 列 列 *4 + 行 行
MOV A, R2
DEC A
RL A
RL A
MOV R2, A ; R2 = (R2-1)*4
MOV A, R1 ; R1 中为读入的行值
MOV R1, #04H
LoopC:
RRC A ; 移位找出所在行
JC Exit
INC R2 ; R2 =R2+ 行值
DJNZ R1, LoopC
Exit:
MOV A, R2 ; 取出键码
MOV DPTR, #KeyTable
MOVC A, @A+DPTR
MOV R2, A
WaitRelease:
MOV DPTR, #8002H ; 等键释放
CLR A
ACALL TestKey
JNZ WaitRelease
MOV A, R2
RET
MAIN:
MOV 60H, #0FFH ; 示 显示 8.8.8.8.
MOV 61H, #0FFH
MOV 62H, #0FFH
MOV 63H, #0FFH
MOV 64H, #00H
MOV 65H, #00H
MLoop: ACALL DisplayLED ; 显示
ACALL TestKey ; 有键入?
JZ MLoop ; 无键入, 继续显示
ACALL GetKey ; 读入键码
ANL A, #0FH ; 显示键码
MOV DPTR, #LEDMap
MOVC A, @A+DPTR
MOV 65H,A
LJMP MLoop
END
复制代码
1 .掌握键盘和显示器的接口方法和编程方法
2 .掌握键盘扫描和数码管显示器的工作原理
二、 实验内容
利用实验仪上的键盘扫描电路和显示电路 , 做一个扫描键盘和数码显示实验 , 把按键
输入的键码在六位数码管上显示出来。实验程序分为三个模块:
① 键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
② 显示模块:将显示单元的内容在显示器上动态显示。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1