- 打卡等级:以坛为家II
- 打卡总天数:502
- 最近打卡:2025-05-01 08:01:38
已绑定手机
金牌会员
- 积分
- 1441
|
第十一集-矩阵按键— 实验一:数码管第一位显示按键键号
void Seg_Task(void) //数码管显示任务,每毫秒刷新一次
{
if(Key_num == 0xFF) //当未检测到按键按下
{
Display_Seg( SEG_NUM[17] , ~T_NUM[0]);
}
else
{
Display_Seg( SEG_NUM[Key_num] , ~T_NUM[0]); //如果被按下,发送Key_num值
}
}
u8 Key_num = 0xFF;
void Task_1(void)
{
//①第一步:现将P0.0-P0.3输出低电平,P0.6-P0.7输出高电平,如果有按键按下,按下的那一行的IO就会变成低电平,就可以判断出哪一行按下了。
COL1 = 0;
COL2 = 0;
COL3 = 0;
COL4 = 0;
ROW1 = 1;
ROW2 = 1;
if((ROW1==0)||(ROW2==0)) //如果行按键有按下
{
if((ROW1==0)&&(ROW2==0))//如果两行都有按键按下,不处理
{
}
else if (((ROW1==1)&&(ROW2==0))||((ROW1==0)&&(ROW2==1))) //如果有按键按下,而且只有一颗
{
if(ROW1==0) //判断哪一行被按下,输出行开始的序号
{
Key_num =0;
}
else if (ROW2==0)
{
Key_num =4;
}
//②第二步:现将P0.0-P0.3输出高电平,P0.6-P0.7输出低电平,如果有按键按下,按下的那一列的IO就会变成低电平,就可以判断出哪一列按下了。
COL1 = 1;
COL2 = 1;
COL3 = 1;
COL4 = 1;
ROW1 = 0;
ROW2 = 0;
if(COL1==0) //判断哪一列被按下,叠加按键的序号
{
//Key_num = Key_num + 0;
}
else if (COL2==0)
{
Key_num = Key_num + 1;
}
else if (COL3==0)
{
Key_num = Key_num + 2;
}
else if (COL4==0)
{
Key_num = Key_num + 3;
}
}
}
else
{
Key_num = 0xFF; //如果按键没被按下
}
}
|
|