📄 数字钟.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 + -