找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1930|回复: 0
收起左侧

电子时钟设计,有什么问题,为什么数码管不显示

[复制链接]
ID:339741 发表于 2018-5-28 14:34 | 显示全部楼层 |阅读模式
#include<reg51.h>
#define char unsigned char
char code dis_7[12]=
{
        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xb2,0xf8,0xff,0xbf
};
char code scan_con[8]=
{
        0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
char data dis[8]=
{
        0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00
};
char data timedata[3]=
{
        0x00,0x00,0x00
};
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^0;
sbit key1=P2^1;
sbit key2=P3^2;
delay1ms(int t)
{
        int i,j;
        for(i=0;i<t;i++)
                for(j=0;j<200;j++);               
}
keyscan()
{
        EA=0;
        if(key0==0)
        {
                delay1ms(10);
                while(key0==0);
                con++;TR0=0;ET0=0;
                if(con>=0)
                {
                        con=0;TR0=1;ET0=1;
                }
        }
        if(con!=0)
        {
                if(key1==0)
                {
                        delay1ms(10);
                        while(key1==0);
                        timedata[con]++;
                        if(con==2)con1=24;else con1=60;
                        if(timedata[con]>=con1)
                        {
                                timedata[con]=0;
                        }
                }
        }
                if(con!=0)
                {
                        if(key2==0)
                        {
                                delay1ms(10);
                                while(key2==0);
                                timedata[con]--;
                                if(con==2)con2=23;else con2=59;
                                if(timedata[con]<=2)
                                {
                                        timedata[con]=con2;
                                }
                        }
                }
                EA=1;
}
scan()
{
        char k;
        dis[0]=timedata[0]%10;
        dis[1]=timedata[0]/10;
        dis[3]=timedata[1]%10;
        dis[4]=timedata[1]/10;
        dis[6]=timedata[2]%10;
        dis[7]=timedata[2]/10;
        for(k=0;k<8;k++)
        {
                P0=dis_7[dis[k]];
                P2=scan_con[k];
                delay1ms(1);
                P2=0xff;
        }
}
main()
{
        TH0=0X3C;          s
        TL0=0xb0;
        TMOD=0X01;
        ET0=1;TR0=1;EA=1;
        while(1)
        {
                scan();
                keyscan();
        }
}
void time_intt0(void) interrupt 1
{
        ET0=0;TR0=0;TH0=0X3C;TL0=0xb0;TR0=1;
        ms50++;
        if(ms50==20)
        {
                ms50=0x00;
                timedata[0]++;
                if(timedata[0]==60)
                {
                        timedata[0]=0;timedata[1]++;
                        if(timedata[1]==60)
                        {
                                timedata[1]=0;timedata[2]++;
                                if(timedata[2]==24)
                                {
                                        timedata[2]=0;
                                }
                        }
                }
        }
        ET0=1;
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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