史上最详细矩阵键盘原理.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
史上最详细单片机矩阵键盘原理 广东阳西福达名苑梁智 一、矩阵按键扫描原理 方法一: 1 逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为 的 0 时候,说明有按键按下,然后通过接收到的数据是哪一位为 来判断是哪一个按键被按下。 方法二: 行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时, 说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输 出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。 二、原理图: #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义,最值范围0-65535// typedef unsigned char u8; //对数据类型进行声明定义,最值范围0-255// #define GPIO_DIG P0 //定义P0 口// #define GPIO_KEY P1 //定义P1 口// sbit LSA=P2^2; //用于控制3-8 译码器,位选信号// sbit LSB=P2^3; //用于控制3-8 译码器,位选信号// sbit LSC=P2^4; //用于控制3-8 译码器,位选信号// u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示0~F 的值 void delay(u16 i) //延时函数,i=1 时,大约延时10us// { while(i--); } void KeyDown(void) //按键检测函数// { char a=0; //赋初值给a// GPIO_KEY=0x0f; //P1=0x0f// if(GPIO_KEY!=0x0f) //判断按键是否按下// { delay(1000); //延时10ms 进行消抖// if(GPIO_KEY!=0x0f) //再次检测键盘是否按下,当有按键按下,条件成立// { GPIO_KEY=0X0F; //再次赋值,检测列,赋初值给P1.由上图可知,P1.0-P1.3 为列// switch(GPIO_KEY) //将P1 口读回来的值作为switch 的选择条件// 0 0 0 0 0 P1.7 { 0 0 0 0 0 P1.6 0 0 0 0 0 P1.5 case(0X07): KeyValue=0;break;

文档评论(0)

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

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

1亿VIP精品文档

相关文档