51单片机交通灯0-9倒计时
时间: 2023-06-13 15:07:46 浏览: 72
以下是51单片机交通灯0-9倒计时的代码,仅供参考:
```
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code ledChar[] = { // 数码管字符代码表
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
uchar code trafficLight[] = { // 交通灯状态数组
0x10, 0x20, 0x40, 0x22, 0x44, 0x88
};
uchar countdown = 9; // 倒计时秒数(初始为9)
void delay(uint ms) { // 延时函数
uint i, j;
for (i = ms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void display(uchar num) { // 数码管显示函数
P0 = ledChar[num];
}
void main() {
uchar i;
while (1) {
for (i = 0; i < 6; i++) { // 循环显示交通灯状态
P2 = trafficLight[i];
delay(1000);
if (i == 2 || i == 5) // 红灯亮起时开始倒计时
while (countdown > 0) {
display(countdown);
delay(1000);
countdown--;
}
else // 绿灯亮起时重置倒计时
countdown = 9;
}
}
}
```
其中,`ledChar` 数组存储了数码管字符代码,`trafficLight` 数组存储了交通灯状态。`countdown` 变量存储了倒计时秒数,初始为9。`delay` 函数用于延时,`display` 函数用于数码管显示。在 `main` 函数中,通过循环显示交通灯状态,并在红灯亮起时开始倒计时,倒计时结束后绿灯亮起时重置倒计时。
相关推荐
















