天津**大学2014届本科生毕业设计论文
具体程序如下: u8 RGY_CutControl(void) {
//红绿灯切换 switch(StatusCUT) {
case 1:{
EnCarCounter = 1; //A_red and B_green if(!(T0Counter-GHBtime)) {
T0Counter = 0; StatusCUT++;
DISNumB = YHtime; }
}break; case 2:{
EnCarCounter = 1; //A_red and B_yellow if(!(T0Counter-YHtime)) {
EX0=0;
EX1=0; //关闭外部中断,防止伪计数
T0Counter = 0; StatusCUT++;
//-------------------------------------------------
if(Int0Counter <= 5)
GHAtime = 80;
else if(Int0Counter <= 10)
21
天津**大学2014届本科生毕业设计论文
GHAtime = 120;
else
GHAtime = 160;
Int1Counter = 0;
Int1Counter = 0;
//-------------------------------------------------
}
DISNumA = GHAtime; //A'green time DISNumB = GHAtime+YHtime; //b'red time EX0=1;
EX1=1; //关闭外部中断,防止伪计数
}break; case 3:{
EnCarCounter = 2; //A_green and B_red if(!(T0Counter-GHAtime)) { }
T0Counter = 0; StatusCUT++; DISNumA = YHtime;
}break; case 4:{
EnCarCounter = 2; //A_yellow and B_red if(!(T0Counter-YHtime)) {
EX0=0;
EX1=0; //关闭外部中断,防止伪计数
22
天津**大学2014届本科生毕业设计论文
T0Counter = 0; StatusCUT=1;
//-------------------------------------------------
if(Int1Counter <= 5)
GHBtime = 80;
else if(Int1Counter <= 10)
GHBtime = 120;
else
GHBtime = 160;
Int1Counter = 0;
Int1Counter = 0;
//------------------------------------------------- }
} return 0;
}
DISNumA = GHBtime+YHtime; DISNumB = GHBtime; EX0=1;
EX1=1; //关闭外部中断,防止伪计数
}break; default: ;
4.3车流量检测流程图
系统上电后,系统开始运行,起始A方向红灯亮,B方向绿灯亮,同时判断A方向的车流量,当A、B方向的车流量小于等于5是,A、B方向信号灯按照红灯50秒,绿灯40秒,黄灯10秒运行;当A、B方向的车流量大于5小于等于10时,
23
天津**大学2014届本科生毕业设计论文
A、B方向的信号灯按照红灯70秒,绿灯60秒,黄灯10秒运行;当A、B方向的车流量为其它数时,A、B方向的信号灯按照红灯90秒,绿灯80秒,黄灯10秒运行。按照该规律循环运行,车流量检测流程图如下所示:
开始开始系统初始化系统初始化是AA、、BB方向车流量方向车流量是否是否<=5<=5绿灯亮绿灯亮4040秒秒否绿灯亮绿灯亮6060秒秒AA、、BB方向车流量是方向车流量是否大于否大于55小于等于小于等于1010是否绿灯亮绿灯亮8080秒秒
车流量检测模块的具体程序在红绿黄灯相互转换流程图中所示。
24
天津**大学2014届本科生毕业设计论文
第五章 调试及性能分析
设计时按红绿交通灯控制程序、倒计时显示和车流量检测调整信号灯通行时间进行调试。
5.1红绿黄交通灯控制调试
红绿黄灯直接通过单片机的控制进行调试,观察其逻辑状态是否符合交通信号灯的显示要求。可多次、反复的进行调试,直至其逻辑关系正确。值得注意的是,南北方向(B方向)、东西方向(A方向)的指示灯要同时调试。使得符合绿灯时间和黄灯时间之和为红灯时间。
5.2车流量检测调试
当车辆通过时,阻挡了激光对管所发射出的信号,则计数一次,当计数超过5时下次该方向的绿灯时间可以进行调整,则说明可以接收到信号,电路正常。
STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。
5.3STC89C52调试及性能分析
AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准 MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes
25