C51-校时”功能的 6 位数码管电子钟

lemon Lv5

一、整体功能

  • 正常走时:上电后从 00-00-00 开始,按 24 小时制计时。
  • 暂停/继续:按 K4(P3^3)立即进入/退出暂停状态。
  • 校时:在 暂停状态
      – K1(P3^1)小时 +1
      – K2(P3^0)分钟 +1
      – K3(P3^2)秒钟 +1
  • 显示:6 位共阳数码管,动态扫描,位选由 P2,段选由 P0 输出。

二、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include  <reg51.h>
sbit k1_down=P3^1;
sbit k2_down=P3^0;
sbit k3_down=P3^2;
sbit k4_down=P3^3;
unsigned char paused = 0;

unsigned char count=0,miao=0,min=0,hour=0;
unsigned char disp[]={0x14,0x10,0x0c,0x08,0x04,0x00};
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};



void timer_1() interrupt 3 //T1
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
TF1=0;
if(k4_down==0) paused = !paused;
if(!paused)
{
count++;
if(count==100)
count=0;
miao++;
if(miao==60)
{
miao=0;min++;
if(min==60)
{
min=0;hour++;
if(hour==24) hour=0;
}
}
}
}
else
{
count++;
if(count==15)
{
count=0;
if (k1_down==0) {
hour = (++hour) % 24;
}
if (k2_down==0) {
min = (++min) % 60;
}
if (k3_down==0) {
miao = (++miao) % 60;
}
}
}
}


void Miao(unsigned char i)
{
unsigned char m;
//miao
P2=disp[4];
P0=~led[i/10];
for(m=0;m<100;m++);
P0=0x00;
P2=disp[5];
P0=~led[i%10];
for(m=0;m<100;m++);
P0=0x00;
}

void Min(unsigned char j)
{
//min
unsigned char m;
P2=disp[2];
P0=~led[j/10];
for(m=0;m<100;m++);
P0=0x00;
P2=disp[3];
P0=~led[j%10];
for(m=0;m<100;m++);
P0=0x00;
}

void Hour(unsigned char k)
{
//hour
unsigned char m;
P2=disp[0];
P0=~led[k/10];
for(m=0;m<100;m++);
P0=0x00;
P2=disp[1];
P0=~led[k%10];
for(m=0;m<100;m++);
P0=0x00;
}

void main()
{
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;
EA=1;
TR1=1;
while(1)
{Miao(miao);Min(min);Hour(hour);}
}
  • 标题: C51-校时”功能的 6 位数码管电子钟
  • 作者: lemon
  • 创建于 : 2025-07-22 22:09:31
  • 更新于 : 2025-07-22 22:13:19
  • 链接: https://lemon2003.github.io/post/20250722220931.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
C51-校时”功能的 6 位数码管电子钟