第10章 MCS-51及键盘、显示器的接口设计.ppt

第10章 MCS-51及键盘、显示器的接口设计.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
参考程序: DIR: MOV R0,#79H ;置缓冲器指针初值 MOV R3,#01H ;位选码的初值送R3 MOV A,R3 LD0: MOV DPTR,#7F01H ;位选码→PA口(PA.0位) ;最左边LED亮 MOVX @DPTR,A INC DPTR ;去掉 MOV A,@R0 ;显示数据→A ADD A,#0DH MOVC A,@A+PC 改为:MOV DPTR,#TAB MOVC A, @A+DPTR MOV DPTR,#7F02H DIR1: MOVX @DPTR,A ;段码→8155H PB口 ACALL DL1ms ;该位显示1ms INC R0 ;指针指向下一个数据单元 MOV A,R3 ;位选码送入A中 JB Acc.5,LD1 ;判断是否扫描到最右边的 ; LED,如到最右边则返回 RL A ;位选码向左移一位,准备让 ; 右边的下一位LED亮 MOV R3,A ;位选码送R3中保存 AJMP LD0 ; LD1: RET ; DSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表 DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH….. DL1ms: MOV R7,#02H ;延时1ms子程序 DL: MOV R6,#0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL RET 2.键盘程序设计思路:即扫描法的思路 流程图如图10-16。 这里巧妙运用显示子程序作为延时子程序,这样进入键盘子程序后,显示器始终是亮的。 键闭合一次,只做一次处理 键盘子程序如下: KEYI:ACALL KS1 ;KS1有无键闭合子程序,无键闭合A=0 JNZ LK1 ;有键闭合,跳 LK1 NI: ACALL DIR ;无键闭合,调用显示子程序,延 ;迟6ms后,跳KEYI AJMP KEYI LK1: ACALL DIR ;可能有键闭合,软件延迟12ms去抖 ACALL DIR ACALL KS1 ;调用判有无键闭合子程序 JNZ LK2 ;经去抖,判键确实闭合,跳LK2 ACALL DIR ; AJMP KEYI ; LK2: MOV R2,#0FEH ;确实有键,R2-列选码(逐列为0) MOV R4,#00H ;R4--列号计数器, ;为计算键号=行首键号+列号 LK4: MOV DPTR,#7F01H ;PA口 MOV A,R2 MOVX @DPTR,A INC DPTR INC DPTR ;PC口 MOVX A,@DPTR ;读8155H PC口 JB Acc.0 ,LONE ;第0行无键,转查第1行 MOV A,#00H ;0行有键闭合,首键号0→A AJMP LKP ;跳LKP,计算键号 LONE:JB Acc.1,LTW0 MOV A,#08H AJMP LKP LTW0:JB A.2,LTHR MOV A,#10H AJMP LKP LTHR:JB Acc.3,NEXT ;无键闭合, 跳NEXT,准备下一列扫描 ; MOV A,#18H LKP: ADD A,R4 ;计算键号:首键号+列号=键号 PUSH A ;键号进栈保护 LK3: ACALL DIR ;调用显示子程序,延时6ms ACALL KS1 ;判键释放方法同查有无键闭合 JNZ LK3 ;等待释放 POP A ;键已释放,键号出栈→A RET NEXT:INC R4 ;查下一列 MOV A,R2 ;是否已扫到最后一列 JNB Acc.7,KND RL A ;键扫描未扫到最后一列,,位选码左移 ;

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档