C语言定时器扫描矩阵键盘(矩阵键盘部分)

//还有主函数定时器部分,见另一篇文章

//下面的if语句可改成switch-case

//有问题可以评论或私信

//学习自b站江科大自化协

#include <REGX52.H>

unsigned char Key_KeyNumber;

unsigned char Key_Back()
{
    unsigned char temp;
    temp=Key_KeyNumber;
    Key_KeyNumber=0;
  return temp;
}

unsigned char KEY()
{
    unsigned char KeyNumber=0;
  P1=0xFF;
    P1_3=0;
    if(P1_4==0) KeyNumber=1;
    if(P1_5==0) KeyNumber=5;
    if(P1_6==0) KeyNumber=9;
  if(P1_7==0) KeyNumber=13;
    P1=0xFF;
    P1_2=0;
    if(P1_4==0) KeyNumber=2;
    if(P1_5==0) KeyNumber=6;
    if(P1_6==0) KeyNumber=10;
  if(P1_7==0) KeyNumber=14;
    P1=0xFF;
    P1_1=0;
    if(P1_4==0) KeyNumber=3;
    if(P1_5==0) KeyNumber=7;
    if(P1_6==0) KeyNumber=11;
  if(P1_7==0) KeyNumber=15;
    P1=0xFF;
    P1_0=0;
    if(P1_4==0) KeyNumber=4;
    if(P1_5==0) KeyNumber=8;
    if(P1_6==0) KeyNumber=12;
  if(P1_7==0) KeyNumber=16;
    
    return KeyNumber;
}

void KEY_main()
{
  static unsigned char Nowdata,Lastdata;
    Lastdata=Nowdata;
    Nowdata=KEY();
  if(Nowdata==0&&Lastdata==1) Key_KeyNumber=1;
    if(Nowdata==0&&Lastdata==2) Key_KeyNumber=2;
    if(Nowdata==0&&Lastdata==3) Key_KeyNumber=3;
    if(Nowdata==0&&Lastdata==4) Key_KeyNumber=4;
    if(Nowdata==0&&Lastdata==5) Key_KeyNumber=5;
    if(Nowdata==0&&Lastdata==6) Key_KeyNumber=6;
    if(Nowdata==0&&Lastdata==7) Key_KeyNumber=7;
    if(Nowdata==0&&Lastdata==8) Key_KeyNumber=8;
    if(Nowdata==0&&Lastdata==9) Key_KeyNumber=9;
    if(Nowdata==0&&Lastdata==10) Key_KeyNumber=10;
    if(Nowdata==0&&Lastdata==11) Key_KeyNumber=11;
    if(Nowdata==0&&Lastdata==12) Key_KeyNumber=12;
    if(Nowdata==0&&Lastdata==13) Key_KeyNumber=13;
  if(Nowdata==0&&Lastdata==14) Key_KeyNumber=14;
    if(Nowdata==0&&Lastdata==15) Key_KeyNumber=15;
    if(Nowdata==0&&Lastdata==16) Key_KeyNumber=16;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值