矩阵按键快捷应用--修改引脚即可

该代码段定义了矩阵按键的引脚配置,并实现了一个按键扫描函数KeyScan()。通过对行和列的逐个扫描,确定按键的位置并转换为对应的数值。在状态判断中,确保按键的稳定触发,避免抖动。最后,根据按键位置计算出对应的数字值并进行处理。
摘要由CSDN通过智能技术生成

直接在这修改矩阵按键引脚即可:

sbit Hang1 = P3^3;

sbit Hang2 = P4^2;

sbit Hang3 = P3^6;

sbit Hang4 = P0^7;

sbit Lie1 = P3^2;

sbit Lie2 = P5^5;

sbit Lie3 = P3^5;

sbit Lie4 = P0^6;

void KeyScan()

{

static unsigned char key_state=0;

unsigned char key_value=0,key_x=0,key_y=0;

Hang1 = 1;Hang2 = 1;Hang3 = 1;Hang4 = 1;

Lie1 = 0;Lie2 = 0;Lie3 = 0;Lie4 = 0;

if(!Hang1)

key_x=3;

else if(!Hang2)

key_x=2;

else if(!Hang3)

key_x=1;

else if(!Hang4)

key_x=0;

Hang1 = 0;Hang2 = 0;Hang3 = 0;Hang4 = 0;

Lie1 = 1;Lie2 = 1;Lie3 = 1;Lie4 = 1;

if(!Lie1)

key_y=4;

else if(!Lie2)

key_y=3;

else if(!Lie3)

key_y=2;

else if(!Lie4)

key_y=1;

//根据x,y的值计算具体位置

key_value=key_x+key_y*4;

//进行按键状态判断

switch(key_state)

{

case 0:

if(key_value!=0)

key_state=1;//第一次扫描

break;

case 1://第二次扫描

if(key_value==0)

key_state=0;

else

{

key_state=2;//第二次扫描还有值 直接进行判断

switch(key_value)

{

case 4:num=4;break;

case 5:num=5;break;

case 6:num=6;break;

case 7:num=7;break;

case 8:num=8;break;

case 9:num=9;break;

case 10:num=10;break;

case 11:num=11;break;

case 12:num=12;break;

case 13:num=13;break;

case 14:num=14;break;

case 15:num=15;break;

case 16:num=16;break;

case 17:num=17;break;

case 18:num=18;break;

case 19:num=19;break;

}

}

break;

case 2:

if(key_value==0)

key_state=0;

break;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值