请你用C语言写一段51单片机程序:数码管显示 00-00 延时 1s 左右,每过一秒,所显示的数字自动从 00-01自加1,直到 00-59,1分钟时变成 01- 00。然后每过一秒自加1,当显示的数字到达 59-59 之后,再来一秒,显示的数字又从 00-00 开始。
时间: 2023-05-11 10:03:40 浏览: 210
以下是代码:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = { // 数码管显示0-9的编码
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(uint t) { // 延时函数
uint i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 120; j++);
}
void main() {
uchar min = 0, sec = 0; // 分钟和秒钟
uchar disp[4] = {0, 0, 0, 0}; // 数码管显示的数值
uchar i;
while (1) {
// 更新数值
sec++;
if (sec == 60) {
sec = 0;
min++;
if (min == 60) {
min = 0;
}
}
// 转换数值为数码管编码
disp[0] = table[min / 10];
disp[1] = table[min % 10];
disp[2] = table[sec / 10];
disp[3] = table[sec % 10];
// 显示数值
for (i = 0; i < 4; i++) {
P0 = disp[i];
P2 = 1 << i;
delay(1);
P2 = 0;
}
}
}