74HC573,DS1302这些芯片的作用是什么?我初学者,望大家多多指教

2020-02-03 10:13发布

有谁能给小弟指点下74HC573在做八段数码管显示的时候有什么作用?
DS1302在做时钟的时候有什么作用?
单片机内不是有自带的定时器么?
我用的是AT89S52
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
xbpkid
2020-02-03 22:55
额~谢谢楼上的
1302可以从内部直接读取时间是指电脑内部么?
另外74HC573还不是很明白,你看我做的一个八段数码管动态显示的一个实验程序:


#include <reg52.h>
#include <intrins.h>

unsigned char hour1, hour2,hour=0;
unsigned char min1, min2,minite=0;
unsigned char sec1, sec2,second=0;
int count = 0;

unsigned char tab[10] =
{
            0x3F,/*0*/
        0x06,/*1*/
        0x5B,/*2*/
        0x4F,/*3*/
        0x66,/*4*/
        0x6D,/*5*/
        0x7D,/*6*/
        0x07,/*7*/
        0x7F,/*8*/
        0x6F,/*9*/
};

void delay(int ms)
{
        int i;

        for (i=0 ; i<ms; i++)
                        ;
}

void time(void) interrupt 1 using 1
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;

        count++;
       
        if (count == 100)
        {
                count = 0;
                second++;
        }

        sec1 = tab[second/10];
        sec2 = tab[second%10];

        if (second == 60)
        {
                second = 0;
                minite++;
        }

        min1 = tab[minite/10];
        min2 = tab[minite%10];

        if (minite == 60)
        {
                minite = 0;
                hour++;
        }
       
        hour1 = tab[hour/10];
        hour2 = tab[hour%10];
}


void time1(void) interrupt 0 using 2
{
        TR0 = !TR0;
}

void main()
{
        TMOD = 0x01;
        TH0=(65536-25000)/256;
        TL0=(65536-25000)%256;
        IP = 0x80;
        EX0=1;//外部中断0设置
        IT0=1;
        EA = 1;
        ET0 = 1;
        TR0 = 1;

        hour1 = tab[1];
        hour2 = tab[2];
        min1 = tab[0];
        min2 = tab[0];
        sec1 = tab[0];
        sec2 = tab[0];

        while (1)
        {
                P2 = 0;
                P0 = hour1;
                delay(10);
                P2 = 1;
                P0 = hour2;
                delay(10);
                P2 = 2;
                P0 = 0x40;
                delay(10);
                P2 = 3;
                P0 = min1;
                delay(10);
                P2 = 4;
                P0 = min2;
                delay(10);
                P2 = 5;
                P0 = 0x40;
                delay(10);
                P2 = 6;
                P0 = sec1;
                delay(10);
                P2 = 7;
                P0 = sec2;
                delay(10);               
        }
}
       
这里不是直接用P2 = 0、1、2、3、4、5、6、7就控制了那个数码管亮么?
貌似没有用到74HC573吧?

一周热门 更多>