基于51单片机的交通灯控制设计

# include & ltreg 51 . h & gt;

#定义uchar无符号字符

#定义uint无符号整数

sbit red_a=p0^0;//东西向光

sbit yellow_a=p0^1;

sbit green_a=p0^2;

sbit red_b=p0^3;//南北光线

sbit yellow_b=p0^4;

sbit green_b=p0^5;

uchar Flash_Count=0,Operation _ Type = 1;//闪光次数,操作类型变量

100例单片机C语言编程实训——基于8051和PROTEUS仿真。

上海师范大学信息与机电工程学院倪继峰

//延迟

无效延迟(uint x)

{

乌恰尔一世;

而(x-)for(I = 0;我& lt120;i++);

}

//红绿灯切换

void交通信号灯()

{

开关(操作类型)

{

案例1: //东西绿灯,南北红灯亮。

RED _ A = 1;YELLOW _ A = 1;GREEN _ A = 0;

RED _ B = 0;YELLOW _ B = 1;GREEN _ B = 1;

戴莱姆斯(2000年);

operation _ Type = 2;

打破;

情况二://东西闪黄灯,绿灯灭。

戴莱姆斯(300);

黄色_ A = ~黄色_ A;GREEN _ A = 1;

if(++Flash_Count!=10)返回;//闪烁5次

flash _ Count = 0;

operation _ Type = 3;

打破;

案例三://东西向红灯,南北向绿灯。

RED _ A = 0;YELLOW _ A = 1;GREEN _ A = 1;

RED _ B = 1;YELLOW _ B = 1;GREEN _ B = 0;

戴莱姆斯(2000年);

operation _ Type = 4;

打破;

情况四://南北黄灯闪5次。

戴莱姆斯(300);

YELLOW _ B = ~ YELLOW _ BGREEN _ B = 1;

if(++Flash_Count!=10)返回;

flash _ Count = 0;

operation _ Type = 1;

}

}

//主程序

void main()

{

while(1)Traffic _ Light();

}