单片机数码管60秒倒计时程序
时间: 2023-07-25 08:03:25 浏览: 155
以下是基于51单片机的数码管60秒倒计时程序:
```c
#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 i) { // 延时函数,i越大,延时越长
while (i--);
}
void main() {
uchar i, j, k;
while (1) {
for (i = 0; i < 6; i++) { // 60秒倒计时
for (j = 0; j < 10; j++) { // 0~9秒
for (k = 0; k < 100; k++) { // 0~99毫秒
P1 = 0x00; // 先全部清零
P0 = table[i]; // 显示十位
P1 = 0x01; // 选中第一个数码管
delay(1000); // 延时1ms
P1 = 0x00; // 关闭第一个数码管
P1 = 0x00; // 先全部清零
P0 = table[j]; // 显示个位
P1 = 0x02; // 选中第二个数码管
delay(1000); // 延时1ms
P1 = 0x00; // 关闭第二个数码管
P1 = 0x00; // 先全部清零
P0 = table[k / 10]; // 显示十毫秒
P1 = 0x04; // 选中第三个数码管
delay(100); // 延时0.1ms
P1 = 0x00; // 关闭第三个数码管
P1 = 0x00; // 先全部清零
P0 = table[k % 10]; // 显示毫秒
P1 = 0x08; // 选中第四个数码管
delay(100); // 延时0.1ms
P1 = 0x00; // 关闭第四个数码管
}
}
}
}
}
```
程序使用了外部4位共阳极数码管,通过P1口的高四位分别选中每个数码管,P0口输出数码管对应的显示编码,通过循环显示0~59秒,最后实现60秒倒计时。