目录
具体实现功能
具体功能:
(1)东西方向45秒红灯倒计时:南北方向直行绿灯30秒倒计时,南北方向10秒左转绿灯倒计时,南北方向和东西方向5秒黄灯倒计时;
(2)南北方向45秒红灯倒计时:东西方向直行绿灯30秒倒计时,东西方向10秒左转绿灯倒计时,南北方向和东西方向5秒黄灯倒计时;
(3)设置自动、手动、特殊情况三种模式。自动模式下,自动显示倒计时,红绿灯自动切换,早高峰(8点到10点)东西方向绿灯增加10S,晚高峰(18点到20点)南北方向绿灯增加10S;
(4)手动模式下,根据道路车流量情况调节倒计时时间,当车辆增多10辆以上时,增加15秒通行时间;也可按键调整倒计时时间;
(5)两种紧急情况:第一种所有路口红灯、黄灯亮;第二种切换南北和东西红绿灯状态。

仿真演示视频:
基于51单片机的交通灯智能调节系统-仿真视频
设计介绍

51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。
本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)
本设计利用KEIL5软件实现程序设计。
主函数如下:
///////////////////////////////////////////////////
/*********************主程序开始***********************/
void main(void)
{
Ds1302_Init();
IT0=1; //INT0负跳变触发 设置成 低电平触发方式,IT0=1为下降沿触发
TMOD=0x01; //定时器工作于方式1
TH0=(65536-50000)/256; //定时器赋初值
TL0=(65536-50000)%256;
EA=1; //CPU开中断总允许
ET0=1; //开定时中断
EX0=1; //开外部INTO中断
TR0=1; //启动定时
while(1)
{
Ds1302_Read_Time();
hour=time_buf1[4];
fen=time_buf1[5];
Flag_zhuanhuan=0; //南北倒计时
/*******S0状态,南北直行30S倒计时**********/
Flag_EW_Yellow=0; //EW关黄灯显示信号,黄灯不亮
Time_EW=EW;//赋倒计时初值20S
Time_SN=SN;//赋倒计时初值30S
time_control2();
while(Time_SN>=0)//南北倒计时大于零则继续循环
{
P1 = S[0]; //给P1口赋值,使SN绿灯,EW红灯
Display();//调用显示函数,显示
key();
special();
car_num();
}
/*******S1状态,南北左转15S绿灯**********/
Flag_SN_Yellow=0; //SN关黄灯显示信号
Time_SN=SNL;
Time_EW=EWL;
while(Time_SN>=6)//大于6S一直倒计时
{
P1=S[2]; //SN左拐绿灯亮,EW红灯
Display();
key();
special();
car_num();
}
/*******S2状态,绿灯转黄灯**********/
P1=0x00;
while(Time_SN>=0)//倒计时6S到0S转黄灯
{
Flag_SN_Yellow=1; //SN开黄灯信号位
Flag_EW_Yellow=1; //SN开黄灯信号位
P1=P1|0x44; //保持EW红灯
Display();
key();
special();
}
Flag_zhuanhuan=1;
/*******S3状态,东西直行30S**********/
Flag_SN_Yellow=0; //SN关黄灯显示信号
Time_EW=EW1;
Time_SN=SN1; //倒计时时间赋值
time_control1();
while(Time_EW>=0) //30S倒计时
{
P1=S[4]; //EW通行,SN红灯
Display();
key();
special();
car_num();
}
/*******S4状态,东西左转15S倒计时**********/
Flag_EW_Yellow=0;//EW关黄灯显示信号
Time_SN=SNL1;
Time_EW=EWL1;
while(Time_EW>=6)//大于6S时一直为左转绿灯
{
P1=S[6]; //EW左拐绿灯亮,SN红灯
Display();
key();
special();
car_num();
}
/*******S5状态**********/
P1=0x00;
while(Time_EW>=0)//小于6S后为黄灯
{
Flag_EW_Yellow=1; //SN开黄灯信号位
Flag_SN_Yellow=1; //SN开黄灯信号位
P1=P1|0x44; //保持EW红灯
Display();
key();
special();
}
P1=0XFF;
}
}
程序运行结果如图:

全部内容
全部资料包括程序(keil5)、protues仿真(protues8.7)、设计说明、答辩PPT、开发资料、资料使用介绍、仿真视频、程序讲解视频、仿真讲解视频、最小系统介绍视频等。
