基于亚龙YL236单片机设备的矩阵键盘程序设计.docVIP

基于亚龙YL236单片机设备的矩阵键盘程序设计.doc

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多
基于亚龙YL236单片机设备的矩阵键盘程序设计.doc

基于亚龙YL236单片机设备的矩阵键盘程序设计   摘 要矩阵键盘在单片机技能大赛题目中基本是必备模块,连接贯穿整个题目的设计完成。本文介绍了基于亚龙YL236单片机实验台矩阵键盘的硬件电路分析,电路的驱动以及软件的设计方案。具有可控性好,方便实现的优点,有一定的实用价值。   【关键词】4*4矩阵键盘 亚龙YL236设备 设计   1 亚龙YL236矩阵键盘介绍   1.1 概念介绍   在单片机按键使用过程中,当键盘中按键数量多时为了减少端口的占用,通常将按键排列成矩阵的形式。这样可以更多地节省I/O口的占用量。在亚龙YL236设备上,MCU06指令模块上的4*4矩阵键盘如图1和图2所示。   1.2 硬件介绍   矩阵键盘是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样可以用8个输入口实现16个按键的功能。在实际操作中,用亚龙YL236设备,以矩阵键盘按键后显示0,1,2,3……A,B,C,D,E,F到数码管上为例来最终完成程序的编写。矩阵键盘硬件接线图如图3所示。   2 设计方法分析   2.1 设计方法一:线反转查询法   对于矩阵键盘常用的扫描方法为线反转查询法。具体方法为:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个I/O口是低,说明有键按下,进行下一步,否则退出扫描。如果有键按下,置列为输入,行输出低电平,读列的状态。最后根据行列的状态表就可以知道是哪个键被按下。如图3“A”按键被按下的状态,即十六进制的BBH。按此方法编写表格如表1。   根据线反转查询法,设计出程序流程图如图4所示。   根据流程图,我们编写出它的按键子程序如下:   keyscan()//4*4按键子程序   {P1=0x0f; //列输出低电平,读行的状态   temp1=P1;   if(temp1!=0x0f)//有按键按下   {delay(5); //消抖   P1=0x0f; //列输出低电平,读行的状态   temp1=P1;   if(temp1!=0x0f)//有按键按下   {P1=0xf0;//行输出低电平,读列的状态   temp2=P1;   temp=temp1|temp2;//两者相或   switch(temp)   {case 0xee:flag=0;break;   / 第一个按键被按下   case 0xde:flag=1;break;   case 0xbe:flag=2;break;   case 0x7e:flag=3;break;   case 0xed:flag=4;break;   case 0xdd:flag=5;break;   case 0xbd:flag=6;break;   case 0x7d:flag=7;break;   case 0xeb:flag=8;break;   case 0xdb:flag=9;break;   case 0xbb:flag=10;break;   case 0x7b:flag=11;break;   case 0xe7:flag=12;break;   case 0xd7:flag=13;break;   case 0xb7:flag=14;break;   case 0x77:flag=15;break;}   while(temp2!=0xf0)//松手检测   {P1=0xf0;temp2=P1;}}}   return flag;}   2.2 设计方法二:逐行扫描法   对矩阵键盘逐行扫描。具体方法为,分别扫描键盘的四行,每扫描一行,判断该行有无按键按下,若无按键按下,继续扫描第二行,直到扫描四行结束。若有按键按下,得到按键号,结束程序。   根据设想,设计出程序流程图如图5所示。   根据流程图,我们编写出它的子程序如下:   keyscan()   {P1=0xfe;//给P1口送检测信号111111110,即先检测第一列有无按键 按下   temp=P1; //将检测信号赋给变量temp   temp=temp0xf0; //与去除低四位检测部分   if(temp!=0xf0) //判断是否有按键被按下   {delay(5); //按键防抖动延时   P1=0xfe;   temp=P1; //将检测信号赋给变量temp   temp=temp0xf0;   if(temp!=0xf0) //再次判断   {switch(temp) //利用

文档评论(0)

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

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档