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

📄 shiz5.c

📁 基于单片机的秒,分,时可调时钟的设计
💻 C
字号:
#include <reg51.h>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};
unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//经38译码器片选数码管
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循环逐个片选导通并显示。
sbit OE=P2^6;
sbit LE=P2^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;

void delay(unsigned int N)
{
 while(N--);
}
void getbuff()
{
  disbuf[0]=second%10;
  disbuf[1]=second/10;
  disbuf[2]=10;
  disbuf[3]=minite%10;
  disbuf[4]=minite/10;
  disbuf[5]=10;
  disbuf[6]=hour%10;
  disbuf[7]=hour/10;
}
void display()
{
 unsigned char i=0;
 for(i=0;i<8;i++)
   {
   LE=1;
   P3=disbitcode[i];         //经38译码器依次片选
   P0=dispcode[disbuf[i]];   //将相应值送入P0口
   OE=0;
   delay(500);
   } 
}
void key()
{
  
    if(K1==0)
  {
   delay(5000);
   if(K1==0)
    {
     second++;
            if(second==60)
    {
     second=0;
     
    }
  while(K1==0);
    }
   
  }
 if(K2==0)
  {
   delay(5000);
   if(K2==0)
    {
     minite++;
            if(minite==60)
    {
     minite=0;
     
    }
  while(K2==0);
    }
   
  }
 if(K3==0)
  {
   delay(5000);
   if(K3==0)
    {
     hour++;
            if(hour==24)
    {
     hour=0;
    }
  while(K3==0);
    }
  
  }    
  
}
void t0() interrupt 1 using 0
{
  tcnt++;
  if(tcnt==4000)
   {
    tcnt=0;
    second++;
    if(second==60)
      {
       second=0;
       minite++;
       if(minite==60)
          {
            minite=0;
            hour++;
            if(hour==24)
              {hour=0;}
          }
      }
    }
}
void main()
{
 TMOD=0x02;
 TH0=0x06;
 TL0=0x06;
 TR0=1;
 ET0=1;
 EA=1;
 second=0;
 minite=0;
 hour=0;
 tcnt=0;
 
 while(1)
 {
   key();
   getbuff();
   display();
 }
}

⌨️ 快捷键说明

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