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

📄 数字钟2.txt

📁 基于51单片机的数字钟程序
💻 TXT
字号:
#include<reg52.h>
void time0(void);
void time1(void);
void charge(void);
//void change(void);
void init_1(void);
void init_2(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,displace;//,x
unsigned char buff,start;

//unsigned char b;
//unsigned char cycle;
unsigned char timer,tim,a;

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) 
{   unsigned char i;
    init_1();
    init_2();
	buff=1;
    start=0;
	displace=0;
    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];
			}
		  if(start)
		  {   
		      if(buff)
			  {
			       if(line==2)
			       {    
			          i++;
			       }
                   displace=i/3;
				   if(line==3)
				   {
				      switch(displace)
                      {
			             case 0:buffer_1[5]=0;break;
			             case 1:buffer_1[3]++;break;
			             case 2:buffer_1[1]++;break;
                      }
			    	}
			  
			  }
		      if(!buff)
			  {
		           //delay_10ms();
			       if(line==2)
			       {    
			           init_2();
			       }
			  }
			  
          }
		  line=4;
    }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(buff){
    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;
	}//}
	//if(!buff){
    if(buffer_2[5]==10)
	{
	    buffer_2[5]=0;
		buffer_2[4]=buffer_2[4]+1;
	}
    if(buffer_2[4]==10)
	{
	    buffer_2[4]=0;
		buffer_2[3]=buffer_2[3]+1;
	}
    if(buffer_2[3]==10)
	{
	    buffer_2[3]=0;
		buffer_2[2]=buffer_2[2]+1;
	}
    if(buffer_2[2]==6)
	{
	    buffer_2[2]=0;
		buffer_2[1]=buffer_2[1]+1;
	}
    if(buffer_2[1]==10)
	{
	    buffer_2[1]=0;
		buffer_2[0]=buffer_2[0]+1;
	}
    if(buffer_2[1]==6)
	{
	    //buffer_2[1]=0;
		buffer_2[0]=0;
	}//}
}

unsigned char if_keydown()
{
    unsigned char i;
	P0=0xf0;
	//P0=0xf0;
	i=P0;
	if(i==0x70)
	{
		delay_10ms();
        delay_10ms();
		i=P0;
		if(i==0x70)
			{return 1;}
		else return 0;
	}
	return 0;
}

void which_line_key_down()
{
    unsigned char d;
	P0=0x0f;
 	d=P0;
	switch(d)
	{
			case 0x07:line=3;break;
			case 0x0b:line=2;break;
			case 0x0d:line=1;start=!start;break;
			case 0x0e:line=0,buff=!buff;break;
	}
}
void delay_10ms()
{
    unsigned char i,j;
	for(i=0;i<119;i++)
	for(j=0;j<20;j++)
	;
	if(start)
	{
	    buffer_2[5]++;
		charge();
	}
}

void init_1()
{
    buffer_1[0]=0;
    buffer_1[1]=0;
    buffer_1[2]=0;
    buffer_1[3]=0;
    buffer_1[4]=0;
    buffer_1[5]=0;
}

void init_2()
{
    buffer_2[0]=0;
    buffer_2[1]=0;
    buffer_2[2]=0;
    buffer_2[3]=0;
    buffer_2[4]=0;
    buffer_2[5]=0;
}

清零键无效,按键反应迟钝,+按键加的太快

⌨️ 快捷键说明

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