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

2019-07-15 19:50发布

如题。不需要任何按键参与工作,只是需要我在程序里设定一个初始任意值(例如任意值为27),当我把程序烧录到单片机以后,数码管就会自动地每间隔1秒地从27秒一直跳到99秒,然后又重新跳回至00秒,再又逐秒跳到99秒,又再跳回至00秒,如此循环。 C语言的。  麻烦各位帮个忙啊。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
xunfeng0862
1楼-- · 2019-07-16 00:54
 精彩回答 2  元偷偷看……
chenshichao541
2楼-- · 2019-07-16 03:53
这个简单啊.......................
samsam
3楼-- · 2019-07-16 06:02
chenshichao541 发表于 2014-5-8 22:27
这个简单啊.......................

求程序参考。。。
samsam
4楼-- · 2019-07-16 06:04
xunfeng0862 发表于 2014-5-8 17:19
定义一个全局变量存储这个值,初始化的时候为你定义的值如27。
下面就是配置好定时器,到定时器中断函数里 ...

其实我相关概念还掌握有点不好,你能给个程序参考一下吗?
x835417309
5楼-- · 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();
        }
}

samsam
6楼-- · 2019-07-16 10:26
 精彩回答 2  元偷偷看……

一周热门 更多>