用三个发光二极管和51单片机实现红绿灯信号灯的代码
时间: 2023-11-06 15:05:47 浏览: 54
以下是一个基于51单片机的红绿灯信号灯的代码实现:
```c
#include <reg51.h>
sbit redLed = P1^0; // 红灯引脚
sbit yellowLed = P1^1; // 黄灯引脚
sbit greenLed = P1^2; // 绿灯引脚
void delay(unsigned int t) { // 延时函数
unsigned int i, j;
for (i = 0; i < t; i++) {
for (j = 0; j < 120; j++) {
// do nothing
}
}
}
void main() {
while (1) {
redLed = 1;
yellowLed = 0;
greenLed = 0;
delay(5000); // 等待5秒钟
redLed = 0;
yellowLed = 1;
greenLed = 0;
delay(2000); // 等待2秒钟
redLed = 0;
yellowLed = 0;
greenLed = 1;
delay(5000); // 等待5秒钟
}
}
```
在这个代码中,我们首先定义了红灯、黄灯、绿灯的引脚,然后通过 sbit 关键字将它们映射到对应的物理引脚。在 main() 函数中,我们通过改变这三个引脚的电平来控制三个灯的亮灭。每次循环开始时,红灯亮,其他灯灭;过了5秒钟后,红灯熄灭,黄灯亮;再过2秒钟后,黄灯熄灭,绿灯亮。然后等待5秒钟,开始下一轮循环。
需要注意的是,这个代码只是一个简单的演示,实际应用中可能需要加入更多的逻辑判断和安全保护。同时,为了防止电流过大损坏发光二极管,我们还需要加入适当的限流电阻。