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

📄 eclock_2.c

📁 595——8位数码管循环移位显示.doc │ 利用74HC595实现多位LED显示的新方法.doc │ 用74HC595芯片驱动LED的电路设计.pdf │ 文件目录表绘制.cmd │ 文件夹
💻 C
字号:
#include"AT89X52.H"

#define uchar unsigned char

uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
uchar code pos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

sbit SCK=P2^0;
sbit SER=P2^1;
sbit RCK=P2^2;

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;

uchar k[8];
uchar second; 
uchar minite; 
uchar hour; 
uchar num; 	                                                                                                                                                                     

void delay_5ms(void)
{
  uchar i,j;
  for(i=10;i>0;i--)
  for(j=248;j>0;j--)
  ;
}

void In595(uchar m,uchar n)
{ 
  uchar i,temp;
  temp=pos[m]; //断码
  for(i=0;i<8;i++)
  { 
  	SCK=0;
    SER=temp&0x80;
	temp<<=1;
    SCK=1;
   } 

  temp=seg[n]; //位码
  for(i=0;i<8;i++)
  { 
  	SCK=0;
    SER=temp&0x80;
	temp<<=1;
    SCK=1;
   } 
   RCK=0;
   RCK=1;
}

void main(void)
{ uchar j;
  TMOD=0x01;
  TH0=0X3C;
  TL0=0XB0;
  TR0=1;
  ET0=1;
  EA=1;
  second=0;
  minite=0;
  hour=0;
  while(1) 
   { 
     if(k1==0) 
       { 
         delay_5ms();
          if(k1==0) 
            {  
             second=0;  
             while(k1==0); 
            } 
        } 
     if(k2==0) 
        { 
          delay_5ms(); 
          if(k2==0) 
            { 
              minite++; 
              if(minite==60){ minite=0;} 
              while(k2==0);
            } 
        } 
     if(k3==0) 
        { 
          delay_5ms();
          if(k3==0) 
            { 
              hour++; 
              if(hour==24) { hour=0; }
              while(k3==0); 
            } 
        } 

   for(j=0;j<8;j++) 
	{In595(j,k[j]);if(j==2||j==5)k[j]=10;}
   }
   

}
void t0(void) interrupt 1/*定时器工作方式*/ using 0//工作寄存器
{ 
  num++; 
  if(num==20) 
    { 
      num=0; 
      second++; 
      if(second==60) 
        { 
          second=0; 
          minite++; 
          if(minite==60) 
            { 
              minite=0; 
              hour++; 
              if(hour==24) 
                { 
                  hour=0; 
                } 
             } 
         } 
    k[0]=second%10; 
    k[1]=second/10; 
    k[3]=minite%10; 
    k[4]=minite/10; 
    k[6]=hour%10; 
    k[7]=hour/10;
    }
   TH0=0X3C;
   TL0=0XB0;  
}

⌨️ 快捷键说明

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