51单片机交通灯设计C语言程序
时间: 2024-11-29 08:18:33 浏览: 17
在使用51单片机设计交通灯控制系统时,通常会采用P0口或者P1口等模拟IO端口来控制LED灯的工作状态。以下是一个简单的基于C语言的交通灯控制器程序示例:
```c
#include <reg52.h> // 包含51单片机寄存器定义
// 定义灯的状态枚举
typedef enum { RED, GREEN, YELLOW } LightState;
LightState light = RED; // 初始灯状态为红灯
void traffic_light(int pin_red, int pin_green, int pin_yellow) {
while (1) {
switch (light) {
case RED:
digitalWrite(pin_red, HIGH); // 红灯亮
digitalWrite(pin_green, LOW);
digitalWrite(pin_yellow, LOW);
break;
case GREEN:
digitalWrite(pin_red, LOW);
digitalWrite(pin_green, HIGH); // 绿灯亮
digitalWrite(pin_yellow, LOW);
break;
case YELLOW:
digitalWrite(pin_red, LOW);
digitalWrite(pin_green, LOW); // 黄灯闪烁
digitalWrite(pin_yellow, HIGH);
for (int i = 0; i < 4; i++) { // 闪烁四次
delay_ms(500);
digitalWrite(pin_yellow, LOW);
delay_ms(500);
digitalWrite(pin_yellow, HIGH);
}
break;
default:
light = RED; // 如果不在上面的状态,恢复到红灯
break;
}
delay_ms(1000); // 每种颜色持续一秒钟
light = (light + 1) % 3; // 循环切换灯状态
}
}
int main(void) {
traffic_light(P1_0, P1_1, P1_2); // 使用P1口的三个引脚连接到相应的LED灯
return 0;
}
阅读全文