第4章智能仪器人机交互接口.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章智能仪器人机交互接口剖析

键盘与接口; 重点:;4.1 键盘与接口;(1)按键抖动;(2)单次键入与连击;(3)串键处理;2. 键盘工作原理与接口电路;(1)独立式键盘; 系统首先判断有无按键按下,有键按下,则延时10ms消除抖动,再查询按键状态并执行相应的操作,然后等待按键释放。; 利用定时器产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能处理程序。如图4.6所示为一种定时扫描程序流程图,图中,KM为去抖动标志,KP为处理标志。 ; 前两种方式下,CPU可能空扫描或不能及时响应键输入。 ;(2) 非编码矩阵式键盘;扫描法;扫描法处理步骤;;线反转法;向所有行线输出低电平 ;行设为输出,且输出低电平;列设为输入,读入列线状态。 列设为输出,且输出低电平;行设为输入。读入行线状态。 根据两次读数,合成一个代码,即特征码(特征码中隐含着按键的位置),建立键码与特征码关系。 ; 将第一步中I/O口线的传送方向反过来,即原来作为输出的P1.7~P1.4口线作为输入线,原来作为输出的P1.3~P1.0口线作为输出线。; 由于各特征码离散性很大,不便于编程处理,故可以对按键按顺序编号,得到顺序码。编程时可以通过按下键的特征码查出对应的顺序码,以便于反转处理。; ORG 0200H KEY: MOV P1,#0FH ;从P1高4位输出0000 MOV A,P1 ANL A,#0FH MOV 20H,A ;取P1口低4位存入20H MOV P1,#0F0H ;从P1低4位输出0000 MOV A,P1 ANL A,#0F0H ;取P1口高4位存入A ORL A,20H ;合成特征码 CJNE A,#0FFH,KEY1 ;无键按下则返回 RET ;KEY1: MOV 20H,A ;特征码送到20H MOV DPTR,#KEYTAB MOV R3,#0FFH ;顺序码初始化 KEY2: INC R3 MOV A,R3 MOVC A,@A+DPTR CJNE A,20H,KEY3 ;未找到特征码,继续查找 MOV A,R3 ;顺序码存入A RET KEY3: CJNE A,#0FFH,KEY2;特征码表没查完,查下一个值 MOV A,#0FFH ;无键按下处理,赋A值 RET KEYTAB: DB 0EEH,0DEH,0BEH,07EH,0EDH,0DDH, DB 0BDH,07DH, 0EBH,0DBH,0BBH,07BH DB 0E7H,0D7H,0B7H,077H, 0FFH ;空键特征码;3.键值分析程序;(1)单义键的键值分析程序设计; CLR C SUBB A,#0AH ;判断是数字键还是命令键 JC DIGIT ;是数字键则转数字处理子程序 MOV DPTR,#TAB ;键处理入口地址表首地址 ADD A,A ;键值×2 JNC NADD INC DPH ;大于255时,DPH+1 NADD:JMP @A+DPTR ;转至键处理子程序入口地址 TAB: AJMP PROG ;键处理子程序入口地址表 AJMP PROG2 …… AJMP PROGn DIGIT:…… ;数字键处理,送显示缓冲区;(2) 多义键的键值分析程序设计; 在组成一个命令的按键序列中,除了取决于以前按了什么键,还取决于当前按了什么键,因此对于多义键的键盘管理程序,首先要判断一个按键序列(而不是一次按键)是否已构成一个合法命令,若已构成合法命令,则执行命令,否则等待新的按键键入。 ;例: 以一8回路温控仪为例说明多义键的键盘管理程序设计过程。 ;;;图4.14 多义键键值分析程序流程图; 假设6个按键直接与单片机的P1.0~P1.5连接,键编码分别是FEH(R)、FDH(S)、FBH(△)、F7H(▽)、EFH(C)、DFH(P),内存RAM 20H中高4位为回路号,低4位为参数号. ; RUN: JNB 07H,RUN1 ;若C≠8,则转RUN1 RET RUN1: …… ;运行子程序 RET STOP: …… ;停止当前回路运行子程序 RET INCR: JNB 07H,INC1 ;若C≠8,则转INC1 RET INC1:MOV R0,#20H MOV A,@R0 ANL A,#0FH CJNE A,#01H,INC2 ;若P≠1,则转INC2 RET INC2: …… ;当前回路的P参数+1 RET DECR:

文档评论(0)

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

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

1亿VIP精品文档

相关文档