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

2019-07-15 19:50发布

如题。不需要任何按键参与工作,只是需要我在程序里设定一个初始任意值(例如任意值为27),当我把程序烧录到单片机以后,数码管就会自动地每间隔1秒地从27秒一直跳到99秒,然后又重新跳回至00秒,再又逐秒跳到99秒,又再跳回至00秒,如此循环。 C语言的。  麻烦各位帮个忙啊。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
x835417309
2019-07-16 11:56
samsam 发表于 2014-5-10 10:18
~~ 大侠谢谢啊。。。真心受用,不过我还想追问一下,就是假如其他条件都不变,我现在只是需要再增加一个 ...

呵呵,你是在写时钟吧!#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 x,y=8;//在这里设初值,如: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[x%10];
                delay(10);

                P2=0xfd;
                P0=tab[x/10];
                delay(1);
/**************新加的*********/
                                P2=0xfb;
                                P0=tab[y%10];
                                delay(1);
/****************************/
                a++;
        }
}
void judge()
{
        if(x==99)
        {
                x=0;
                                y++;
        }
/**************新加的*********/
                if(y==9)               
                {
                                y=0;
                }
/***************************/
}
void main()
{
        while(1)
        {
                x++;
                display();
                judge();
        }
}


一周热门 更多>