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

📄 sz1.c

📁 基于MCS-51单片机的数字时钟C语言程序
💻 C
字号:
/*******************************************************************************************************************************************
2008年3月15日单片危微机控制应用技术、张大明
p0 p3动态共阴数码管Fosc=6MHz p256
*******************************************************************************************************************************************/
#include<reg52.h>
#define ucher unsigned char
code uchar TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar sz[6];
unsigned int i,a,b,c,sww,ww,qw,bw,sw,gw;                               /*定义sww,ww,qw,bw,sw,gw为方便调用,秒数a必须用无符号整型数(最大65535)
                                                                         计数值才能大于12h(43200s)*/
void bin_hms(void)                                                     /*将a中秒数转化为时分秒子函数*/
 {if(a>=46800)a=a-43200;
  sww=sz[0]=a/36000;
  ww=sz[1]=a/3600%10;
  qw=sz[2]=a%3600/600;
  bw=sz[3]=a%3600/60%10;
  sw=sz[4]=a%60/10;
  gw=sz[5]=a%60%10;
 }  
 void delay (void)
  { 
   for(i=0;i<12;i++)
    {;}
  }
 void disp(void)
 {
  while(!TF1)
   {
    p1=0x00;
    p3=0xdf;
    bin_hms();
    for(b=0;b<6;b++)
     {p1=TAB[sz[b]];
      delay();
      if(p3==0xfe)break;
      p1=0x00;
      p3=p3<<7|p3>>1;
      if(TF1==1)break;
     }
   }
 }
main()
{a=0;TMOD=0x10;
while(1)
 {
  for(c=0;c<10;c++)
  {TH1=0x3c;                                                /*计数器初值T1=3CE2H时,计满数为100ms*/
   TL1=0xE2;                                                /*计时不准确可以调整T1的计数初值*/
   tr1=1;
   disp();                                                  /*在显示子函数只能够等待计满一个100ms*/
   TF1=0;
  }
  a++;                                                      /*10次100ms为1s,秒计数器加1*/ 
 }
}

⌨️ 快捷键说明

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