实验要求
参照演示示例电路并结合自己已有功能的电路实际,实现“交通灯”控制模拟功能(可以简化为南北共一组灯、东西共一组灯,进行对应切换控制,时间参考值:绿27s、黄3s和红30s)。
根据实验要求,列出灯亮灭情况,如下:
代码:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P1^4;
sbit LED5 = P1^5;
uchar number = 0,temp = 1;
void delay(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
text()
{
switch(temp)
{
case 1:
LED0 = 0;
LED1 = 1;
LED2 = 1;
LED3 = 1;
LED4 = 1;
LED5 = 0;
delay(2000);
temp = 2;
break;
case 2:
delay(300);
LED4 = ~LED4;
LED5 = 1;
if(++number!=6) return;
number=0;
temp = 3;
break;
case 3:
LED0 = 1;
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 1;
LED5 = 1;
delay(2000);
temp = 4;
break;
case 4:
delay(300);
LED1 = ~LED1;
LED2 = 1;
if(++number!=6) return;
number=0;
temp = 1;
}
}
void main()
{
while(1)
text();
}
代码截图:
仿真截图: