c51动态数码管写时钟

#include<reg52.h>
#define dula P0
#define wela P3

unsigned char disbuff[] = {0,0,10,0,0,10,0,0,};
unsigned char hour,min,sec,num,dulacode[] = {0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x6f,0x09};
unsigned char welacode[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void display()
{
	unsigned int j;
	unsigned char i;
	for(i=0;i<8;i++)
	{
		dula=0x00;
		dula = dulacode[disbuff[i]];
		wela = welacode[i] ;
		for(j=0;j<500;j++);
	}
}
void time0() interrupt 1
{
	TL0 = 55536%256;
	TH0 = 55536/256;
	num++;
	if(num > 99)
	{
		num = 0;
		sec++;
		if(sec>59)
		{
			sec=0;
			min++;
			if(min>59)
			{
				min=0;
				hour++;
				if(hour>23)
				{
					hour=0;
				}
			}
		}
	}
	disbuff[0]=hour/10;
	disbuff[1]=hour%10;
	disbuff[3]=min/10;
	disbuff[4]=min%10;
	disbuff[6]=sec/10;
	disbuff[7]=sec%10;
}

void main()
{
	TMOD = 0x01;
	TH0=55536/256;
	TL0=55536%256;
	ET0 = 1;
	EA =1;
	TR0=1;
	while(1)
		display();

}


猜你喜欢

转载自blog.csdn.net/qq_38053395/article/details/80117934