资源简介
(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
相关资源
- 交通灯课程设计数电 proteus实现
- EWB课程设计——交通灯
- 基于VHDL语言的交通灯设计
- 51单片机 的交通灯仿真与原理图
- 基于C51单片机的交通灯开发
- 交通灯控制电路设计数电课程设计 数
- 8255交通灯控制系统(倒计时显示,紧
- 8255交通灯实验含详细注解
- 基于FPGA的交通灯控制器设计
- FPGA 交通灯程序
- 基于C51的交通灯控制系统
- 交通灯设计VHDL程序代码
- 课设 交通灯
- EDA课程设计交通灯
- 数电课程设计交通灯
- 基于单片机的智能交通灯控制系统设
- 交通灯 数字电子课程设计
- 微机原理:交通灯课程设计
- 8086交通灯设计原理图和代码
- stc 51单片机实现的交通灯包括keil程序
- 交通灯proteus仿真电路图
- 交通灯两路.rar
- 微机原理课程设计 基于8253、8255A、
- 模拟交通灯电路仿真proteus图
- 交通灯的VHDL实现
- QML:模拟交通灯
- 用vhdl语言设计交通信号灯控制器
- EDA交通灯verilog代码
- 基于fpga交通灯的设计
- 51单片机实现交通灯压缩文件.rar
评论
共有 条评论