資源簡介
(1)支干道交替通行,主干道每次放行30秒,支干道每次放行20秒;
(2)綠燈亮?xí)r表示可以通行,紅燈亮?xí)r表示禁止通行;
(3)每次綠燈變紅燈時,黃燈先亮5秒(此時另一干道上的紅燈不變);
(4)十字路口要求有數(shù)字顯示,作為時間提示,以便人們更直觀地把握時間,具體要求主、支干道通行時間及黃燈亮的時間均以秒為單位做減數(shù)器;
在黃燈亮?xí)r,原紅燈按1HZ的頻率閃爍;
當(dāng)有急救車到達(dá)時,路口的信號燈全部變紅,讓急救車通過;假定急救車通過時間為10s,急救車通過后,交通燈恢復(fù)先前狀態(tài)

代碼片段和文件信息
#include?“reg52.h“
#define?uint?unsigned?int
#define?uchar?unsigned?char
#define?BIT(X)?(1?<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
評論
共有 條評論