单片机控制交通灯程序代码

更新时间:2023-04-21 22:40:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include<reg51.h>

sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

sbit P20=P2^0;

sbit P21=P2^1;

sbit P22=P2^2;

sbit P23=P2^3;

sbit P24=P2^4;

sbit P25=P2^5;

sbit P32=P3^2;

unsigned int a1=0,a2=0,a3=0,time1=20,time2=3,flag=0;

unsigned char code led[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; main(void)

{

TMOD=0x11;

TH0=0xee;

TL0=0x00;

TR0=1;

ET0=1;

EA=1;

a1=time1;

while(1);

}

void timer0() interrupt 1

{

static unsigned char Bit=0,i=0,huan=0,deng=0,m=0,n=0,l=0,k=1;

TH0=0xee;

TL0=0x00;

if(flag==0||flag==3)

if(a1>0 && a2==0 && a3==0)

{ i++;if(i%200==0){i=0;a1--;} P25=0;if(a1==0){a3=time2;P25=1; }}

else if (a2>0 && a1==0 && a3==0) { i++;if(i%200==0){i=0;a2--;} P23=0;if(a2==0){a3=time2;P23=1; }}

else if (a3>0 && a1==0 && a2==0) { i++;if(i%200==0){i=0;a3--;} P24=0;flag=3; if(a3==0)

switch(huan)

{case(0):flag=0;huan=1;a2=time1;P24=1;break;

case(1):flag=0;huan=0;a1=time1;P24=1;break;

}

}

if(P20==1){m=1;}

if(P20==0&&m==1){ flag++;m=0;a1=time1;a2=0;a3=0;P23=1;P24=1;P25=0;if(flag>=3)flag=0; }

if(P21==1){n=1;}

if(P21==0&&n==1){

n=0;

switch(flag){

case(1):if(time1<10000)time1++;break;

case(2):if(time2<10000)time2++;break;

}

}

if(P22==1){l=1;}

if(P22==0&&l==1){

l=0;

switch(flag){

case(1):if(time1>0)time1--;break;

case(2):if(time2>0)time2--;break;

}

}

if(P32==1){k=1;}

if(P32==0&&k==1){

k=0;

switch(deng){

case(0):deng=1;a2=a1;a1=0;;a3=0;P23=0;P24=1;P25=1;break;

case(1):deng=0;a1=a2;a2=0;;a3=0;P23=1;P24=1;P25=0;break;

}

}

if(Bit>3){Bit=0;}

Bit++;

P1|=0xff;

switch(flag){

case(0):switch(Bit-1){case(0):P0=led[a1%10]; P13=0;break;

case(1):P0=led[a1/10]; P12=0;break;

case(2):P0=(led[a2%10])|0x80; P11=0;break;

case(3):P0=led[a2/10]; P10=0;break;}break; case(1):switch(Bit-1){case(0):P0=led[time1%10]; P13=0;break;

case(1):P0=led[time1%100/10]; P12=0;break;

case(2):P0=led[time1%1000/100];P11=0;break;

case(3):P0=led[time1/1000]; P10=0;break;}break; case(2):switch(Bit-1){case(0):P0=led[time2%10]; P13=0;break;

case(1):P0=led[time2%100/10]; P12=0;break;

case(2):P0=led[time2%1000/100];P11=0;break;

case(3):P0=led[time2/1000]; P10=0;break;}break; case(3):switch(Bit-1){case(0):P0=led[a3%10]; P13=0;break;

case(1):P0=led[a3%100/10]; P12=0;break;

case(2):P0=led[a3%1000/100];P11=0;break;

case(3):P0=led[a3/1000]; P10=0;break;}break; }

}

本文来源:https://www.bwwdw.com/article/07dq.html

Top