我是新手,请教大家一个小小的问题…………谢谢大家

2019-07-15 20:58发布

我想控制按键k1-k7依次亮数码管的a-g灯,我写的程序
#include<reg52.h>
main(void)
{
    unsigned char table[]={0xfe,0xfd,0xfb,0xf7,
                           0xef,0xdf,0xbf};
    while(1)
     {
      switch (P3)
              {
                 case 0xfe:P1=table[0];break;
                 case 0xfd:P1=table[1];break;
                 case 0xfb:P1=table[2];break;
                 case 0xf7:P1=table[3];break;
                 case 0xef:P1=table[4];break;
                 case 0xdf:P1=table[5];break;
                 case 0xbf:P1=table[6];break;
                 default:break;
              }
        }
}

结果变成按键2-8显示我想要的结果了、、、、、
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
olive2003
1楼-- · 2019-07-15 21:35
看你硬件怎么接法了。
洛阳单片机
2楼-- · 2019-07-15 22:54
看看是不是原理图看错了
钟情的屌丝男
3楼-- · 2019-07-15 23:47
#include<reg52.h>
sbit k1=P1^0;
sbit k2=P1^1;
          .
          .
          .
          .
sbit k7=P1^6;
void main()
{
  while (1)
  {
          if (k1=0;)//有的是低电平有效
        P2=0x01;  //高电平有效
        if(k1=0)
        P2=0x02;
         
         ...

         if(k7=0)
         P2=0x40;
  }
}
简单实用的方法
chenhengjin
4楼-- · 2019-07-16 02:10
#include<reg52.h>
main(void)
{
    unsigned char table[]={0xfe,0xfd,0xfb,0xf7,
                           0xef,0xdf,0xbf};
    while(1)
     {
      switch (P3)     //按键的键码值
              {
                 case 0xfe:P1=table[0];break;
                 case 0xfd:P1=table[1];break;
                 case 0xfb:P1=table[2];break;
                 case 0xf7:P1=table[3];break;
                 case 0xef:P1=table[4];break;
                 case 0xdf:P1=table[5];break;
                 case 0xbf:P1=table[6];break;
                 default:P1=0xff;break;  //把所有的LED灯熄灭
              }
        }
}
这个 程序没有消抖,在对实时性要求不高的场合可以用

一周热门 更多>