实验三_按键控制解析.docx

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

实验三基于ARM92440linux系统的按键控制一、实验内容(1)学习按键驱动原理,了解ARM实验箱上如何控制键盘的输入(2)设计程序在ARM实验箱上能够正确读出被按的键位。(3)优化按键的部分源程序,能准确写出按照自己的要求设计的按键输入代码,掌握通过CPU的I/O扩展键盘的方法。(4)将写出的代码载入到ARM实验箱上,验证所写的按键程序是否正确。二、实验目的(1) 熟悉Linux操作系统。(2) 熟悉嵌入式系统Ubuntu的开发环境和流程,熟练掌握常用的指令。(3) 掌握按键程序的设计思路,并根据提供的源代码将其简化,编程实现键盘的驱动,通过按键可以在超级终端上显示相应的键值。三、实验设备及工具硬件:ARM9 S3C2440实验箱、PC(CPU:Intel i3,内存:4GB以上)、交叉网线、串口线软件:VMWare10.0.2、ubuntu14.04.1、Secure CRT四、实验原理矩阵键盘又称为行列式键盘,它是用4条I/O线做为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4*4个(如图1),这种行列式键盘结构能够有效的提高嵌入式系统MCU的I/O的利用率(如果采用直连式的键盘,16个按键需要16个I/O口,此举节省了8个I/O口)。S3C2440上key4×4的硬件电路引脚如图:图1:S3C2440上key4×4的硬件电路引脚根据图1找到相应的输入输出接口,通过ARM的rPDATC(低四位)和EINT4567四个中断口扩展4×4的键盘,编程实现键盘的驱动,通过按键可以在超级终端上显示相应的键值。在初始化阶段,所有的行(输出端口)被强行设置为低电平。在没有任何键按下时,所有的列(输入端口)将读到高电平。任何键的闭合将造成其中的一列变为低电平,因此只需再确定是哪一行即可定位被按键的位置。在所有的行中,保持一行为低,其余为高,循环所有行,此时能使列仍然输出低的行即为按键的行号。实验板行扫描线分别连接与PX270的KP_MKOUT0、KP_MKOUT1、KP_MKOUT2、KP_MKOUT6端口相连,列扫描线分别与PX270的KP_MKIN0、KP_MKIN1、KP_MKIN2、KP_MKIN5端口相连。图2PX270支持最大8根行扫描线,8根列扫描线总计64个按键的矩阵键盘,通过对键盘控制寄存器KPC的操作,我们可以自由的定制键盘的扫描工作方式,行扫描线,列扫描线的个数。现在对矩阵键盘驱动中要使用的KPC寄存器主要控制位进行简要的说明(如图3)。图3BIT11:MIE: 矩阵键盘中断使能 1:矩阵键盘中断 0:矩阵键盘不中断BIT12:ME: 矩阵键盘工作模式使能 1:矩阵键盘工作 0:矩阵键盘不工作BIT13~BIT20:MS0~MS7:行扫描线使能 1:对应的行扫描线工作 0:对应的行扫描线不工作BIT23~BIT25:MKCN:行扫描线个数统计 000: 0个 111:7个BIT26~BIT28:MKRN:列扫描线个数统计 000: 0个 111:7个BIT29:ASACT:激活矩阵扫描自动扫描过程 1:激活 0:不激活BIT30:AS:矩阵扫描工作模式选择 1:自动扫描 0:手动扫描设置好KPC之后,就可以调用PX270的键盘扫描功能模块进行键值的扫描。现在就实验板实际连接的电路对扫描的键值加以说明。实验板的16键矩阵键盘的行扫描线是KP_MKOUT0、KP_MKOUT1、KP_MKOUT2、KP_MKOUT6,列扫描线是KP_MKIN0、KP_MKIN1、KP_MKIN2、KP_MKIN5,其对应PX270内置的列扫描线位于第0、1、2、6列,对应的行扫描线为0、1、2、5行。以按下16键矩阵键盘的第4行,第4列的按键为例,根据前面对矩阵键盘工作原理的分析可以知道,其对应的键值应该是PX270第6列,第5行所对应的键值。故实验板上16键矩阵键盘的键值如下表所示:第〇列第一列第二列第六列第〇行0x00(0,0)0x01(0,1)0x02(0,2)0x06(0,6)第一行0x10(1,0)0x11(1,1)0x12(1,2)0x16(1,6)第二行0x20(2,0)0x21(2,1)0x22(2,2)0x26(2,6)第五行0x50(5,0)0x51(5,1)0x52(5,2)0x56(5,6)表1键盘控制过程就是让微处理器按有规律的时间间隔查看键盘矩阵,以确定是否有键被按下。一旦处理器判定有一个键按下,键盘扫描软件将过滤掉抖动并且判定哪个键被按下。每个键被分配一个称为扫描码的唯一标识符。应用程序利用该扫描码,根据按下的键来判定应该采取什么行动。某一时刻按下多个键(意外地或者故意地)的情况被称为转滚。能够正确识别一个新键被按下(即使

文档评论(0)

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

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

1亿VIP精品文档

相关文档