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

📄 数字钟.txt

📁 用STC51单片机的定时器编写的数字钟
💻 TXT
字号:
数字钟设计(基于单片机C语言)

#include "reg51.h"
#include
#include
#define uchar unsigned char
#define uint  unsigned int


uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
uchar code DispTab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
uchar DispBuf[6]; //6字节的显示缓冲区
bit Sec;   //1s到的标记
uchar SecValue;  //秒计数值
uchar minValue;         //分计数值
uchar horValue;         //小时计数值

uchar code TH0Val=63266/256;
uchar code TL0Val=63266%256;//当晶振为11.0592时,定时2.5ms的定时器初值
//经过精确调整,在值为63266时,定时时间为1.00043362s

void Timer0() interrupt 1
{ 
 uint Count;  //秒计数器
 const uint CountNum=400; //预置值
 TH0=TH0Val;
 TL0=TL0Val; 
 
//以下是时间计数的程序行
 Count++;    //计数器加1
 if(Count>=CountNum)  //到达预计数值
 { Count=0;   //清零 
  Sec=1;    //置位1s到标志
  SecValue++;    //秒值加1
  if(SecValue>=60)
   {
   SecValue=0;   //秒从0计到59
   if(minValue<=59)
    { 
     minValue++;   //到60秒后分加一
    }
   if(horValue<=23&minValue==60)
    {
     minValue=0;
     horValue++;
    }
   if(horValue==24)
    {
     horValue=0;
    }
   }
   
 }
}

void Init()
{ TMOD=0x01;
 TH0=TH0Val;
 TL0=TL0Val; 
 ET0=1;    //开T0中断
 EA=1;    //开总中断
 TR0=1;    //T0开始运行
}
void delay(uint i)//延时
{
 while(i-->0);
}
void main()
{ uchar i;

 uchar dCount,tem; //计数器,显示程序通过它得知现正显示哪个数码管
 Init(); 
 do{
       //初始化
 if(Sec==1)
 {
 DispBuf[0]=SecValue%10;
 DispBuf[1]=SecValue/10;
 DispBuf[2]=minValue%10;
 DispBuf[3]=minValue/10;
 DispBuf[4]=horValue%10;
 DispBuf[5]=horValue/10;
 Sec=0;
 } 
 i=0x01;//位选
   
 for(dCount=0;dCount<=5;dCount++) //动态显示
 {

       
           XBYTE[0XEFFF]=i;//送位选数据
           tem=DispBuf[dCount];//送显示数据
           XBYTE[0XFBFF]=DispTab[tem];
           delay(200);
           i=i<<1;//位选左移
 }
}
while(1);
}  


⌨️ 快捷键说明

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