键盘扫描6位显示实验.doc_第1页
键盘扫描6位显示实验.doc_第2页
键盘扫描6位显示实验.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ORG 0000H LJMP START ORG 0100H SDATA EQU 8004H ;数码管数据线地址 KHANG EQU 8001H ;键盘行地址 GLIE EQU 8002H ;显示位选地址 和 键盘列地址 START:MOV 40H,#04H ;显示缓存区 MOV 41H,#08H MOV 42H,#04H MOV 43H,#02H MOV 44H,#02H MOV 45H,#00H MOV SP,#50H ;定义指针 K1:MOV R4,#20H ;显示位显 G5 MOV R0,#40H ;显示首地址 K2:MOV A,R0 MOV DPTR,#TAB ;转换字符 MOVC A,A+DPTR MOV DPTR,#SDATA ;数码管数据线地址 MOVX DPTR,A MOV DPTR,#GLIE ;显示位选地址 MOV A,R4 MOVX DPTR,A LCALL YAN2 ;延时10ms 充分显示 LCALL KEY ;判断是否有键按下 CJNE A,#0FH,M2 ;A!=0F 有键按下转到M2处理 M1:MOV A,R4 JB ACC.0,K1 ;判断是否显示到最后G0出 若显示到最后转到K1重新显示 RR A ; 没显示到最后一位 右移 显示下一位 MOV R4,A INC R0 ;地址加一 LJMP K2 ;按键粗处理 M2:LCALL YAN2 ;去抖动的延时5ms就行了 LCALL KEY CJNE A,#0FH,M3 ;去抖动 若是抖动转到M1 不做按键处理 LJMP M1 M3:LCALL KEYDATA ;不是抖动 则判断键值 MOV R1,#41H ;显示左移 MOV 40H,R1 INC R1 MOV 41H,R1 INC R1 MOV 42H,R1 INC R1 MOV 43H,R1 INC R1 MOV 44H,R1 MOV 45H,R6 ;将键值存储到显存区 LJMP M1 ;粗判断是否有键按下子程序 ; A=0FH无键按下 ;A!=0FH有键按下 KEY:MOV DPTR,#GLIE ;键盘列地址 MOV A,#00H MOVX DPTR,A MOV DPTR,#KHANG ;键盘行地址 MOV A,#0FH MOVX DPTR,A MOVX A,DPTR ;读行 ANL A,#0FH ;屏蔽高四位 RET ;键值判断处理子程序 ;处理后得到的键值存储在R6中 KEYDATA:MOV R6,#00H ;键值初值 MOV R5,#0DFH ;扫描键盘列位选 PL:MOV DPTR,#GLIE ;键盘列地址 MOV A,R5 MOVX DPTR,A MOV DPTR,#KHANG ;键盘行地址 MOV A,#0FH MOVX DPTR,A MOVX A,DPTR ;读行 JNB ACC.3,PW1 ;第一行有键按下 JNB ACC.2,PW2 ;第二行有键按下 JNB ACC.1,PW3 ;第三行有键按下 JNB ACC.0,PW4 ;第四行有键按下 MOV A,R5 ;是否扫描到最后一列 不是的话转移PL2处理后扫描下一列 JB ACC.0,PL1 MOV R6,#18H ;是最后一列的话 说明去抖动失败 18H是标志位 RET PL1:RR A ;跳转之前R5已经赋值给A了 所以直接右移就行了 MOV R5,A INC R6 ;下一列键值初值 LJMP PL ;继续扫描下一列 PW1:MOV A,#00H ;第一行有键按下的处理 ADD A,R6 MOV R6,A LJMP PL2 PW2:MOV A,#06H ;第二行有键按下的处理 ADD A,R6 MOV R6,A LJMP PL2 PW3:MOV A,#0CH ;第三行有键按下的处理 ADD A,R6 MOV R6,A LJMP PL2 PW4:MOV A,#12H ;第四行有键按下的处理 ADD A,R6 MOV R6,A PL2:LCALL KEY ;键是否弹起 没有的话 循环等待 CJNE A,#0FH,PL2 LCALL YAN2 ;去抖动的延时5ms就行了 LCALL KEY CJNE A,#0FH,PL2 ;延时后再判断键是否弹起 RET ;延时2 延时5ms YAN2:MOV R3,#10 D:MOV R7,#250 DJNZ R7,$ DJNZ R3,D RET ;延时1 延时10ms YAN1:MOV R3,#20 D1:MOV R7,#250 DJNZ R7,$ DJNZ R3,D1 RET ;TAB为0-F16个共阴极断码值 ;TAB1为多余8个按键的断码 还有一个标志码 TAB:DB 3FH,06H,5B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论