新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于89C52单片机的红外遥控双模式交通灯控制系统

基于89C52单片机的红外遥控双模式交通灯控制系统

作者:时间:2012-08-31来源:网络收藏

void display(shi,ge)

{ dula=1;

P0=table[shi];

dula=0;

wela=1;

P0=table1[0];

wela=0;

delay(5);

P0=0xff; // 对数码管消影

dula=1;

P0=table[ge];

dula=0;

wela=1;

P0=table1[1];

wela=0;

delay(5);

P0=0xff;}

模式一函数:

void mod1()

{ if(num==1gtime>5) // 东西道红灯亮,南北道绿灯亮,最后5 秒切换成黄灯

{ LED5=0;

LED1=0; }

if(num==2) // 东西道绿灯亮,南北道红灯亮

{ LED2=0;

LED6=0;

LED5=1;

LED3=1;

LED1=1; }

if(num==1gtime==5) // 东西道红灯亮,南北道黄灯亮5 秒

{ LED5=1;

LED2=1;

LED3=0; }

shi=gtime/10;

ge=gtime%10;

if(aa==20) // 50ms×20=1s, 即过1s 数码管数字减1

{ aa=0;

gtime--; }

display(shi,ge);

if(gtime==0num!=2)

{ gtime=60;

num=2; }

if(gtime==0num==2)

{ num=1;

gtime=60;

LED2=1;

LED6=1; } }

模式二函数:

如同模式一,只是参数有变化。如将gtime=60 换成rtime=40;num=1 换成numa=1;仅此而已。

主函数:

void main()

{ init();

while(1)

/* 模式一,平常模式,红绿灯切换时间为60 秒*/

{ if(MODEL1==1||HMODE1==0) // 按键或红外控制切换模式

{ mod1(); }

/* 通过按键切换工作模式*/

if(KEY1==0)

{ delay(5); //按键消抖

while(KEY1==0)

{ MODEL1++;

rtime=40;

if(MODEL1==3)

{ MODEL1=1;

gtime=60; }

while(!KEY1); } }

… …

/*模式二,上下班高峰期模式。红绿灯切换时间为40 秒*/

if(MODEL1==2||HMODE1==1)

{ mod2(); }

} }

void timer0() interrupt 1

{ TH0=15536/256;

TL0=15536%256;

aa++; }

红外遥控器相关文章:红外遥控器原理


评论


相关推荐

技术专区

关闭