51单片机 晶体管倒计时代码
时间: 2023-11-11 09:03:53 浏览: 106
以下是51单片机晶体管倒计时代码:
```c
#include <reg51.h>
#define uchar unsigned char
uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
void delay(uint ms)
{
uint i,j;
for(i = ms;i > 0;i--)
for(j = 114;j > 0;j--);
}
void main()
{
uchar hour = 23, minute = 59, second = 55; // 初始化时间为23:59:55
while(1)
{
if(second == 0) // 当秒数为0时,去一分钟
{
if(minute == 0)
{
if(hour == 0)
hour = 23;
else
hour--;
minute = 59;
}
else
minute--;
second = 59;
}
else
second--;
P2 = 0xff; // 关闭所有数码管
P0 = table[hour / 10]; // 显示小时的十位数
P2 = 0xfe; // 打开第一个数码管
delay(1);
P2 = 0xff; // 关闭所有数码管
P0 = table[hour % 10]; // 显示小时的个位数
P2 = 0xfd; // 打开第二个数码管
delay(1);
P2 = 0xff; // 关闭所有数码管
P0 = table[minute / 10]; // 显示分钟的十位数
P2 = 0xfb; // 打开第三个数码管
delay(1);
P2 = 0xff; // 关闭所有数码管
P0 = table[minute % 10]; // 显示分钟的个位数
P2 = 0xf7; // 打开第四个数码管
delay(1);
}
}
```
以上代码实现了一个简单的倒计时功能,使用4个共阳数码管显示当前时间,每秒刷新一次。
阅读全文