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

📄 shizhong.c

📁 基于51单片机的基础上制作的数字时钟
💻 C
字号:
/**********时钟******2009.3.21.str*****/
#include<at89x51.h>
#define uchar unsigned char
#define uint unsigned int
char d_7[10]={0xc0,0xf9,0xa4,0xb0,0x99,
              0x92,0x82,0xf8,0x80,0x90,};
uchar hour=6,min=0,sec=0;    //设置初始值 06:00
uchar deda=0;
bit d_05s=0;
uchar set=0;
uchar m=0;
uchar flag=0;
void delay(uint k);
void conv();
void disp();
/***************走时函数******************/
void init_timer()
{
  TMOD=0x01;
  TH0=-(4800/256);
  TL0=-(4800%256);
  IE=0x82;
  TR0=1;
}

void T0_srv(void)interrupt 1	//中断
{
   TH0=-(4800/256);
   TL0=-(4800%256);
   deda++;
}

void conv()
{
  if(deda<=100)d_05s=0;		//小数点控制位
  else d_05s=1;
  if(deda>=200){sec++;deda=0;}
  if(sec==60){min++;sec=0;}
  if(min==60){hour++;min=0;}
  if(hour==24){hour=0;}
}
/***********显示函数**********/
void disp()
{
  P1=d_7[hour/10];P3=0x7f;delay(1);
  P1=d_7[hour%10];P3=0xbf;delay(1);
  if(d_05s==1){if(P3_6==0)P1_7=0;else P1_7=1;}
  delay(1);
  P1=d_7[min/10];P3=0xdf;delay(1);
  P1=d_7[min%10];P3=0xef;delay(1);
}

/****************调时函数******************/

void set_time()
{
   uchar m;
   if(P2_1==0)delay(1);
   if(P2_1==0)hour++;
   if(hour==24)hour=0;
   for(m=0;m<30;m++)
   {
     disp();
     if(P3_6==0)P1_7=0;
     else P1_7=1;
     delay(1);
   }

   if(P2_2==0)delay(1);
   if(P2_2==0)min++;
   if(min==60)min=0;
   for(m=0;m<30;m++)
   {
   disp();
   if(P3_6==0)P1_7=0;
   else P1_7=1;
   delay(1);
   }
}

/***************按键扫描及延时函数***************/
void time()
{
   conv();
   disp();
}

void scan_key()
{
  delay(1);
  if(P2_0==0)set++;
  if(set>=2)set=0;
  if(set==1)flag=0x55;
  F0:if(P2_0==0)goto F0;
}

void delay(uint k)	  //延时约1ms*k
{
  uint i,j;
  for(i=0;i<k;i++){
     for(j=0;j<121;j++)
   	 {;}}
}

/**************主函数*****************/

void main()
{
   init_timer();
   while(1)
   {
      if(P2_0==0)scan_key();
	  switch(set)
	  {
	    case 0:time();break;
		case 1:set_time();break;
		default:break;
	  }
	  if(flag!=0x55)
	  {
	    P1=0xc0;P3=0x0c;delay(100);	 //开机呈00 00闪烁
		P3=0xff;delay(400);
	  }
   }
}

   

   

⌨️ 快捷键说明

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