找回密码
 立即注册
楼主: 小涵子爸爸

Ai8051U学习打卡记录贴

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

积分
1441
发表于 昨天 15:22 | 显示全部楼层
第十一集-矩阵按键— 实验一:数码管第一位显示按键键号

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;  //如果按键没被按下
    }   
}





靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 16:54 , Processed in 0.104416 second(s), 44 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表