交通信号灯C语言源程序Word文档格式.docx
《交通信号灯C语言源程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《交通信号灯C语言源程序Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
unsignedcharfalsh_sign,direction_sign,flash_count;
unsignedintsecnum;
unsignedcharkey;
voiddelay_ms(unsignedinta);
voidadd_process();
voidsub_process();
voidset_process();
voidscan_key();
voidinit();
voiddelay_ms(unsignedinta)
{unsignedchari;
while(a--)
{i=70;
while(i--);
}
voidadd_process()
{
delay_ms(600);
if(!
P3^2)
delay_ms(500);
if(P3^2)
if(key==1)
set_value[0]=set_value[0]+10;
if(set_value[0]>
99)
set_value[0]=set_value[0]%10;
disp_ew=set_value[0];
if(key==2)
set_value[1]++;
if(set_value[1]>
9)
set_value[1]=0;
disp_ew=set_value[1];
if(key==3)
set_value[2]=set_value[2]+10;
if(set_value[2]>
set_value[2]=set_value[2]%10;
disp_sn=set_value[2];
if(key==4)
set_value[3]++;
if(set_value[3]>
set_value[3]=0;
disp_sn=set_value[3];
while(!
delay_ms(1200);
else
P3^2);
set_value[0]++;
set_value[0]=0;
set_value[2]++;
set_value[2]=0;
voidsub_process()
P3^3)
if(P3^3)
P3^3);
set_value[0]=set_value[0]-10;
if(set_value[0]<
0)
set_value[0]=set_value[0]+100;
set_value[1]--;
if(set_value[1]<
set_value[1]=9;
set_value[2]=set_value[2]-10;
if(set_value[2]<
set_value[2]=set_value[2]+100;
set_value[3]--;
if(set_value[3]<
set_value[3]=9;
set_value[0]--;
set_value[0]=99;
set_value[2]--;
set_value[2]=99;
voidset_process()
P3^0);
ET1=0;
TR1=0;
key=key+1;
falsh_sign=1;
if(key>
5)
key=1;
P1=0xfb;
direction_sign=1;
P1=0xfd;
P1=0xdf;
direction_sign=2;
P1=0xef;
if(key==5)
disp_sn=set_value[0]+set_value[1];
P1=0xf3;
falsh_sign=0;
ET1=1;
TR1=1;
voidscan_key()
while(P3^0&
&
P3^2&
P3^3);
delay_ms(15);
P3^0)
set_process();
add_process();
sub_process();
return;
voiddisp_t0(void)interrupt1
TR0=0;
num++;
num=(num%4);
P2=0xff;
P0=0xff;
P2=bittab[num];
switch(num)
case0:
case1:
case2:
case3:
default:
P0=disptab[disp_sn%10];
P0=disptab[disp_sn/10];
P0=disptab[disp_ew%10];
P0=disptab[disp_ew/10];
;
break;
TH0=0xD8;
TL0=0xF0;
TR0=1;
voiddisp_count_t1(void)interrupt3
TH1=0x3C;
TL1=0xB0;
secnum++;
if(secnum==20)
disp_sn--;
disp_ew--;
if(disp_ew==0&
sign[0]==1)
EW_LED_GREEN=1;
EW_LED_YELLOW=0;
sign[1]=1;
sign[0]=0;
sign[1]==1)
disp_ew=set_value[2]+set_value[3];
SN_LED_RED=1;
EW_LED_YELLOW=1;
EW_LED_RED=0;
SN_LED_GREEN=0;
sign[2]=1;
sign[1]=0;
if(disp_sn==0&
sign[2]==1)
SN_LED_GREEN=1;
SN_LED_YELLOW=0;
sign[3]=1;
sign[2]=0;
sign[3]==1)
EW_LED_RED=1;
SN_LED_YELLOW=1;
EW_LED_GREEN=0;
SN_LED_RED=0;
sign[0]=1;
sign[3]=0;
secnum=0;
voidinit()
direction_sign=0;
flash_count=0;
key=0;
P0=0xff;
P3=0xf8;
TMOD=0x11;
EA=1;
ET0=1;
voidmain()
init();
while
(1)
scan_key();