51单片机数码管50秒倒计时倒计时时间红灯长亮倒计时结束红灯灭程序
时间: 2023-08-10 11:04:41 浏览: 140
好的,下面是修改后的代码,可以实现您所需的功能:
```
#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 = 0; //倒计时结束,红灯灭
while(1);
}
```
在程序的最后,将 `led` 的值修改为 0,即可实现倒计时结束后红灯灭。
阅读全文