图4-4 交通灯系统原理图
图4-5 交通灯PCB图
图4-6 交通灯PCB三维视图
5 软件设计部分
软件介绍
编程软件采用的是keil uvision2软件,程序采用C语言编程。
软件部分经本人调试可以运行,能够正确显示结果。具体模块由一个C(kellen.C)主函数文件和一个h文件构成。
H文件如下所示:
reg51.h;(8051的相关参数初始化) 5.3 软件设计算法模拟
本系统主要实现由51单片机对交通灯模组进行控制,交通灯模组模拟实际的十字路口情况,分析其规律如下:
图1 模拟交通灯控制板布局示意图
图中:
—— 表示2位7段的LED数码管(用作倒计时显示); —— 表示双色LED(用作红黄绿灯);
—— 表示小按键(用来模拟车流)。
这是一个典型的十字路口,分别用1、2、3、4表明四个流向的主车道,用L、S、R、P分别表示各主车道的左行车道、直行车道、右行车道以及人行横道。通过分析得知,除了四个右行车道外,在同一时间,最多只能有两个车道通行,如1L、1S通行时,其它车道都会被阻断。所以在设计红绿灯时,可以两两组合,共有四组(如lL-1S、2L-2S、3L-3S、4L-4S);而各车道的红灯时间和人行横道通停时间都由这四个组合的绿灯时间决定。通行顺序如下图所示。
图2-2 交通通行顺序
5.2主程序框图
开始 系统初始化 1L、1S、3R、4R、2P通信 各路口倒计时开始 2L、2S、4R、1R、3P通信 各路口倒计时开始 3L、3S、1R、2R、4P通信 各路口倒计时开始 4L、4S、2R、3R、1P通信 各路口倒计时开始 结束
图5-1 主程序流程图
5.3主函数解析 void main(void) {
Busy_LED=0; Special_LED=0; timer0_init(); int0_init(); ext_init();
while(1) {
/*******S0状态**********/ SN_ManRed=0;
SN_ManGreen=1; //SN人行道通行 EW_ManRed=1; //EW人行道禁止 EW_ManGreen=0;