找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9097|回复: 6
收起左侧

两个2位数码管动态显示倒计时问题

[复制链接]
ID:350162 发表于 2018-6-12 12:04 | 显示全部楼层 |阅读模式
QQ截图20180612120036.jpg 单一个数码管倒计时,可以正常显示,但另一个数码管会有乱码,两个同时倒计时全部乱码。
QQ截图20180612115929.jpg
QQ截图20180612115947.jpg
回复

使用道具 举报

ID:320306 发表于 2018-6-12 12:30 | 显示全部楼层
复用没做好吧!!!
回复

使用道具 举报

ID:105364 发表于 2018-6-12 13:13 | 显示全部楼层
显示另一位时,上一位要消隐,就是发先灭掉
回复

使用道具 举报

ID:350462 发表于 2018-6-12 17:25 | 显示全部楼层
两个管子都连一起的话,要想同时显示,需要关闭(消隐)后打开另一个管子的控制段
回复

使用道具 举报

ID:350162 发表于 2018-6-12 18:05 | 显示全部楼层
47okey 发表于 2018-6-12 13:13
显示另一位时,上一位要消隐,就是发先灭掉

试过在延时后加P3=0x00,那样就整个不亮了
回复

使用道具 举报

ID:350162 发表于 2018-6-12 18:10 | 显示全部楼层
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={50,3,25};
uchar code table2[]={55,20,3};
uchar a=50,b=55,n=0,m=0;
uchar j,k,c3,c2,c1,c0;
uchar pp;

void delay(unsigned int i)
{
        int j;
        for(i;i>0;i--)
                for(j=20;j>0;j--);
}

void display(uchar x,uchar y,uchar o,uchar p)
{
        P2=0x02;
        P3=table[x];
        delay(5);
        P3=0xff;
       
        P2=0x01;
        P3=table[y];
        delay(5);
        P3=0xff;

        P2=0x04;
        P3=table[o];
        delay(5);
        P3=0xff;

        P2=0x08;
        P3=table[p];
        delay(5);
        P3=0x00;
}

void main()
{
        TMOD=0x01;                 
        TR0=1;                         
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        ET0=1;                         
        EA=1;                       
        while(1)
        {
                if(TF0==1)                       
                {
                        TF0=0;
                        pp++;
                        TH0=(65536-46080)/256;
                        TL0=(65536-46080)%256;
                }
                if(pp==20)
                {       
                        pp=0;
                        a--;
                        b--;
                        if(a==0)
                        {
                                n++;
                                a=table1[n];
                                if(n==2)
                                {
                                        n=0;
                                }          
                        }
                        if(b==0)
                        {       
                                m++;
                                b=table2[m];                       
                                if(m==2)
                                {
                                        m=0;
                                }
                        }
                }
                c0=a%10;                 
                c1=a/10;
                c2=b%10;
                c3=b/10;
                display(c1,c0,c2,c3);
        }
}
回复

使用道具 举报

ID:350162 发表于 2018-6-12 18:10 | 显示全部楼层
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={50,3,25};
uchar code table2[]={55,20,3};
uchar a=50,b=55,n=0,m=0;
uchar j,k,c3,c2,c1,c0;
uchar pp;

void delay(unsigned int i)
{
        int j;
        for(i;i>0;i--)
                for(j=20;j>0;j--);
}

void display(uchar x,uchar y,uchar o,uchar p)
{
        P2=0x02;
        P3=table[x];
        delay(5);
        P3=0xff;
       
        P2=0x01;
        P3=table[y];
        delay(5);
        P3=0xff;

        P2=0x04;
        P3=table[o];
        delay(5);
        P3=0xff;

        P2=0x08;
        P3=table[p];
        delay(5);
        P3=0x00;
}

void main()
{
        TMOD=0x01;                 
        TR0=1;                         
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        ET0=1;                         
        EA=1;                       
        while(1)
        {
                if(TF0==1)                       
                {
                        TF0=0;
                        pp++;
                        TH0=(65536-46080)/256;
                        TL0=(65536-46080)%256;
                }
                if(pp==20)
                {       
                        pp=0;
                        a--;
                        b--;
                        if(a==0)
                        {
                                n++;
                                a=table1[n];
                                if(n==2)
                                {
                                        n=0;
                                }          
                        }
                        if(b==0)
                        {       
                                m++;
                                b=table2[m];                       
                                if(m==2)
                                {
                                        m=0;
                                }
                        }
                }
                c0=a%10;                 
                c1=a/10;
                c2=b%10;
                c3=b/10;
                display(c1,c0,c2,c3);
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表