- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.3.2 DAC0832接口 * 10 单片机典型外围接口技术 10.1 键盘接口 图10-4 独立式键盘接口电路 KEYSCAN:MOV P1,#0FFH ;置P1口为输入态 MOV A,P1 ;读入键值 LCALL D10ms ;延时10ms MOV B,P1 ;再读键值 CJNE A,B,GORET ;两次键值不一致,直接返回 JNB ACC.0,KEY0 ;0号键按下,转 0号键功能程序 JNB ACC.1,KEY1 ;1号键按下,转1号键功能程序 JNB ACC.2,KEY2 ;2号键按下,转2号键功能程序 GORET:RET ;从键盘服务子程序返回 KEY0: LCALL FUNC0 ;执行0号键功能服务程序 RET ;从键盘服务子程序返回 KEY1: LCALL FUNC1 ;执行1号键功能服务程序 RET ;从键盘服务子程序返回 KEY2: LCALL FUNC2 ;执行2号键功能服务程序 RET 10.1.1 按键去抖动 10.1.3 矩阵式键盘 ① 判别是否有键按下 首先使所有行线为低电平,当键盘上没有键按下时,所有列线为高电平;当有任一键被按下时,总有一根列线为低电平。 ② 识别按键位置(行扫描法) ③ 键值的计算 设键盘为KH×KL矩阵键盘,其中KH为行数,KL列数。如果由行扫描法得按下按键的行号和列号分别为m和n,则所按下按键的键值为:m×KL+n。 图10-5 4×4矩阵键盘电路图 图10-4其键盘扫描程序如下: KEYSCAN: ACALL KSCAN ;查有没有键按下 JZ GORET ;(A)=0表示没有键按下,返回 LCALL D10ms ;有键按下,延时10ms ACALL KSCAN ;再查有没有键按下 JZ GORET ;(A)=0表示没有键按下,返回 ACALL KEYNUM ;有键按下,行扫描法确定键值 CLR C RLC A RLC A ;键值×4 MOV DPTR,#FTAB ; JMP @A+DPTR;散转,执行所按键相应功能子程序 GORET: RET FTAB:LCALL FUNC0 ;调用0号键功能子程序 RET LCALL FUNC1 ;调用1号键功能子程序 RET ┇ LCALL FUNC15 ;调用15号键功能子程序 RET LCALL ERRSUB ;键值为16,异常处理 RET DONE: SJMP $ SJMP DONE SJMP DONE SJMP DONE SJMP DONE ;KSCAN为判有无键按下子程序,(A)≠0表示有键按下 KSCAN: MOV P1,#0F0H ;行线置低电平,列线置输入态 MOV A,P1 ;读列线数据 CPL A ;A取反 ANL A,#0F0H ;屏蔽行线 RET ;KEYNUM为求键值子程序,键值在累加器A中 KEYNUM:MOV R6,#00H ;键初值赋0,R6存放每行最左键的键值 MOV R7,#0FEH ;准备扫描第0行 LOOP: MOV P1,R7 ;逐行输出0扫描 MOV A,P1 ;读列线数据 SWAP A ;A的高4位和低4位互换 JB ACC.0,COL1 ;第0列无键按下,转查第1列 MOV A,#0 ;第0列有键按下,0→(A) SJMP KSOLVE ;转求键值 COL1: JB ACC.1,COL2 MOV A,#1 SJMP KSOLVE COL2: JB ACC.2,COL3 MOV A,#2 SJMP KSOLVE COL3: JB ACC.3,NEXT ;4列均无键按下,本行扫描结束 MOV A,#3 ;第3列有键按下,3→(A) SJMP KSOLVE NEXT:MOV A,R7 ;准备扫描下一行 JNB ACC.3,ERR ;扫描完,未读到键值,异常处理 RL A ;R7循环左移一位 MOV R7,A ;得下一行行扫描字 ADD R6,#4 ;得下一行首键键值,因每行有4个按键 SJMP LOOP ;转LOOP,扫描下一行 ERR: MOV A,#16 ;键值赋16表示出错! RET KSOLVE:ADD A,R6 ;得键值 PUSH ACC ;键值压栈 WATT:ACALL KSCAN ;查按键释放否? JNZ WATT ;没有释放,等待 POP ACC RET D10ms:MO
您可能关注的文档
- 南华大学医学院临床检验基础课件 第八章.ppt
- 南华大学医学院临床检验基础课件 第二章第二节.ppt
- 南华大学医学院临床检验基础课件 第二章第三节.ppt
- 南华大学医学院临床检验基础课件 第二章第四节.ppt
- 南华大学医学院临床检验基础课件 第二章第五节.ppt
- 南华大学医学院临床检验基础课件 第二章第一节.ppt
- 南华大学医学院临床检验基础课件 第六章.ppt
- 南华大学医学院临床检验基础课件 第七章第八节.ppt
- 南华大学医学院临床检验基础课件 第七章第二节.ppt
- 南华大学医学院临床检验基础课件 第七章第九节.ppt
- 中国石灰石、石膏开采市场前景及投资研究报告.docx
- 防溺水水域安全隐患督查统计表 .pdf
- 2024年医疗行业综合整治行动”工作总结(2篇) .pdf
- 管道尺寸规格表3全集文档 .pdf
- 2024年机械设备操作安全管理制度(三篇) .pdf
- 集团SAP项目用户操作手册 YH FI-204销售收款(非承兑汇票)处理V2.0.pdf
- 2024年人教版一年级下册教学计划范本(7篇) .pdf
- 2023-2024学年高中历史人民版必修1专题四 现代中国的政治建设与祖国统一完整版72738447.pdf
- 2023年-2024年教师招聘之小学教师招聘真题练习试卷A卷附答案.pdf
- 米小圈上学记读书笔记.doc
文档评论(0)