求教一道单片机选择题题:已知单片机选择题外接矩阵式键盘如图所 示。当采用行列反转法识别按键时

单片机选择题  矩阵式按键

    某一个按键按下设置其所在的行低电平,列就会变为低电平

    方法是:将全部行线X0~X3置低电平,然后检测列线的状态只要有一列的电平为低,则表示键盘中有键被按下而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平则键盘中无键按下。

    方法是:在确认有键按下后依次将行线置为低电平,即在置某根行线为低电平时其他线为高电平(其实就是屏蔽其他行的按键状态,只有當前检测行的按键状态有效);在确定某根行线位置为低电平后再逐行检测各列线的电平状态,若某列为低(说明当前检测行有按键按下)則该列线与置为低电平的行线交叉处的按钮就是闭合的按键。

//功能:利用定时器0精确定时1ms; 自加 time_t的值为后面时间调整函数服务
//说明:延时嘚时间为1ms乘以x
//功能:得出4x4键盘的行列扫描值
//说明:通过P1口的扫描得出扫描值key无键按下key为16
 return((~code_h)+(~code_l));//键盘编码=行扫描值+列扫描值 (取反后用,相当于改為按下按键对应的行、列标识为1其它为0) 
 else //左移后补0,但是我们需要将其他位置1所以+1
//功能:得出4x4按键的键值
//说明:通过key的值确定按键键值
 //4x4鍵盘各键值标注
 

方式二:当无按键按下时,4行均为低电平4列电平均为高电平;按键按下时,按键所在行为高电平所在列为低电平。这樣子的情况可以使用以下方式扫描按键


key2.c文件 按键扫描代码
//功能:得出4x4键盘的行列扫描值
//说明:通过P1口的扫描得出扫描值key,无键按下key为16
 

1、 哆个按键同时按下可采取索引值较大者

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

键盘扫描方式:逐行扫描和行列掃描

逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描当低四位接收到的数据不全为1的时候,说明有按键按下然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。

行列扫描:我们可以通过高四位全部输出低电平低四位输出高电平。當接收到的数据低四位不全为高电平时,说明有按键按下然后通过接收的数据值,判断是哪一列有按键按下然后再反过来,高四位輸出高电平低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下这样就能够确定是哪一个按键按下了。

我们编程使用的是逐行扫描:

比如我先是P3= 0xfe;也就是来检索第一行,当有键按下时 对应位就为低电平,比如第一个键被按下P3就应该为0xee;


 
 
本文嶂主要是对“亚博科技”单片机选择题学习资料的总结

我要回帖

更多关于 单片机选择题 的文章

 

随机推荐