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

📄 时钟显示.txt

📁 基于51单片机的数字钟程序
💻 TXT
字号:
#include<reg52.h>
void time0(void);
void time1(void);
void charge(void);
//sbit P25=P2^5;
void which_row_key_down();
void which_line_key_down();
void delay_10ms();
unsigned char if_keydown();

unsigned char line,x;
unsigned char i,j,d,buff;

//unsigned char b;
//unsigned char cycle;
unsigned char timer,tim,a;
/*unsigned char ho_high=0;
    unsigned char ho_low=0;
    unsigned char mi_high=0;
    unsigned char mi_low=0;
    unsigned char se_high=0;
    unsigned char se_low=0;*/
unsigned char buffer_1[6],buffer_2[6];

    
unsigned char code tab_1[10]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0x07,0x7f,0x6f};
unsigned char code tab_2[6]={0X01,0X02,0X04,0x08,0X10,0X20};
//unsigned char code b[16]={0x3f,0x06,0x5b,0x4f,0x67,0x66,0x6d,0x7d,0x7f,0x07,0x7f,0x6f,0x39,0x5c,0x79,0x71};

//unsigned char r1; 
void main(void) 
{ 
    buffer_1[0]=0;
    buffer_1[1]=0;
    buffer_1[2]=0;
    buffer_1[3]=0;
    buffer_1[4]=0;
    buffer_1[5]=0;
    buffer_2[0]=0;
    buffer_2[1]=0;
    buffer_2[2]=0;
    buffer_2[3]=0;
    buffer_2[4]=0;
    buffer_2[5]=0;
	buff=1;
    TMOD=1;
	IE=0X8a;
    TCON=0X11;
    PT0=1;
	
	tim=6; 
	timer=15;
	TH0=0Xbd;
	TL0=0Xc0;
//	TH1=0Xf8;
//	TL1=0Xff;
	TR0=1;
	TR1=1;
    do{
         if(if_keydown())
			{	
				//which_row_key_down();
				which_line_key_down();
				//x=line*4+row;
				//P2=b[x];
			}
    }while(1);
}
void time0(void) interrupt 1 using 0
{
    if(!timer)
	{
	    buffer_1[5]=buffer_1[5]+1;
        charge();
	    TH0=0Xbd;
	    TL0=0Xc0;
		timer=15;
	}
	else{timer--;}
	TR0=1;
	//TH0=0Xff;
	//TL0=0Xf1;
	
}
void time1(void) interrupt 3 using 0
{
    if(tim) 
	{   
	       a=6-tim;
	       P1=tab_2[a];
		   if(buff)
		   {
	           P2=tab_1[buffer_1[a]];
		   }
		   else
		   {
		       P2=tab_1[buffer_2[a]];
  		   }
		   tim--;
		   if(tim==0)
	       {
	           tim=6;	
	       }
	}
//   while(--tim);
    
    
    TR1=1;
    TH1=0Xf8;
	TL1=0Xff;
	
}
void charge(void)
{
    if(buffer_1[5]==10)
	{
	    buffer_1[5]=0;
		buffer_1[4]=buffer_1[4]+1;
	}
    if(buffer_1[4]==6)
	{
	    buffer_1[4]=0;
		buffer_1[3]=buffer_1[3]+1;
	}
    if(buffer_1[3]==10)
	{
	    buffer_1[3]=0;
		buffer_1[2]=buffer_1[2]+1;
	}
    if(buffer_1[2]==6)
	{
	    buffer_1[2]=0;
		buffer_1[1]=buffer_1[1]+1;
	}
    if(buffer_1[1]==10&&buffer_1[0]!=2)
	{
	    buffer_1[1]=0;
		buffer_1[0]=buffer_1[0]+1;
	}
    if(buffer_1[1]==4&&buffer_1[0]==2)
	{
	    buffer_1[1]=0;
		buffer_1[0]=0;
	}
}

unsigned char if_keydown()
{
	P0=0xf0;
	//P0=0xf0;
	i=P0;
	if(i==0x70)
	{
		delay_10ms();
		i=P0;
		if(i==0x70)
			{return 1;}
		else return 0;
	}
	return 0;
}
/*void which_row_key_down()
{
	P0=0xf0;
 	c=P0;
	switch(c)
	{
			case 0x70:row=0;break;
			case 0xb0:row=1;break;
			case 0xd0:row=2;break;
			case 0xe0:row=3;break;
	}
}*/
void which_line_key_down()
{
	P0=0x0f;
 	d=P0;
	switch(d)
	{
			case 0x07:line=3,buff=0;break;
			case 0x0b:line=2;break;
			case 0x0d:line=1;break;
			case 0x0e:line=0;break;
	}
}
void delay_10ms()
{
	for(i=0;i<2;i++)
	for(j=0;j<40;j++)
	;
}

⌨️ 快捷键说明

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