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

📄 clock_change.c

📁 51单片机开发板上的可调时钟程序
💻 C
字号:
#include <reg51.h>

#define BYTE unsigned char

sbit sw4=P2^6;
sbit sw3=P2^5;
sbit sw2=P2^4;
sbit a=P1^0;
sbit P3_3=P3^3;
sbit P3_2=P3^2;

unsigned int sec=0,min=0,hour=0,t=0;

code unsigned char dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}  ;//0--9段码表

BYTE led8[6] ;

void delay(unsigned int DelayTime)
{ unsigned int j=0;

for(   ;DelayTime>0;DelayTime--)

  {for(j=0;j<2;j++)

   {;}
  }
}

void display_led(void)
{P2=0xfb ;
 P0=dis_code[led8[0]];
 delay(10);

 P2=0xf7 ;
 P0=dis_code[led8[1]];
 delay(10);

 P2=0xef ;
 P0=dis_code[led8[2]];
 delay(10);

 P2=0xdf ;
 P0=dis_code[led8[3]];
 delay(10);


 P2=0xbf ;
 P0=dis_code[led8[4]];
 delay(10);

 P2=0x7f;
 P0=dis_code[led8[5]];
 delay(10);
}


void intt0(void)interrupt 0 using 2
{
  EA=0;

  if(sw2==0)
  {delay(6000) ;
  if(sw2==0)
  while(sw2==0)
  ;
   {if(sw2==1)

    { sec++;
      if(sec==60)
      {sec=0;
       sw2=1;
       }
     }
    }
   }

   if(sw3==0)
  {delay(6000) ;
  if(sw3==0)
  while(sw3==0)
  ;
   {if(sw3==1)

    { min++;
      if(min==60)
      {min=0;
       sw3=1;
       }
     }
    }
   }

   if(sw4==0)
  {delay(6000) ;
  if(sw4==0)
  while(sw4==0)
  ;
   {if(sw4==1)

    { hour++;
      if(hour==24)
      {hour=0;
       sw4=1;
       }
     }
    }
   }


  EA=1;
}


void time1(void)interrupt 1 using 1	   //定时器0,每秒sec加1
{
  t++;
  TH0=0x3c;
  TL0=0xb0;
  if(t==20)
  {
   sec++;
    t=0;
  }

}


//秒,分,时循环;对数码管每位赋值;并把八段码送给P0口_______________________
void time_change()
{ unsigned int p;
  if(sec==60)
   {sec=0;
    min++;
    if(min==60)
    {min=0;
	 hour++;
	 if(hour==24)
	  hour=0;
	  }
    }
   	ET0=0;
	led8[5]=hour/10;
	led8[4]=hour%10;
	led8[3]=min/10;
	led8[2]=min%10;
	led8[1]=sec/10;
        led8[0]=sec%10;
	ET0=1;

	for(p=0;p<3;p++)
    display_led();
}

void set(bit sw)    //检测按键子程序
{if(sw==0)
      {  P3_3=0;
         P3_2=0;
      }
      if(sw==1)
      {   P3_3=0;
          P3_2=1;
       }
}

void time_set()   //检测按键
{    set(sw2);
     set(sw3);
     set(sw4);
  

}

void initial()  //处初始化
{EA=1;
   ET0=1;
   IT0=1;
   EX0=1;
   IP=0x01;
 TMOD=0x01;
   TH0=0x3c;
   TL0=0xb0;
   TR0=1;
 P0=0xff;
 P1=0xff;
 P2=0xff;
 P3_3=1;
}

main()
{initial();
  while(1)
  {
	time_change();
	time_set();
   }
}

⌨️ 快捷键说明

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