• 大小: 72KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: 交通灯  

资源简介

(1)支干道交替通行,主干道每次放行30秒,支干道每次放行20秒; (2)绿灯亮时表示可以通行,红灯亮时表示禁止通行; (3)每次绿灯变红灯时,黄灯先亮5秒(此时另一干道上的红灯不变); (4)十字路口要求有数字显示,作为时间提示,以便人们更直观地把握时间,具体要求主、支干道通行时间及黄灯亮的时间均以秒为单位做减数器; 在黄灯亮时,原红灯按1HZ的频率闪烁; 当有急救车到达时,路口的信号灯全部变红,让急救车通过;假定急救车通过时间为10s,急救车通过后,交通灯恢复先前状态

资源截图

代码片段和文件信息

#include “reg52.h“
#define uint unsigned int
#define uchar unsigned char
#define BIT(X) (1 << X)
sbit G1 = P0^0;
sbit R1 = P0^1;
sbit Y1 = P0^2;

sbit G3 = P0^6;
sbit R3 = P0^7;

sbit Y3 = P0^5;



sbit L0 = P3^0;
sbit L1 = P3^1;

sbit L4 = P3^4;
sbit L5 = P3^5;


uchar const  duanma[] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
uchar const duanma1[] = {0xbf0x860xdb0xcf0xe60xed0xfd0x870xff0xef};
uint countsecEXNum;
bit MainFlagSecondFlagEXFlag0EXFlag1;

void delay_ms(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=89;j>0;j--);
}
}



void DisMainNum(uint i)
{
// P2 = 0XFF;
P2=duanma[i/10];
L0 = 0;

delay_ms(3);
L0 = 1;

P2=duanma[i%10];
L1 = 0;

delay_ms(3);
L1 = 1;



}


void DisSecondNum(uint i)
{
// P2 = 0XFF;
P2=duanma[i/10];
L4 = 0;

delay_ms(3);
L4 = 1;

P2=duanma[i%10];
L5 = 0;

delay_ms(3);
L5 = 1;



}




void DisMain()
{
if(sec < 30)
{
G1 = 0;

R3 = 0;

// R2 = 1;
Y1 = 1;
R1 = 1;
Y1 = 1;
TR0 = 1;
DisMainNum(30 - sec);
DisSecondNum(30 - sec);
}
// DisMainNum(30 - sec);
if(sec >= 30)
{ DisMainNum(35 - sec);
DisSecondNum(35 - sec);
G1 = 1;
// G2 = 1;
// Y2 = 0;
Y1 = 0;
if(sec%2 == 0)
{
R3 = 0;
// R4 = 0;
}
else if(sec%2 == 1)
{
R3 = 1;
// R4 = 1;
}

if(sec == 35)
{
MainFlag = 0;
SecondFlag = 1;
G1 = 1;
// G2 = 1;
// R2 = 1;
Y1 = 1;
R1 = 1;
// Y2 = 1;
TR0 = 0;
sec = 0;
}
}
}



void DisSecond()
{
if(sec < 20)
{
G3 = 0;
// G4 = 0;
R1 = 0;
// R2 = 0;
R3 = 1;
Y3 = 1;
// R4 = 1;
// Y4 = 1;
TR0 = 1;
DisSecondNum(20 - sec);
DisMainNum(20 - sec);
}
//DisSecondNum(sec);
if(sec >= 20)
{
DisSecondNum(25 - sec);
DisMainNum(25 - sec);
G3 = 1;
// G4 = 1;
Y3 = 0;
// Y4 = 0;
if(sec%2 == 0)
{

R1 = 0;
// R2 = 0;
}
else
{

R1 = 1;
// R2 = 1;
}
if(sec == 25)
{
MainFlag = 1;
SecondFlag = 0;
G3 = 1;
// G4 = 1;
R3 = 1;
Y3 = 1;
// R4 = 1;
// Y4 = 1;
TR0 = 0;
sec = 0;
}
}
}

void EXMain()
{
EXNum = 10;
G1 = 1;

G3 = 1;

R1 = 0;

R3 = 0;

while(EXNum)
{
DisMainNum(EXNum);
DisSecondNum(EXNum);
}
EXFlag0 = 0;
EXNum = 10;
}
void EXSecond()
{
EXNum = 10;
G1 = 1;

G3 = 1;


R3 = 0;

R1 = 0;
// R2 = 0;
while(EXNum)
{
DisSecondNum(EXNum);
DisMainNum(EXNum);
}
EXFlag1 = 0;
EXNum = 10;
}
void main()
{

EA = 1;
TMOD = 0X01;
ET0 = 1;
TR0 = 1;
TH0 = 0X3C;
TL0 = 0XB0;
EX0 = 1;
IT0 = 1;
EX1 = 1;
IT1 = 1;
MainFlag = 1;

while(1)
{


if(EXFlag0)
{
EXMain();
}
if(EXFlag1)
{
EXSecond();
}
if(MainFlag == 1)
{
DisMain();

}
else if(SecondFlag == 1)
{
DisSecond();
}

}
}

void ex0() interrupt 0 //
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-12-12 22:01  交通灯\
     文件      115328  2012-12-12 17:42  交通灯\Last Loaded 交通灯仿真图.DBK
     文件        3340  2012-12-12 22:01  交通灯\src.c
     文件       11169  2012-12-12 22:01  交通灯\src.LST
     文件       10836  2012-12-12 22:01  交通灯\src.OBJ
     文件        6376  2009-05-07 14:37  交通灯\STARTUP.A51
     文件       14048  2012-12-12 22:01  交通灯\STARTUP.LST
     文件         749  2012-12-12 22:01  交通灯\STARTUP.OBJ
     文件        9689  2012-12-12 22:01  交通灯\交通灯
     文件        2528  2012-12-12 22:01  交通灯\交通灯.hex
     文件          57  2012-12-12 22:01  交通灯\交通灯.lnp
     文件       16748  2012-12-12 22:01  交通灯\交通灯.M51
     文件         569  2012-12-12 22:01  交通灯\交通灯.plg
     文件       56197  2012-12-12 22:01  交通灯\交通灯.uvopt
     文件       13401  2012-12-07 22:19  交通灯\交通灯.uvproj
     文件       56197  2012-12-12 17:43  交通灯\交通灯_uvopt.bak
     文件           0  2012-12-07 21:36  交通灯\交通灯_uvproj.bak
     文件      115328  2012-12-12 17:42  交通灯\交通灯仿真图.DSN
     文件         742  2012-12-12 17:42  交通灯\交通灯仿真图.PWI

评论

共有 条评论