注册 登录
编程论坛 单片机编程

在AT89C51+74LS245+16SEG-MPX8共阳八位数码管制作电子时钟中遇到的问题,求助大佬QAQ

小月亮哎呀丶 发布于 2020-11-30 16:21, 5330 次点击
AT89C51 + 74LS245 + 16SEG-MPX8共阳八位数码制作电子时钟
遇到的问题是P0.0 + A0 + 数码管A口不通以及数码管显示不全
求大佬看看,实在是看不出来了。
附上代码↓
程序代码:
#include <AT89X52.H>
//电子时钟
#define unit unsigned int
#define uchar unsigned char
unit time_t;
uchar hour,min,sec;
uchar code led[10]={0XFC,0X60,0XDA,0XF2,0X66,0XB6,0XBE,0XE0,0XFE,0XF6};


void delay_1ms(unit x)
{
    TMOD=0X01;
    TR0=1;
    while(x--)
    {
        TH0=0XFC;
        TL0=0X18;
        while(!TF0);
        TF0=0;
        time_t++;
    }
    TR0=0;
}


void display_num(uchar num,dis_W)
{
    uchar j;
    for(j=0;j<2;j++)
    {
        P0=0XFF;
        P2=~dis_W;
        if(j>0)
            P0=~led[num/10];
        else
            P0=~led[num%10];
        dis_W=dis_W<<1;
        delay_1ms(5);
    }
}


void display_char()
{
    P0=0XFF;
    P2=~0X24;
    P0=~0X02;
    delay_1ms(5);
}


void time_take()
{
    if(time_t>=1000)
    {
        time_t=0;
        sec++;
        if(sec==60)
        {
            sec=0;
            min++;
            if(min==60)
            {
                min=0;
                hour++;
                if(hour==24)
                {
                    hour=0;
                }
            }
        }
    }
}




void main()
{
    sec=56;
    min=59;
    hour=23;
    while(1)
    {
        display_num(sec,0X01);
        display_num(min,0X08);
        display_num(hour,0X40);
        display_char();
        time_take();
    }
}
3 回复
#2
小月亮哎呀丶2020-11-30 16:21
想发附件,奈何没有附件按钮。可能是论坛等级不够
#3
小月亮哎呀丶2020-11-30 16:21
求助QAQ
#4
nosnoy2020-12-03 12:18
遇到这种问题你得先通过排查io口的电平是不是对的,如果都是对的,再去排查硬件问题。是否存在虚焊等等一系列问题
1