请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 178|回复: 1

求助

[复制链接]

1

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2019-8-9 23:14:17 | 显示全部楼层 |阅读模式
目的:矩阵键盘扫描并返回按键值,数码管动态显示按键值
烧写运行情况:S4、S8、S12、S16(最后一列)不能显示键值
求大佬帮忙分析下,感激不尽。
程序如下:
#include<reg51.h>
#define K P1;
void Delay(unsigned char b)
{
unsigned char i;
while(--b!=0)
{
  for(i=0;i<125;i++);
}
}
unsigned char keyscan()
{
  static unsigned char key,on_off,j;
  P1=0x0f;
  if(P1!=0x0f)
   {
    Delay(20);
    if(P1!=0x0f&on_off==0)
    {
     on_off=1;
         P1=0x0f;
         switch(P1&0x0f)
     {
      case(0x0e):j=0;break;
      case(0x0d):j=1;break;
      case(0x0b):j=2;break;
      case(0x07):j=3;break;
      default:break;
     }
     P1=0xf0;
     switch(P1&0xf0)
     {
      case(0xe0):key=1+4*j;break;
      case(0xd0):key=2+4*j;break;
      case(0xb0):key=3+4*j;break;
      case(0x70):key=4+4*j;break;
      default:break;
     }
    }
        on_off=0;
}
return(key);
}
void Display(unsigned char a)
{
unsigned char code Tab_led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
P2=0xff;
  P0=Tab_led[a%10];
  P2=0xfe;
  Delay(5);
  P2=0xff;  
  P0=Tab_led[a/10];
  P2=0xfd;
  Delay(5);
  P2=0xff;
}
void main()
{
unsigned char k;
while(1)
{
  k=keyscan();
  Display(k);
}
}
回复

使用道具 举报

1

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2019-8-14 21:57:51 | 显示全部楼层
有大佬帮忙指导下吗
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|51开发板专区 STM32开发板专区 PLC工控专区 PLC学习机专区 ( 粤ICP备18101765号 )

GMT+8, 2019-9-22 06:21 , Processed in 0.141106 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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