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

📄 数字时钟.txt

📁 用C语言写的电子时钟可以准确的读出时间和进行时间小时分钟秒的设置
💻 TXT
字号:
/*20.            数字钟﹝★﹞
1. 实验任务 
(1.       开机时,显示12:00:00的时间开始计时;
(2.       P0.0/AD0控制"秒"的调整,每按一次加1秒; 
(3.       P0.1/AD1控制"分"的调整,每按一次加1分; 
(4.       P0.2/AD2控制"时"的调整,每按一次加1个小时; 
2. 电路原理图 
 
图4.20.1
3. 系统板上硬件连线 
(1.       把"单片机系统"区域中的P1.0-P1.7端口用8芯排线连接到"动态数码显示"区域中的A-H端口上;
(2.       把"单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到"动态数码显示"区域中的S1-S8端口上; 
(3.       把"单片机系统"区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到"独立式键盘"区域中的SP3、SP2、SP1端口上; 
4. 相关基本知识 
(1.       动态数码显示的方法
(2.       独立式按键识别过程 
(3.       "时","分","秒"数据送出显示处理方法 
*/
#include <AT89X51.H> 
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 
                               0x66,0x6d,0x7d,0x07, 
                               0x7f,0x6f,0x77,0x7c, 
                               0x39,0x5e,0x79,0x71,0x00}; 
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 
                             0xef,0xdf,0xbf,0x7f}; 
unsigned char dispbuf[6]={0,0,0,0,0,0}; 
unsigned char dispbitcnt; 
unsigned char second; 
unsigned char minite; 
unsigned char hour=12; 
unsigned int tcnt; 
unsigned char mstcnt; 
unsigned char i,j; 
void main(void) 
{ 
  TMOD=0x02; 
  TH0=0x06; 
  TL0=0x06; 
  TR0=1; 
  ET0=1; 
  EA=1; 
  while(1) 
    { 
      if(P1_0==0) 
        { 
          for(i=5;i>0;i--) 
          for(j=248;j>0;j--); 
          if(P1_0==0) 
            { 
              second++; 
              if(second==60) 
                { 
                  second=0; 
                } 
              dispbuf[5]=second%10; 
              dispbuf[4]=second/10; 
              while(P1_0==0); 
            } 
        } 
      if(P1_1==0) 
        { 
          for(i=5;i>0;i--) 
          for(j=248;j>0;j--); 
          if(P1_1==0) 
            { 
              minite++; 
              if(minite==60) 
                { 
                  minite=0; 
                } 
              dispbuf[3]=minite%10; 
              dispbuf[2]=minite/10; 
              while(P1_1==0); 
            } 
        } 
      if(P1_2==0) 
        { 
          for(i=5;i>0;i--) 
          for(j=248;j>0;j--); 
          if(P1_2==0) 
            { 
              hour++; 
              if(hour==24) 
                { 
                  hour=0; 
                } 
              dispbuf[1]=hour%10; 
              dispbuf[0]=hour/10; 
              while(P1_2==0); 
            } 
        } 
    } 
} 
void t0(void) interrupt 1 using 0 
{ 
  mstcnt++; 
  if(mstcnt==8) 
    { 
      mstcnt=0; 
	  P3=0xff;
      P0=dispcode[dispbuf[dispbitcnt]]; 
      P3=dispbitcode[dispbitcnt]; 
      dispbitcnt++; 
      if(dispbitcnt==6) 
        { 
          dispbitcnt=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; 
                } 
            } 
        } 
      dispbuf[5]=second%10; 
      dispbuf[4]=second/10; 
      dispbuf[3]=minite%10; 
      dispbuf[2]=minite/10; 
      dispbuf[1]=hour%10; 
      dispbuf[0]=hour/10; 
  }
}

⌨️ 快捷键说明

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