1.1 掌握哀求
(1)系统事情受开关掌握,起动开关 ON 则系统事情;起动开关 OFF 则系统停滞事情。

(2)掌握工具有八个:
东西方向红灯两个 , 南北方向红灯两个,
东西方向黄灯两个 , 南北方向黄灯两个,
东西方向绿灯两个 , 南北方向绿灯两个,
东西方向左转弯绿灯两个,南北方向左转弯绿灯两个。
(3)其余东西方向、南北方向各设置显示两位十进制的7段显示器,用来显示倒数计数值。
1)高峰时段按时序图二(见附图)运行, 正常时段按时序图三(见附图)运行,晚上时段按提示警告办法运行,规律为: 东、南、西、北四个黄灯全部闪亮,别的灯全部熄灭。
高峰时段、正常时段及晚上时段的时序分配按时序图一运行(见附图)。
可以只选择高峰时段或正常时段进行设计,但末了评分值最高以良好评议;如果全部功能实现(须要设计一个24小时的时钟作为时段划分的根本),最高评分值以精良评议。
时序图
第二章 系统方案设计
2.1交通灯运行状态剖析
根据掌握哀求,系统以下图交通的运行状态来设计系统方案。
状态1南北直行;状态2南北左转; 状态3东西直行;状态4东西左转。
共有四种状态,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期。循环实行如图1.5所示:
图2.1 交通灯状态循环图
2.2系统总体方案设计
图2.2系统总体方案图
本系统采取MCS-51系列单片机AT89C51为中央器件来设计交通灯掌握器,实现了正常、高峰、晚间时通过单片机的P1口设置红、绿、黄灯亮灭的功能。东西、南北两位7段显示器用来显示倒数计数值。系统分三种事情时段:正常、高峰、晚间,并且通过韶光段来掌握"正常"、"高峰"、"晚间"相互转化。
正常时段:南北段直行通畅(绿灯)、东西段禁止(红灯)40s,同时南北段和东西段方向的数码管分别从40s和70s开始倒计时,至末了5s时南北段绿灯变成黄灯闪烁;此后南北段左转(左转绿灯亮)通畅、东西段禁止(红灯)20s,同时南北段和东西段方向的数码管都从20s开始倒计时,至末了5s时南北段左转灯变成黄灯闪烁;再后东西段直行通畅(绿灯)、南北段禁止(红灯)40s,同时东西段和南北段方向的数码管分别从40s和70s开始倒计时,至末了5s时东西段绿灯变成黄灯闪烁;末了东西段左转(左转绿灯亮)通畅、南北段禁止(红灯)20s,同时东西段和南北段方向的数码管都从20s开始倒计时,至末了5s时东西段左转灯变成黄灯闪烁。
高峰时段:南北段、东西段的通畅韶光改为45s,左转的韶光改为15s,其它与正常时段相同。
晚间时段:禁止左转和直行,东西南北四个方向黄灯闪亮。
第三章 系统电路设计
3.1掌握芯片选择
图3.1 AT89C51引脚图
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个可编程定时计数器,2个全双工串行通信口,2个读写口线,器件采取ATMEL公司的高密度、非易失落性存储技能生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中心处理器(CPU)和Flash存储单元,可以按照常规方法对其进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特殊是可反复擦写的Flash存储器可有效地降落开拓本钱。
3.2状态灯选择
该系统设计红、绿、黄状态灯显示的功能,用LED灯来代替实际的交通灯,由于有四种不同的运行状态,一个十字路口须要16个LED灯,倒计时数码管显示选用两位带片选的7段数码管,须要4个。数码管显示大略,程序大略,端口用的少。普通单色发光二极管具有体积小、事情电压低、事情电流小、发光均匀稳定、相应速率快、寿命长等优点,可用各种直流、互换、等电源驱动点亮,它属于电流掌握型,利用时需串接得当的限流电阻。
3.3系统硬件事理图设计
图3.2系统事理支配图
第四章 系统软件设计
4.1 程序流程图设计
图4.1主程序流程图
系统通电后,初始化定时器,进行24小时定时,在7:00到8:15或16:30到17:00时,按高峰时段运行。在6:30到7:00或8:15到16;30或18:00到19:00时,按正常时段运行。别的时段,按晚间时段运行。
图4.2 时钟及晚间时段程序流程图
本设计利用单片机的定时器T0中断来设置24小时定时,设置TH1=0x3C,TL1=0xB0.即每0.05秒中断一次。到第20次中断即过了200.05秒=1秒时,计60S时,满意1分钟,计满60分钟,满1小时,计满24小时,又重新开始计时。用定时器T1中断来设置数码管倒计时,每满1S时,使韶光的计数值减1,便实现了倒计时的功能。
图4.3 高峰时段及正常时段流程图
4.2 系统编程
4.2.1定时器的中断设置
在单片机中,中断技能紧张用于实时掌握。所谓实时掌握,便是哀求打算性能及时地相应被控工具提出的剖析、打算和掌握等要求,使被控工具保持在最佳事情状态,以达到预定的掌握效果。由于这些掌握参量的要求都是随机发出的,而且哀求单片机必须做出快速相应并及时处理,对此,只有靠中断技能才能实现。
本系统中的定时时钟及倒计时的设置和相应中断做事子程序如下:
/24小时时钟 /
void Timer0Cofig(){
TMOD=0x01; //T0定时器事情办法
TH0=0x3C; //设置初始值,定时50MS
TL0=0xB0;
ET0=1; //定时器开中断
TR0=1; //启动定时器0
EA=1; //CPU开中断总许可
}
void T0int() interrupt 1{
TH0=0x3C; //设置初始值
TL0=0xB0;
second_counter++;
if(second_counter>=20){second++;second_counter=0;}
if(second>=60){minute++;second=0;}
if(minute>=60){hour++;minute=0;}
if(hour>=24){hour=0;}
}
/倒数显示定时器/
void Timer1Cofig()
{
TMOD=0x01; //T1定时器事情办法
TH1=0x3C; //定时器初值50ms中断一次
TL1=0xB0;
ET1=1; //定时器开中断
TR1=1; //启动定时器1
EA=1; //CPU开中断总许可
}
/定时器中断函数/
void timer1() interrupt 3{
TH1=0x3C; //重新装入初值
TL1=0xB0;
RGY_second++;
if(RGY_second==20){
RGY_second=0;
Time_EW--;//满1秒,数码管值减1
Time_SN--;
}
}
第五章 系统调试与仿真
5.1 proteus仿真结果
根据系统设计哀求,进行keil调试和proteus系统仿真,不断调试程序。发光二极管,数码管都能按哀求显示,符合哀求。proteus总体仿真图如下。
图5.1 仿真结果









