嵌入式实验三人机交互接口-键盘操作实验.docxVIP

嵌入式实验三人机交互接口-键盘操作实验.docx

  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文档。上传文档
查看更多
嵌入式实验三人机交互接口-键盘操作实验

实 验 报 告课程名称 嵌入式系统设计 实验仪器 清华同方辰源嵌入式系统实验箱 实验名称 实验三:人机交互接口-键盘操作实验系 别计算机学院 专 业 计算机科学与技术 班级/学号学生姓名 实验日期 成 绩 指导教师 实验三:人机交互接口-键盘操作实验实验问题回答键盘的工作原理是什么?答:键盘分独立式键盘与矩阵式键盘。独立式键盘: 在由单片机组成的测控系统及智能化仪器中,用的最多的是独立式键盘。这种键盘具有硬件与软件相对简单的特点,其缺点是按键数量较多时,要占用大量口线。 当按键没按下时,CPU对应的I/O接口由于内部有上拉电阻,其输入为高电平;当某键被按下后,对应的I/O接口变为低电平。只要在程序中判断I/O接口的状态,即可知道哪个键处于闭合状态。 矩阵式键盘: 矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上。一个3*3的行列结构可以构成一个有9个按键的键盘。同理,一个4*4的行列可以构成一个16按键的键盘。很明显,在按键数量较多的场合,与独立式键盘相比,矩阵式键盘要节省很多I/0接口。 键盘按键识别方法分扫描法语线反转法。扫描法:扫描法有行扫描和列扫描两种,无论采用哪种,无论采用哪种,其效果是一样的,只是在程序中的处理方法有所区别。下面以列扫描法为例来介绍扫描法识别按键的方法。首先在键处理程序中将P1.4-P1.7依次按位变低,P1.4-P1.7在某一时刻只有一个为低。在某一位为低时读行线,根据行线的状态即可判断出哪一个按键被按下。如2号键按下,当列线P1.5为低时,读回的行线状态中P1.0被拉低,由此可知K2键被按下。一般在扫描法中分两步处理按键,首先是判断有无键按下,如行线有一个为低,则有键按下。当判断有键按下时,使列线依次变低,读行线,进而判断出具体哪个键被按下。 线反转法:扫描法是逐行或逐列扫描查询,当被按下的键处于最后一列时,要经过多次扫描才能最后获得此按键所处的行列值。而线反转法则显的简练,无论被按的键处于哪列,均可经过两步即能获得此按键所在的行列值。???? 首先将行线P1.0-P1.3作为输入线,列线P1.4-P1.7作为输出线,并且输出线输出全为低电平,读行线状态,则行线中电平为低的是按键所在的行。然后将列线作为输入线,行线作为输出线,并将输出线输出为低电平,读列线状态,则列线是电平为低的是按键所在的列。综合上述两步结果,确定按键所在的行和列,从而识别出所按下的键。???? 假设10号键被按下,在第一步P1.3-P1.0全为低电平时,读P1.4-P1.7的值,则P1.5为低电平;在第二步P1.4-P1.7输出全为低电平时,读P1.3-P1.0时,P1.2为低电平。由此可判断第3行第2列有键被按下,此键就是K10键。键盘等其他外部设备与CPU之间如何协调工作?答:cpu通过I/O接口和外部设备进行数据交换。cpu通过接口对外设进行控制的方式有以下几种:程序查询方式、中断处理方式、DMA传送方式。在实验报告中对键盘中断服务程序进行逐行注释,理解计算机是如何接收键盘输入的。答:void GPIO_PORT_D_ISR(void){unsigned char ucKey; //定义一个unsigned char类型的变量 ucKeyunsigned long ulStatus; //定义一个unsigned long 类型的变量 ulStatusulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true); //读取中断状态GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);//清空读取到的中断if(ulStatus GPIO_PIN_7)//如果GPIO_PIN_7中断状态有效{ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4);//读取管脚ucKey = ucKey1;//ucKey右移一位ucValue = ucValue + ucKey;//ucValue+1ucValue = ucValue1;//ucValue左移一位i++;if(i==4)//如果发生四次中断{i=0;//i置0 Event_Key=1;//Event_Key置一,代表按键信息已传给cpuoledkey[1]=\0;给oledKey[1]赋值\0if((ucValue4)10)//如果ucValue右移四位后小于10oledkey[0] = (ucValue4) + 48;//则oledkey[0]右移四位后加48else oledkey[0] = (ucValue4) - 10 +

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档