51单片机数码管50秒倒计时倒计时时间红灯长亮
时间: 2023-08-02 13:31:10 浏览: 129
51单片机数码管倒计时
您可以使用以下代码实现:
```
#include <reg51.h>
sbit led = P2^0; //红灯接在P2.0口上
sbit dula = P0^6; //数码管段选1接在P0.6口上
sbit wela = P0^7; //数码管位选接在P0.7口上
unsigned char code table[] = { //共阴数码管编码表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int i) { //延时函数,i为延时时间,单位为毫秒
unsigned int j, k;
for(j = i; j > 0; j--)
for(k = 110; k > 0; k--);
}
void main() {
unsigned char i, j, k;
for(i = 50; i > 0; i--) { //50秒倒计时
for(j = 60; j > 0; j--) { //60次循环为1秒
for(k = 0; k < 20; k++) { //20次循环为0.05秒
P1 = table[j % 10]; //个位
dula = 0;
dula = 1;
P1 = table[j / 10]; //十位
wela = 0;
wela = 1;
delay(50); //每次显示0.05秒
}
}
}
led = 1; //倒计时结束,红灯长亮
while(1);
}
```
代码中使用了一个延时函数 `delay`,需要根据实际情况调整延时时间。同时,根据实际使用的数码管类型,可能需要调整编码表 `table`。
阅读全文