交通灯(一)x

时间:2022-06-22 15:45:07 浏览量:

 交通灯(一)

 南北方向

 绿 绿 25 秒

  东西方向

  红 红 30 秒 秒

  黄 黄 5 秒

 绿 绿 25 秒 秒

  红 红 30 秒

 黄 黄 5 秒 秒

  #include<reg52.h>

  //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include<math.h>

  char unsigned char int

 unsigned int #define ulang unsigned lang static unsigned char count; code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

 //共阴数码管 0-9 uchar smg[8];

  //定义缓冲区

  uint

 we,ns,h,j;

 aaa();

 bbb(); int eee(); void delay(unsigned int cnt) {

 while(--cnt); }

  void display( ) {

 smg[0]=tab[we/10];

 smg[1]=tab[we%10];

 smg[2]=0x00;

  smg[3]=0x00;

 smg[4]=0x00;

  smg[5]=0x00;

 smg[6]=tab[ns/10];

 smg[7]=tab[ns%10];

 }

  void main() {

 uchar i;

 TMOD |=0x01;

 //定时器 0 10ms in 12M crystal 用于计时 TH0=0xd8;

  //初值 TL0xf0; ET; TR0=1;

 EA =1;

  display();

 while(1)

 {

  for(i=0;i<8;i++)

 //显示函数

  {

 P0=smg[i]; P2=i; delay(100);

  }

  ccc(); display( );

  }

 } void timer() interrupt 1

  {

 TH0=0xd8;

 //重新赋值

 TL0=0xf0;

 count++;

  }

 int aaa() {

  if(j<25)

 {

 if(j==1) { we=30,ns=25; } ns--;

 we--;

 P1=0xde; return 0; }

  if(25<=j<30)

 {

  if(j==26)

 {

 ns=5; }

 P1=0xee;

 ns--;

 we--;

  return 0;

  } }

 int bbb()

 {

 if(h<25)

 {

 if(h==1) { we=25,ns=30; } ns--;

 we--;

  P1=0xf3; return 0; }

  if(25<=h<30)

 {

  if(h==26)

 {

 we=5; }

 P1=0xf5;

 ns--;

 we--;

  return 0;

  }

  }

 int eee()

 {

  j=0; h=0;

 return 0;

  }

  int ccc()

 {

 if (count==100)

 {

 count=0;

 j++; if ( (j>30)&&(j!=61))

 { h++;

 bbb();

 return 0;

  }

 if(j==61)

  { eee(); return 0;}

 aaa();

  return 0;

 }

  }

相关热词搜索: 交通灯