数码管动态显示

2019-07-15 11:04发布

如何控制八个数码管组成八位数,然后从个位数0开始计数一直计数到999999999,只能用51,两个573,不能用译码器
最好可以推荐一些学习中断的视频,感谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
凌云飞雨
1楼-- · 2019-07-15 19:50
凌云飞雨 发表于 2017-5-1 11:38
不会啊,初学者

程序写了,但效果不是我想要的
凌云飞雨
2楼-- · 2019-07-15 20:01
只是程序,初学者伤不起啊


#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x07,0x7f,0x6f};//显示1,23456·····
uint g,s,b,q,w,sw,bw,qw,i;                                                                         
void display(g,s,b,q,w,sw,bw,qw);                         //变量 确定显示的段选---A
void delay(void)   //误差 -0.434027777779us
{
    unsigned char a,b;
    for(b=100;b>0;b--)
        for(a=130;a>0;a--);
}
void main()
{
        i=0;
        TMOD=0x01;
        TH0=0x3C;
        TL0=0xB0;

        //TH0=(65536-45872)/256;                                                        //初值化
        //TL0=(65536-45872)%256;

        EA=1;
        ET0=1;
        TR0=1;

        while(1)
        {               
                //if(i==10)
                //        {
                                for(qw=0;qw<10;qw++)
                                {
                                        for(bw=0;bw<10;bw++)
                                        {
                                                for(sw=0;sw<10;sw++)
                                                {
                                                        for(w=0;w<10;w++)
                                                        {                                                                                                                 
                                                                for(q=0;q<10;q++)
                                                                {
                                                                        for(b=0;b<10;b++)
                                                                        {
                                                                                for(s=0;s<10;s++)
                                                                                {
                                                                                        for(g=0;g<10;g++)
                                                                                        {
                                                                                                    display(g,s,b,q,w,sw,bw,qw);       
                                                                                        }
                                                                                        if(g==10)
                                                                                        g=0;
                                                                                }
                                                                        }
                                       
                                                                }
                                                        }
                                                }
                                        }
                                }
                //                i=0;
                //                i++;
                //        }

        }                                                                //表示display   演示                                                                                                  
}
void display(g,s,b,q,w,sw,bw,qw)           
{
        dula=1;
        P0=shu[qw];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xfe;
        wela=0;
        delay();

        dula=1;
        P0=shu[bw];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xfd;
        wela=0;
        delay();

    dula=1;
        P0=shu[sw];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xfb;
        wela=0;
        delay();

        dula=1;
        P0=shu[w];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xf7;
        wela=0;
        delay();

        dula=1;
        P0=shu[q];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xef;
        wela=0;
        delay();

        dula=1;
        P0=shu[b];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xdf;
        wela=0;
        delay();

        dula=1;
        P0=shu[s];
        dula=0;
        P0=0xff;
       
        wela=1;
        P0=0xbf;
        wela=0;
        delay();

        dula=1;
        P0=shu[g];                                                                                                                                                          
        dula=0;
        P0=0xff;                                                //g表示个位数 ----A以下类似  

        wela=1;
        P0=0X7f;
        wela=0;
        delay();
}
void T0zhongduan() interrupt 1
{
    TH0=0x3C;
        TL0=0xB0;

        //TH0=(65536-50000)/256;                                                                                                                                                         
        //TL0=(65536-50000)%256;
        i++;
       
//        g=i%10;
//        s=i%100/10;
//        b=i%1000/100;
//        q=i%10000/1000;
//        w=i%100000/10000;
//        sw=i%1000000/100000;
//        bw=i%10000000/1000000;
//        bw=i%100000000/10000000;
                   if(i==20)
                {
                        i=0;
                        i++;
                }




                       
}

人中狼
3楼-- · 2019-07-15 21:59
 精彩回答 2  元偷偷看……
wulinwl
4楼-- · 2019-07-16 02:55
八个数码管组成八位数,显示9个9有难度,甚至做不到。
太子的空间
5楼-- · 2019-07-16 06:13
没见过过这么多位数的计时器
@曲终人散@
6楼-- · 2019-07-16 08:24
wulinwl 发表于 2017-05-01 13:45
八个数码管组成八位数,显示9个9有难度,甚至做不到。

我也很郁闷

一周热门 更多>