在键盘检测中把P3口的值赋给随机变量temp,然后和0xf0相与,通过结果判断temp高四位有没有0.从而判断出4x4矩阵的第一行有没有按键被按下问题是temp的高四位是列的线,怎么可以判断出行中有没有被按下,另外的问题,如果有一个按键被按下,是不是它所在的行列线的电平都会变成低电平
是不是两个值相或之后的结果中有两个0 ,表示的就是此按键的行与列?
追答4*4键盘,如果有键按下的话,每一个键都对应了一个值,例如77,EE等等。
本回答被提问者采纳单片机键盘4x4矩阵 很简单的仿真实例,供参考
单片机 键盘检测与应用
独立键盘检测原理基于按键与I\/O口的连接,通过程序赋值为高电平,不断检测I\/O口电平变化。当按键未按下,电平为高;按键按下时,I\/O口电平变为低。程序检测到电平变化,即认定按键被按下,执行相应操作。按键在闭合和断开时存在抖动现象,对单片机I\/O口产生干扰。为解决这一问题,常采用硬件和软件两...
51单片机矩阵键盘检测方面的问题
第一个问题,应该是考虑如果先开锁存器,在那一时刻,P0的值还是上一次给P0赋的值,下在一条语句才将这次的值给P0,这样会造成数码管的余辉,静态显示的时候,因为太快看不到,动态显示时,就会比较明显了。第二个问题他的程序应该检测的是高四位,是否被拉低,因为temp和0xf0与,低四位不管是什...
单片机键盘检测的问题
先在 P3.0 输出 0,(其它位都输出1),即第一行为0。之后,就可以:《把P3口的值赋给随机变量temp,然后和0xf0相与,通过结果判断temp高四位有没有0.从而判断出4x4矩阵的第一行有没有按键被按下》。--- 另外的问题,如果有一个按键被按下,是不是它所在的行列线的电平都会变成低电平 只...
单片机矩阵键盘检测的疑问
temp=temp&0xf0; \/\/temp&1111 0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。while(temp!=0xf0) \/\/上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图){ delay(5);temp=P...
单片机的检查按键的问题
一般的键盘扫描程序,都是先使P1=0xf1(或0xf2,0xf4,0xf8,第次扫描一行),确定是哪一列。
c51单片机 在矩阵键盘松手检测的原理是什么?为什么要加松手程序?不加又...
如果你不检测松开,你按下去的时间他整个程序扫描几遍了,会运行很快的,相当于只要是按着的,他就会检测 ,但是这按下去的这段时间他检测几遍了,就像你按了几次,如果加了,他就会检测按下去的键松开了没有,没有就会一直等待。
单片机 c语言键盘检测 的问题 谢谢
答:不行。你把原程序中这一句变了:while(temp!=0xf0){ temp=P3;temp=temp&0xf0;} 如果在执行完判断后不给temp再次赋上P3的值(temp=P3)它永远跳不出while(temp!=0xf0)这个循环。但如果已经不按键了,就该跳出这个函数了,可是你这样一该,永远也出不去。
单片机 独立键盘检测问题
你好,程序中一共出现了两次temp=p3;temp=temp&0xf0;第一次出现的时候表示单片机检测到按键动作,但为了准确性,防止是无意识的出发,因此用一个delay函数,延时5MS。再次检测P3的状态!此时temp=p3;temp=temp&0xf0;说明的确是按键按下,而不是误触发!因此起到一个去抖动的作用!望采纳,谢谢!
单片机独立键盘检测问题,第一位数码随着按键从0到9变化,
一、while(!key1); 当程序运行到这条语句的时候,key1如果一直是0,程序就不往下走了,一直停在这条语句,并不断的检测key1的状态。二、你的程序的if语句少了个花括号。void main(){ P3=0xff;while(1){ if(key1==0){ d1=0;num++;if(num==10)num=0;while(!key1);} else d1...
单片机按键问题
采用的是边沿检测,即有电平跳变就改变输出。如果想按键按住的时候灯亮,不按的时候灯不亮 采用电平触发,即当电平维持是正或者负的时候才稳定输出。2.也可以用查询方式 比如 一般程序按键按下后 灯亮 然后按键松开灯还是亮的 if(P1^1==0) \/\/判断是否按下键盘 { delay10ms(); \/\/延时,...