想用AT89C51单片机弄个“任意值—99s”的2位数码管秒表程序

2019-07-15 19:50发布

如题。不需要任何按键参与工作,只是需要我在程序里设定一个初始任意值(例如任意值为27),当我把程序烧录到单片机以后,数码管就会自动地每间隔1秒地从27秒一直跳到99秒,然后又重新跳回至00秒,再又逐秒跳到99秒,又再跳回至00秒,如此循环。 C语言的。  麻烦各位帮个忙啊。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
x835417309
2019-07-16 07:14
这个相当简单!#include<AT89X51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uint n;//在这里设初值,如:n=27
void delay(x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=110;b>0;b--);
}
void display()
{       
        uint a=0;
        while(a<20)
        {
                P2=0xfe;
                P0=tab[n%10];
                delay(10);

                P2=0xfd;
                P0=tab[n/10];
                delay(1);
                a++;
        }
}
void judge()
{
        if(n==99)
        {
                n=0;
        }
}
void main()
{
        while(1)
        {
                n++;
                display();
                judge();
        }
}

一周热门 更多>