51(52)单片机定时器实现数码管时钟-创新互联

单片机小白,主页第一篇文章有共通代码详解。

我们提供的服务有:成都做网站、网站设计、微信公众号开发、网站优化、网站认证、大关ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的大关网站制作公司

独立按键一:按下数码管显示小时增加(>23变00)
独立按键二:按下数码管显示分钟增加(>59变00)
独立按键三:长按关闭时钟自增后,可使用按键一.二对数码管显示时间进行更改
独立按键四:按下时钟启动

运行效果:

在这里插入图片描述

代码:

#include#define u8 unsigned char
#define u16 unsigned int

	 sbit button1=P3^1;
	 sbit button2=P3^0;
	 sbit button3=P3^2;
	 sbit button4=P3^3;
	 sbit add_1=P2^2;
	 sbit add_2=P2^3;
	 sbit add_3=P2^4;

     u16 n=0;
     u8 x,y,z;
	 u8 code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  
	 
//DingshiQi YanShi
void delay_ds(u8 ms)
  {u8 T=0;
    TMOD=0x01;
    TH0=0xfb;
    TL0=0x80;
    TR0=1;
    while(T if(TF0==1)
	   {TF0=0;
	  	TH0=0xfb;
        TL0=0x80;
	    T++;
	   }
    }
    
  }//1.25*ms
	

//shuaxin
void shuaxin()
 { add_1=0;
     add_2=0;
     add_3=0;
	 P0=table[z%10];   
	 delay_ds(1);	
	 P0=0x00;    //01
			
	 add_1=1;
	 add_2=0;
	 add_3=0;
     P0=table[z/10%10];
     delay_ds(1);	
	 P0=0x00;    //02
	 
	 add_1=0;
	 add_2=1;
	 add_3=0;
	 P0=0x40;
     delay_ds(1);	
	 P0=0x00;    //03
	 
	 add_1=1;
	 add_2=1;
	 add_3=0;
	 P0=table[y%10];
     delay_ds(1);	
	 P0=0x00;    //04
	 
	 add_1=0;
     add_2=0;
     add_3=1;
	 P0=table[y/10%10];   
	 delay_ds(1);	
	 P0=0x00;    //05
			
	 add_1=1;
	 add_2=0;
	 add_3=1;
     P0=0x40;
     delay_ds(1);	
	 P0=0x00;    //06
	 
	 add_1=0;
	 add_2=1;
	 add_3=1;
	 P0=table[x%10];
     delay_ds(1);	
	 P0=0x00;    //07
	 
	 add_1=1;
	 add_2=1;
	 add_3=1;
	 P0=table[x/10%10];
     delay_ds(1);	
	 P0=0x00;    //08
 }	//11.25ms
	
 
//1 s
void Ding_shi()
  {u8 T=0;
    TMOD=0x01;
    TH0=0xf7;
    TL0=0x00;    //2.5ms
	shuaxin(); 
    TR0=1;
    while(T<80)
    { if(TF0==1)
	   {  TF0=0;
		  TH0=0xf7;
          TL0=0x00;    //2.5
		  shuaxin();   //10          12.5ms*79=987.5ms
		  T++;
	   }
    }
  }

//
void Ding_shi01()
  {u8 T=0;
    TMOD=0x01;
    TH0=0xf7;
    TL0=0x00;    //1.25ms
    TR0=1;
    while(T<20)
    { if(TF0==1)
	   {  TF0=0;
		  TH0=0xf7;
          TL0=0x00;    //1.25
		  shuaxin();   //20           12.5ms*79=987.5ms
		  T++;
	   }
    }
  }
	




void main()
{   u8 k,j;
   k=j=0;
   button1=0xff;
   button2=0xff; 
   button3=0xff;
   button4=0xff;

	
   while(1)
   {   
       
	  shuaxin(); 	
		 
     if(button1==0)
	    { delay_ds(2);
	     if(button1==0)
	     {   while(!button1)
	        { x++;
                 
			     if(x>23)
			    	x=0;
			    	
				Ding_shi01();
	        }
	        
	     }
	     
	    }
			
			
	   if(button2==0)
	    { delay_ds(2);
	     if(button2==0)
	     {   while(!button2)
          {	            y++;
	            
			    if(y>59)
				  y=0;
				  
			    Ding_shi01();			
						
          }
	    
			 }
		 }
			
		
		if(button3==0)
	    { delay_ds(3);
	     if(button3==0)
	     {   while(!button3)
           {		shuaxin();
	        }
	      }	
	     }			                                                     
		
		           
		if(button4==0)
	    { delay_ds(2);
	     if(button4==0)
	     {   while(!button4)
		   { while(1)
	         { 
					 z++;
					
					 if(z>59)
					 {y++;
					   z=0;}
					   if(y>59)
						 {x++;
						   y=0;}
						   if(x>23)
							   x=0;
							   
					 Ding_shi();
							 
					 if(button3==0)
	                   break;																					
	
			   }
			 }
       }
    } 
  }			
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:51(52)单片机定时器实现数码管时钟-创新互联
当前链接:http://pwwzsj.com/article/didpei.html