当前位置:文档之家› 51单片机实现交通灯的设计

51单片机实现交通灯的设计

51单片机实现交通灯的设计
1.器材:
51单片机开发板一块;
LED灯
2.功能:
东西向绿灯亮若干秒,黄
灯闪烁5 次后红灯亮,红灯亮后,南
北向由红灯变为绿灯,若干秒后南北
向黄灯闪烁5 此后变红灯,东西向变
绿灯,如此重复。

3. 程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit r1=P0^0;//东西向灯;r代表red,y代表yellow,g代表green
sbit y1=P0^1;
sbit g1=P0^2;
sbit r2=P0^3;//南北向灯
sbit y2=P0^4;
sbit g2=P0^5;
uchar count=0;
uchar type=1;//闪烁次数,操作类型变量
void delay(unsigned int t)//延时程序
{
while(--t);
}
void light()//显示程序实现所需功能
{
switch(type)
{
case 1: r1=1;y1=1;g1=0;//1表示灯灭,0表示灯亮,即东西向绿灯与南北向红灯亮r2=0;y2=1;g2=1;
delay(62500);//延时一下,为下一个显示作准备
type=2;//type赋值为2,即执得case 2;
break;
case 2: delay(62500);//消除影响,使led工作稳定;
y1=~y1;g1=1;//进行闪烁,即东西向黄灯闪烁,绿灯关闭
if(++count != 10) return;
count=0;
type=3;
break;
case 3: r1=0;y1=1;g1=1;//东西向红灯,南北向绿灯亮
r2=1;y2=1;g2=0;
delay(62500);
type=4;
break;
case 4: delay(62500);//南北向黄灯闪烁5 次
y2=~y2;g2=1;
if(++count != 10) return;
count=0;
type=1;
}
}
void main()//主程序
{
while(1) light();//引用light()程序;也可以把light()直接写入主程序;
}
三,Proteus仿真图。

相关主题