第七章 键盘驱动程序 Linux设备驱动程序 教学课件.pptVIP

第七章 键盘驱动程序 Linux设备驱动程序 教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 键盘驱动程序 Linux设备驱动程序 教学课件

设备驱动程序 第七章 键盘驱动程序 目录 键盘接口概述 键盘的驱动程序设计实例 IIC接口芯片ZLG7290扩展键盘 智能控制芯片HD7279扩展键盘 目录 键盘接口概述 键盘的驱动程序设计实例 IIC接口芯片ZLG7290扩展键盘 智能控制芯片HD7279扩展键盘 键盘接口概述 键盘在嵌入式系统中是一个非常关键的组成部件,它能够完成向计算机输入数据、传送命令等工作,是用户与嵌入式系统进行人机交互的主要手段之一。 键盘实际上是按键开关的集合。通常,按键开关为机械弹性开关,利用机械触点的闭合、断开关系来实现电路的接通和断开。 键盘的分类 线性键盘 它是指每个按键都占用嵌入式处理器的 一个I/O端口,并通过这个I/O端口实现 人机交互,各个按键之间互不影响。 这种方法简单、可靠,但是对I/O端口的 占用量很大。 矩阵键盘 它是指当按键数量过多时,采用矩阵的 排列方法,将键盘设计成N行M列的矩 阵形式。其中,每个按键占用行和列的 一个交点,并且以行和列为单位引出信 号线。 这样总共有N+M根信号线,虽然需要与 N+M个I/O端口相连,却可以驱动N*M个 按键。大大减少了对嵌入式处理器I/O端 口的占用,节省了宝贵的资源。 键盘的分类 编码键盘 它使用硬件设备来实现按键位置的扫描和确认,例如8279专用接口芯片。 非编码键盘 它是指系统有专门的软件 程序负责矩阵键盘中按键 位置的扫描和确认工作。 根据扫描方法的不同,可 以分为行扫描法,列扫描 反转法。 键盘的防抖 从前图4-1可以看出,在按下按键和抬起按键的过 程中,电压信号出现很多毛刺,这主要是由机械 按键的弹性作用引起的。尽管触点看起来非常稳 定,而且快速地闭合,但相比于嵌入式处理器的 运行速度,这种动作是比较慢的。 这种脉冲在某些按键功能设计时,可能会带来难 以想像的影响,为了解决这个问题,人们开始对 按键信号进行防抖检测,如图4-6。 按键防抖检测的核心思想是在一段时间内(如嵌 入式处理器的几个时钟周期),通过对按键信号 进行多次访问,查看电平状态是否保持一致,如 果保持一致,则说明按键状态已经稳定;否则, 说明之前检测到的按键信号是抖动信号或外界干 扰信号,系统将不会对其进行任何处理操作。 键盘的扫描 键盘的扫描目的是确定按键的位置,然后根据按键和编程实现的功能进行响应操作。 扫描的过程就是让嵌入式处理器按照一定规律的时间间隔查看键盘矩阵,确定是否有按键被按下。当处理器判定有按键被按下时,键盘扫描软件将过滤掉抖动信号并判定是哪个按键被按下。 每一个按键都会被分配一个标识符,人们称其为键盘扫描码,应用程序利用这些扫描码判断按键位置并根据软件的设计做出相应的响应。 行扫描算法 在键盘初始化阶段,所有的行(输出端口)都被强行设置为低电平。当没有任何按键按下时,所有的列(输入端口)将读到高电平;当有按键按下时,至少会有一列变为低电平。因此,嵌入式处理器仅需要察看各列值是否变成低电平便可以判断是否有按键被按下。 当处理器检测到有按键被按下时,需要确定按键的位置。处理器只需要在其中的一列上输出低电平,然后循环扫描键盘的行喜好。如果在某行上的输入端口上发现了一个0值,处理器就可以判断在此行上有按键被按下;相反,如果此行的输入端口是高电平,则说明闭合的按键不在此行。 行扫描算法 嵌入式处理器通过这种方法对每一行进行循环 检测,直到发现电平为0的行为止。一旦识别 出了闭合按键的所在行,再通过锁定输入端口 上的低电平来确定闭合按键的所在列,行列的 交点就是需要确定的闭合按键。详细流程如图 4-7。 为了去除按键回弹的问题,嵌入式处理器按规 定的时间间隔对键盘信号进行采样。这个间隔 通常在20-100ms之间,它主要取决于所使用开 关的回弹特征。 扫描算法的另一个特点是自动重复功能。自动重 复是指当用户按下一个按键长时间不抬起时,这 个按键的扫描码可以被重复地插入缓冲区,直到 缓冲区满为止。 列扫描算法 与行扫描算法原理基本相同,只需要将行信号线与列信号线对应交换连接,对行信号的操作与对列信号的操作交换即可。 反转算法 它主要分两步确定按键位置 首先判定出是否有按键按下以及闭合按键所在的行或列。 将行、列的输入输出状态啊与第一步中的状态反向(交换),此时列(行)中的0电平和第一步中行(列)的0电平对应位就是按下的键。 键盘的缓冲算法 有时,处理器可能不能及时处理按键信息,为了避免丢失按键请求,人们通常会开辟一个缓冲区来存储键盘扫描码。 系统将接收的按键扫描码先存放在缓冲区内,等待应用程序可以处理这个按键信息为止,缓冲区的大小视应用程序的需求而定。 缓冲区的实现是通过一个环形队列完成的。当某个按键被按下后,扫描代码就会被放置在队列的下一个空位置上,当应用程序从缓冲区中取走一个扫

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档