内容发布更新时间 : 2024/11/5 14:58:13星期一 下面是文章的全部内容请认真阅读。
转换前内存单元内容 转换后BCD码
0020H-0022H单元中中存放的250即为二进制数FAH转换后得到的BCD码。
六、实验源程序
ORG 0000H LJMP MAIN ORG 100H MAIN: CLR A MOV R5, A MOV R6, A MOV A, #0FAH MOV B, #64H DIV AB MOV 20H, A MOV A, B MOV B, #0AH DIV AB MOV 21H, A MOV 22H, B
SJMP $
END
实验十四 键盘扫描显示实验
一、实验要求
在上一个实验的基础上,利用实验系统提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块。
①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。
二、实验目的
-24-
⑴、掌握键盘和显示器的接口方法和编程方法。
⑵、掌握键盘扫描和LED八段码显示器的工作原理。
三、实验说明
本实验系统自带一个8×4的键盘,在判断有键按下后,要有一定的延时,防止键盘抖动。
四、程序框图
五、实验步骤
在联机状态下,编译、连接、下载、连续运行se14.asm,利用实验系统的显示设备、键盘实现按键的输入并送至显示设备输出。按“暂停图标”,系统无条件退出该程序运行返回监控状态。
六、实验结果和分析
在运行完实验程序之后,LED灯左四位显示good,利用键盘输入数字,LED灯就会在右边显示出输入的数字。由于已经用软件方法消除了键盘抖动,所以不存在多次响应一次键盘按下的情况。
七、实验源程序
;********************************************** ; MCS-51系列单片机仿真实验系统 软件实验项目 ; 键盘扫描显示实验
;********************************************** OUTBIT equ 0ffddh ;位控制口/键扫口 OUTSEG equ 0ffdch ;段控制口 IN equ 0ffdeh ;键盘读入口 LedBuf equ 60h ;显示缓冲 org 0 Start:
mov sp,#40h
-25-
mov LedBuf+0,#0c2h ;显示\ mov LedBuf+1,#0a3h mov LedBuf+2,#0a3h mov LedBuf+3,#0a1h mov LedBuf+4,#0ffh mov LedBuf+5,#0ffh MLoop:
call DisplayLED call GetKey jb acc.5,MLoop jb acc.4,MLoop
anl a,#00001111b mov dptr,#LedMap movc a,@a+dptr mov LedBuf+5,a sjmp MLoop
Delay: mov r7,#0 DelayLoop:
djnz r7,DelayLoop djnz r6,DelayLoop ret DisplayLED:
mov r0,#LedBuf
mov r1,#6 mov r2,#00100000b Loop:
mov dptr,#OUTBIT mov a,#0
movx @dptr,a mov a,@r0 mov dptr,#OUTSEG movx @dptr,a
;显示
;扫描键盘并读取键值 ;显示键码 ;延时子程序 ;共6个八段管 ;从左边开始显示 ;关所有八段管 -26-
mov dptr,#OUTBIT mov a,r2
movx @dptr,a ;显示一位八段管 mov r6,#1 call Delay
mov a,r2 ;显示下一位 rr a mov r2,a inc r0 djnz r1,Loop ret GetKey:
call ScanKey mov r4,a mov r1,#48h mov a,@r1 mov r2,a inc r1 mov a,@r1 mov r3,a mov a,r4 xrl a,r3 mov r3,04h mov r4,02h jz Key1 mov r2,#88h mov r4,#88h Key1: dec r4 mov a,r4 xrl a,#82h jz Key2 mov a,r4 xrl a,#0eh jz Key2
-27-