51单片机交通灯,编程实现4盏LED的模拟交通灯,1、正常情况下,东西、南北方向轮流点亮交通灯;
时间: 2024-05-03 11:16:39 浏览: 12
好的,针对你的问题,以下是51单片机交通灯的编程实现:
```c
#include <reg51.h>
sbit led_north_south_green = P1^0; //南北方向绿灯
sbit led_north_south_yellow = P1^1; //南北方向黄灯
sbit led_north_south_red = P1^2; //南北方向红灯
sbit led_east_west_green = P1^3; //东西方向绿灯
sbit led_east_west_yellow = P1^4; //东西方向黄灯
sbit led_east_west_red = P1^5; //东西方向红灯
void delay(unsigned int x) //延时函数
{
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
while (1)
{
led_north_south_green = 1; //南北方向绿灯亮
led_north_south_yellow = 0;
led_north_south_red = 0;
led_east_west_green = 0;
led_east_west_yellow = 0;
led_east_west_red = 1; //东西方向红灯亮
delay(5000); //绿灯亮5秒钟
led_north_south_green = 0;
led_north_south_yellow = 1; //南北方向黄灯亮
led_north_south_red = 0;
led_east_west_green = 0;
led_east_west_yellow = 1; //东西方向黄灯亮
led_east_west_red = 1;
delay(2000); //黄灯亮2秒钟
led_north_south_green = 0;
led_north_south_yellow = 0;
led_north_south_red = 1; //南北方向红灯亮
led_east_west_green = 1; //东西方向绿灯亮
led_east_west_yellow = 0;
led_east_west_red = 0;
delay(5000); //绿灯亮5秒钟
led_north_south_green = 0;
led_north_south_yellow = 1; //南北方向黄灯亮
led_north_south_red = 0;
led_east_west_green = 0;
led_east_west_yellow = 1; //东西方向黄灯亮
led_east_west_red = 1;
delay(2000); //黄灯亮2秒钟
}
}
```
以上代码实现了4盏LED的模拟交通灯,正常情况下,南北方向和东西方向轮流点亮交通灯。代码中用到了延时函数来控制灯的亮灭时间。建议在测试时使用仿真器或者直接连接硬件进行调试。