接口课件1~6打包5.1键盘接口幻灯片.pptVIP

接口课件1~6打包5.1键盘接口幻灯片.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 人机交互接口 本章概要 人机交互接口是人与计算机打交道的接口电路。本章主要介绍 3 种常用人机交互接口: 键盘接口 显示器接口 鼠标接口 本章将在Windows下,以VC++6.0为开发工具,编程访问上述接口。 去抖动:时间5~20ms,软件延时或硬件完成 防串键:多键同时按下或前一按键未释放又按下新键的处理 按键识别: 键码产生:得到反映键功能的键码,查表法 5.1 键盘接口 一、概述 编码键盘:内部设有键盘编码器,能识键、生成键码、去抖动、防串键 非编码键盘:只提供键盘矩阵,按键的识别、键码的提供都由软件来完成 键盘接口功能 行扫描:逐行扫描,由列线状态识别 线反转:行列颠倒两次扫描识别 二、 键盘的工作原理 (1)键盘内部的电路结构(以4 ×4键盘为例) (2)键盘内部电路的键扫描工作原理 本行无键按下, Y L3..0=1110 读R3..0 R3..0=1111? N,本行有键按下 L3..0=1101 读R3..0 R3..0=1111? …… N,本行有键按下 判断,处理 判断,处理 本行无键按下, Y 扫描码: 行号、列号拼成字节 三、PC机的键盘接口电路 60H~63H D7..D0 8088 INTR D7..D0 PA 8255 CS 串/并转换 来自键盘的扫描码 INT IRQ1 8259 并行数据 串行数据 CPU响应IRQ1中断后,可读取 8255 PA 口的数据: Key = inprotb(0x60); 四、 PC机的键盘接口编程举例 例1 拦截IRQ1中断,读取 8255 PA 口的键盘扫描码。 注: 8255 PA 口的I/O地址为60H; IRQ1为键盘中断,按下和提起都会发生,其中断类型号 为9; 用 TC 编程。 #include stdio.h #include conio.h #include dos.h void interrupt (*sys_vect09)(); unsigned int key,flag; void interrupt my_vect09() { key=inportb(0x60); flag=1; (*sys_vect09)(); } void main() { flag=0; sys_vect09 = getvect(0x09); setvect(0x09,my_vect09); while(1) { if(flag) { printf(%02x ,key); flag=0; if(key == 0x0010) break;/*if key == ‘Q’,then exit*/ if((key0x0080) == 0x0080) printf(“﹨n); } } setvect(0x09,sys_vect09); } 键盘处理程序 从8255并行接口芯片的 PA(60H)读 取一个字节的数据,如所读取数据D7=1,表示 按键已放开(称为断码), 如D7=0,表示键按下(通 码),而数据的D6~D0则 为按键的扫描码。 例2 运用Windows Hook(钩子)技术获取按键。 Windows环境下,用户程序一般不使用中断。或使用线程技术,或使用Hook(钩子)技术。 什么是Hook? 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,得到控制权。钩子函数先处理该消息,再向系统传递该消息。也可以丢弃该消息。 系统维护着一个钩子链,最近安装的钩子总放在链的开始。 怎样安装Hook? 调用API函数: HHOOK SetWindowsHookEx( int idHook, //钩子的类型,按键为 WH_KEYBOARD HOOKPROC lpfn, //钩子函数的地址 HINSTANCE hMod, //包含钩子函数的模块句柄 DWORD dwThreadId //指定监视的线程。若为NULL,则为全局钩子 );

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档