发布网友 发布时间:2022-04-22 04:59
共3个回答
热心网友 时间:2023-08-14 18:00
可以参考:
http://hi.baidu.com/%d7%f6%b6%f8%c2%db%b5%c0/blog/item/ef086222268d4f4eac34de59.html
程序中,读取4*4矩阵键盘的函数,可以得到0~f,和16。
当读出为16的时候,即是按键放手了,可以执行对应的功能程序。
热心网友 时间:2023-08-14 18:01
P3=0xfe;
//P3=0b1111
1110,令P3.0=0,同时令高四位为高电平,作好读端口准备(51IO特点)
temp=P3;
//读回P3口的状态
temp=temp&0xf0;
//temp&1111
0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。
while(temp!=0xf0)
//上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图)
{
delay(5);
temp=P3;
temp=temp&0xf0;//这三句跟上面重复,功能是软件消抖
while(temp!=0xf0)
//延时一段时间后判断还有按键按下,说明是真有按键按下,进入按键扫描与键值的判断,否则可能是意外抖动引起的,就不进行按键扫描。
{
temp=P3;
switch(temp).....
我想注释完应该能读懂,关键是要理解矩阵键盘的扫描原理。
热心网友 时间:2023-08-14 18:01
取那一时刻p3口的值,执行P3=0xfe
是为了等待最低位0将某高位拉低,置0.
其实4X4
有很多的检测方法,按照你所给你的代码来看,应该属于行列扫描形式,因为你知道第几行第几列,就知道键值了,懂起不?