⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miaobiao.c

📁 利用51单片机设计数字钟
💻 C
字号:
														
#include<reg52.h>
#define YS 10	
#define L ((0xffff-50000)&0xff)
#define H ((0xffff-50000)>>8)
#define ML ((0XFFFF-10000)&0XFF)		
#define MH ((0xffff-10000)>>8)
unsigned int mh1,mh0,mm1,mm0,ms1,ms0;
unsigned   char a[]={0x5f,0x03,0x3d,0x2f,0x63,0x6e,0x7e,0x07,0x7f,0x6f};	
unsigned int h1,h0,m1,m0,s1,s0;
unsigned int nh1,nh0,nm1,nm0,ns1,ns0;
unsigned int counter;
char j=1;
sbit k1=P1^1;		
sbit k0=P1^2;
sbit k2=P3^2;
sbit k4=P1^3;
sbit k5=P3^1;		
sbit k6=P3^6;
sbit k7=P1^0;

void delay(int t)
{
	int i,j;
	for(i=1;i<=t;i++)
		for(j=1;j<=t;j++);
}

void xianshi(unsigned int q, unsigned int w, unsigned int e, unsigned int r)
{
		P2=0xff;P0=a[q];P2=0x7f;delay(YS);		
		P2=0xff;P0=a[w];P2= 0xbf;delay(YS);
		P2=0xff;P0=a[e];P2=0xdf;delay(YS);
		P2=0xff;P0=a[r];P2=0xef;delay(YS);
			
}

void main(void)
{
	EA=0;
	k6=1;
	k0=1;
	k1=1;
	k2=1;
	k4=1;
 	k5=0;
	k7=1;
	h1=1;
	h0=2;
	nh0=6;
	PX0=1;
	PT1=0;
	PX1=0;
	TMOD=0X11;
	IT0=0;
	TL0=ML;
	TH0=MH;
	TL1=L;
	TH1=H;
	TR1=1;
	IE=0X8F;
  while(1)
  {	
	while(1)
	{
		xianshi(m0,m1,h0,h1);
		if(h1==nh1 && h0==nh0 && m1==nm1 && nm0==m0 && k7==1 )
		k6=0;
		if(nm0!=m0)
		k6=1;
	   
		if(k1==0)
			goto naozhong;
		if(k0==0)
			goto miaobiao;
	}
	
naozhong:if(k1==0)
	{
		while(k1==0);
				EX0=0;
				while(1)	
				{	 j=0;k5=1;
					xianshi(nm0,nm1,nh0,nh1);
					if(k0==0)
					{
						nm0++;
						if(nm0==10)
						{
							nm1++;nm0=0;
							if(nm1==6)
							nm1=0;
						}
						while(k0==0);
					}
					 if(k4==0)
					 {
					  k7=~k7;
					  while(k4==0);
					 }	
					if(k2==0)
					{
						nh0++;
						if(nh0==10)
						{
							nh1++;nh0=0;
						}
						if(nh1==2&&nh0==4)
						{
							nh1=0;nh0=0;
						}
						while(k2==0);
					}
				
	 				if(k1==0)
					{
						EX0=1;j=1;goto tiaochu2	;	
					}
				}
		tiaochu2:while(k1==0);
	 }
  


miaobiao:if(k0==0)
	 {	
	 	EX0=0; 
	 	while(k0==0);
	 	while(1)
		{
			j=0;k5=1;
			xianshi(ms0,ms1,mm0,mm1);
			 if(TR0==0 && k2==0)
				{TR0=1;while(k2==0);}
			 if(TR0==1 && k2==0)
			 	{TR0=0;while(k2==0);}
			 if(TR0==0 && k1==0)
			 	{ms0=0;ms1=0;mm0=0;mm1=0;mh0=0;mh1=0;}
			if(k0==0)
			{
				EX0=1;j=1;goto tiaochu3;
			}
		}
tiaochu3:while(k0==0);
	 }		
  }
}

void time1(void)interrupt 3 
{
	TL1=L;
	TH1=H;
	
	if((counter ==10 || counter==0)&& j==1) k5=~k5;
    counter++;
	if(counter==20)
	{	
		counter=0;
		s0++;
		if(s0==10)
		{	
			s0=0;
			s1++;
			if(s1==6)
			{	
				s1=0;
				m0++;
				if(m0==10)
				{	
					m0=0;
					m1++;
					if(m1==6)
					{	
						m1=0;
						h0++;
						if(h0==10)
						{	
							h0=0;
							h1++;
						}
						if(h1==2&&h0==4)
						{
							h1=0;h0=0;		
						}
					}
				}
			}
		}
	}
}

void tiaoshi()interrupt 0
{
	EX1=0;	
	EX0=0;
	s0=0;s1=0;
	while(k2==0);
	while(1)
	{	  j=0;k5=1;
		xianshi(m0,m1,h0,h1);
			
		if(k0==0)
			{
				m0++;
				if(m0==10)
				{
					m1++;m0=0;
					if(m1==6)
						m1=0;
				}
				while(k0==0);
			}
	
	
		if(k1==0)
			{
				h0++;
				if(h0==10)
				{
					h1++;h0=0;
					
				}
				if(h1==2&&h0==4)
				{
					h1=0;h0=0;
				}
				while(k1==0);
			}
		
	
		if(k2==0)
			{
				EX0=1;EX1=1;j=1;goto tiaochu1;
			}
	}
tiaochu1:while(k2==0);
}

void miaobiaotimer0(void)interrupt 1
{
		TL0=ML;
		TH0=MH;
		ms0++;
		if(ms0==10)
		{	
			ms0=0;
			ms1++;
			if(ms1==10)
			{	
				ms1=0;
				mm0++;
				if(mm0==10)
				{	
					mm0=0;
					mm1++;
					if(mm1==6)
					{	
						mm1=0;
						mh0++;
						if(mh0==10)
						{	
							mh0=0;
							mh1++;
						}
						if(mh0==0 && mh1==10)
						{mh0=0;mh1=0;}
					}
					
				}
			}
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -