现有一个51单片机系统,P2口接一个共阳极的LED数码管,编写程序满足如下要求:

2025-03-13 13:21:11
推荐回答(3个)
回答1:

你怎么不用中断来写呢。用delay来写也行,但是运行效率不高,你别“P1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;”这样赋值,你用
main()
{
char i=0;
delay()
{
//这部分你自己写了
}
while(1)
{
delay();
switch(i)
{
case 0:
P1=0xc0;
i++;
break;
case 1:
//你自己仿照一下吧,这里
i++;
break;
//这里 ,你自己仿照一下吧,一直到 case 7:
case 8:

P1=0x90;
i=0;
break;
default:
break;
}
}
}
这里只给了你初步入门的思路,正是写程序别这么干,delay()能不用别用,这东西会让你的CPU堵塞,使得其利用率大大降低,的如果代码大了,可能会让你的CPU运行起来很卡。另外你程序里出现的是P1,但你的题目描述是P2,如果真是P2口,那么我给你的程序中P1要改为P2,还有就是还不知你的硬件接的对不,要注意一点,51单片机是弱上拉的。

回答2:

当然错了,delay函数申明时是没有参数的,你调用是加了参数:delay(10000);

回答3:

……
    while(1)  {
      for (k = 0; k < 10; k++)  {
        P1 = led[k];
        delay(10000);
      }
    }
}