基于89C52單片機(jī)的紅外遙控雙模式交通燈控制系統(tǒng)
void display(shi,ge)
{ dula=1;
P0=table[shi];
dula=0;
wela=1;
P0=table1[0];
wela=0;
delay(5);
P0=0xff; // 對數(shù)碼管消影
dula=1;
P0=table[ge];
dula=0;
wela=1;
P0=table1[1];
wela=0;
delay(5);
P0=0xff;}
模式一函數(shù):
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 數(shù)碼管數(shù)字減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; } }
模式二函數(shù):
如同模式一,只是參數(shù)有變化。如將gtime=60 換成rtime=40;num=1 換成numa=1;僅此而已。
主函數(shù):
void main()
{ init();
while(1)
/* 模式一,平常模式,紅綠燈切換時(shí)間為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); } }
… …
/*模式二,上下班高峰期模式。紅綠燈切換時(shí)間為40 秒*/
if(MODEL1==2||HMODE1==1)
{ mod2(); }
} }
void timer0() interrupt 1
{ TH0=15536/256;
TL0=15536%256;
aa++; }
紅外遙控器相關(guān)文章:紅外遙控器原理
評(píng)論