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

📄 main.c

📁 数码管显示数码管显示数码管显示数码管显示数码管显示数码管显示
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define schar  unsigned char
#define uint  unsigned int
sbit P3_5= P1^1;
sbit P1_2= P1^2;//定义信号引脚 
    char DATA_7SEG [11]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XFF,};//0~9
  uchar hour=0,min=0,sec=0;
  uchar deda=0;
  schar t_hour=8;
  schar t_min=30;
  bit d_05s=0;
  uchar set=0;
  uchar m=0;
  uchar syh,sym;
  void delay(uint k);
  void conv();
  void p_out();
  void dirve (schar hm1,uchar hm2);
  void tdata1(schar hm3);
  void tdata2(schar hm4);
  void conv()
      {
	   if (deda<=100)d_05s=1;
	   else d_05s=0;
	   if (deda>=201){sec++;deda=0;}
	   if (sec==60){min++;sec=0;}
       if (min==60){hour++;min=0;}
	   if (hour==24){hour=0;}	  	  
	  }
         

	  void delay (uint k)
	  {
	   uint i,j;
	   for(i=0;i<k;i++){
	                    for(j=0;j<121;j++){;}}
	  	           	  }


       void drive(schar hm1,uchar hm2) 
       {
          if(hm1/10>=1)
          {tdata1(hm1); P1=0xef;delay(1);}
          if(d_05s==1)
            {SBUF=DATA_7SEG[hm1%10]&0x7F;
            
            while(TI==0);
            TI=0;
            P1=0xdf;delay(1);}

			else
			{tdata2(hm1);P1=0xdf;delay(1);}
             tdata1(hm2);P1=0xbf;delay(1);
			 tdata2(hm2);P1=0x7f;delay(1);}

             void dispsy()
			 {
			 if(min<=t_min)
			    {
				 sym=t_min-min;
				 syh=t_hour-hour;
				}
			 else {sym=(60-min+t_min);syh=t_hour-hour-1;}
			 drive(syh,sym);
			 
			 }



void time()
{ 
    conv();
	if(sec%5<=2)
	{
	 P3_5=1;drive(hour,min);
	}
	else {
	      P3_5=0;dispsy();
	     }
   P_out();
   }




   void init_timer()
   {
    TMOD=0x01;
	TH0=-(5221/256);
	TL0=-(5221%256);
    IE=0x82;
	TR0=1;
     }
 

	 void scan_key()
	 {
	  delay(1);
	  if(P1_2==0)set++;
	  if(set>=2)set=0;
	  while(P1_2==0);
	  }
	  void zd(void) interrupt 1
     { TH0=-(5221/256);
	   TL0=_(5221%256);
	   deda++;
	  }

	     void time1_adj()
		 {
		  if(P1_1==0)delay(1);
		  if(P1_1==0)t_hour--;
		  if(t_hour<0)t_hour=23;
          for(m=0;m<100;m++)
		  {
		  drive(t_hour,t_min);
		  
		  }
		  if(P1_0==0)delay(1);
		  if(P1_0==0)t_min=t_min-1;
		  if(t_min<=0)t_min=60;
		  for(m=0;m<100;m++)
		     {
			  drive(t_hour,t_min);
			 }		 
		 
		 }
		    void tdata1(schar hm3)
			 {
			  SUB=DATA_7SEG[hm3/10];
			  while(TI==0);
			  TI=0;	 
			 }
			void tdata2(schar hm4)
			 {
			  SUB=DATA_7SEG[hm4%10];
			  while(TI==0);
			  TI=0;	 
			 }




			 ///////
			 void P_out()
			 {
			  if (hour>=t_hour&&min>=t_min)
			  {TR0=0;EA=0;P3_7=0;
			   dirve(t_hour,t_min);
			  }
			  else P3_7=1;
			 
			 }
			 //////////////////////
			 void main()
			 {
			  init_timer();
			  while(1)
			  {
			   if(P1_2==0)scan_key();
			   switch(set)
			   {case 0:time();break;
			    case 1:time1_adj();break;
				default:break;
			   }
			  
			  
			  }
			 
			 
			 }

⌨️ 快捷键说明

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