微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 想用AT89C51单片机弄个“任意值—99s”的2位数码管秒表程序

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

时间:10-02 整理:3721RD 点击:
如题。不需要任何按键参与工作,只是需要我在程序里设定一个初始任意值(例如任意值为27),当我把程序烧录到单片机以后,数码管就会自动地每间隔1秒地从27秒一直跳到99秒,然后又重新跳回至00秒,再又逐秒跳到99秒,又再跳回至00秒,如此循环。 C语言的。  麻烦各位帮个忙啊。

定义一个全局变量存储这个值,初始化的时候为你定义的值如27。
下面就是配置好定时器,到定时器中断函数里面去做加

这个简单啊..

求程序参考。

其实我相关概念还掌握有点不好,你能给个程序参考一下吗?

这个相当简单!#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();
        }
}

~~ 大侠谢谢啊。真心受用,不过我还想追问一下,就是假如其他条件都不变,我现在只是需要再增加一个位显,也就是改成能到999的这样一个3位数码管显示的,又该嵌入哪些新语句来实现呢?我就是想把2位和3位的对照着看,如果弄明白了,我就能自己往后再写更高位的了 。所以同样还得麻烦你再给这么一个3位的程序,感谢感谢。

呵呵,你是在写时钟吧!#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();
        }
}

不胜感激! 哈哈哈

能不能帮写个倒计时的 25秒 倒计时到0就停止  复位之后又可以重新倒计时

我写了五位可预置加减计数器,并加入倒计时分钟功能,很好用,可预置数值后就不用去理他了,让机器工作到0会释放继电器自停

啊啊!能加你qq吗?你看下我这个程序有啥问题

加下你QQ呗!看下我这程序有啥问题

我QQ:1767802879.。

AT89C51单片机  顶小编一个  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top