基于单片机的交通灯控制系统设计详解

概要

  针对我国城市路况复杂的特点,在交通灯控制系统硬件设计方面以最小系统模块、电源模块、时间显示模块以及车流量检测模块为主要模块,不仅可以完成交通灯的顺序点亮,还可以实现倒计时、车流量检测等相关功能;软件设计方面通过检测程序的设定,来检测是否达到规定的数值从而改变信号灯的通行时间,并通过显示程序的设定,在数码管上直观的显示出时间的变化。该系统设计具有实用性强、操作方便等特点。

关键词: 交通灯;单片机;车流量监测;数码管

一、绪论

1研究内容和研究方法

1.1研究内容

  基于整个交通控制系统的发展情况,本设计主要进行以下方面的研究:用智能、集成,且功能强大的单片机芯片为控制中心,设计出一套十字路口的交通控制系统,用来指挥该路口的实时通行状态。本设计主要做了如下几方面的工作:
  一是确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计除了有信号灯状态控制能实现基本的交通功能,还增加了倒计时显示提示,基于实际情况,又要求了对车流量检测调整信号灯通行时间,紧急状况处理等强大功能。
  二是进行智能传感器的硬件电路,显示电路等的设计对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。
  三是进行软件系统的设计,对于本系统,采用单片机C语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。

二、总体方案设计

2.1交通灯控制备选方案

  对于交通灯控制系统的设计多种多样,可以采用秒脉冲信号发生器、定时器、控制器、译码器和倒计时显示电路来构成交通灯控制系统。但这类交通灯控制系统只能完成交通灯的一些基本功能,而且使用元器件较多,电路复杂,调试中容易出现错误,因此不做选用。也可以选用西门子可编程控制器S7-200为核心器件,重点放在硬件接口设计,利用梯形图和语句表进行编程,实现对十字路口交通灯控制系统的自动化,但PLC的体系结构是封闭的,各PLC厂家的硬件体系互不兼容,编程语言及指令系统也各异,而且成本也相对过高。综上所述,下面将介绍基于单片机来实现交通灯的一系列控制。

2.2原理框图

根据设计的功能和要求,我们可以得到系统的原理框图,如图2.1所示。

图2.1 系统原理图
  系统主要包括最小系统模块、信号灯输出控制模块、时间显示模块、紧急车辆通行模块电路、车流量检测电路和等组成。其中,最小系统模块由单片机、时钟电路、复位电路组成。单片机为系统的中央控制中心,负责对系统的调度及计算各种数据,实现对系统的控制;时钟电路单片机的时钟端( XTAL1 及 XTAL2) 以及 12MHz 晶振 X1、电容 C1、C2 组成,采用片内振荡方式;复位电路采用简易的上电复位电路,把10μF的电容加在VCC与RST之间,在电容两端加一个按键开关,在加一个10kΩ的电阻放在RST和GND之间,这样就可以实现上电自动复位;电源电路采用桥式整流电路,将交流转换为直流,可为各部分的电路提供+5V的直流电;时间显示电路中道口通行剩余时间采用高亮红色7段LED发光数码管显示,为了提高亮度串联一个PNP型三极管,然后给段选并连一个驱动芯片74LS245;紧急车辆通行模块是当有紧急车辆通过时运用外部中断0口(p3.2),按下开关,各个方向的红灯就会同时亮起,并且在延时10秒后自动恢复以前的状态;车流量检测电路采用两个红外检测器,分别统计东西方向和南北方向的车流量,当车流量超过系统默认值,便会增加该方向上的通行时间;信号灯输出控制电路通过二极管来模拟信号灯的工作状态。

2.3电源电路

电源电路采用桥式整流电路,将交流转换为直流,可为各部分的电路提供+5V的直流电。220V的交流电,通过变压器转化为15V左右的电压,在经过整流桥后,得到一个0-8V的波动直流,在经过电解电容C6的滤波,就得到一个平稳的直流,在最后经过7805的稳压得到+5V的直流电。如图3-6所示。

图3-6 电源电路

三、软件详细设计

  

4.1主程序设计

将整个系统的流程分为四个状态:
状态1:东西方向红灯亮,南北方向绿灯亮,倒计时20秒。东西方向禁止通过,南北方向可以通过。
状态2:东西方向红灯亮,南北方向黄灯闪烁5秒。
状态3:东西方向绿灯亮,南北方向红灯亮,倒计时30秒。东西方向可以通过,南北方向禁止通行。
状态4:东西方向黄灯闪烁5秒,南北方向红灯亮。主程序流程图如图4-1所示。

图4-1 主程序流程图

4.2车流量检测程序设计

单片机的I/O口接收到低电平开始计数,设南北或东西车流量一分钟初值为10,实际测的一分钟的车流量为x,当x<10时,绿灯通行时间不变;当10<x<20时,绿灯通行时间增加10秒;当x>20时,绿灯通行时间增加20秒,由此实现对车流量的智能化控制。如图4-2所示。

图4-2 车流量监测流程图

五、 仿真

5.1Proteus软件介绍

Proteus软件是英国Labcenter电子公司开发的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还可以对单片机和外围设备进行仿真。它是模拟单片机和外围设备的最佳工具。虽然国内才刚刚接触这类软件,但却受到了SCM爱好者以及致力于SCM开发和应用的科技工作者的热爱。Proteus是世界上著名仿真软件,无论从原理图的布局、代码的调试还是到单片机与外围电路的仿真,可以一键切换到PCB设计上,从真正意义上实现了从模型到实体的总体设计,它可以将电路仿真、PCB设计以及虚拟模型仿真这些功能都装备在自己的设计平台。其处理器型号支持8051、HC11、AVR、arm、MSP430等。
功能特点:
  Proteus拥有其他的EDA软件相同的功能:
  (1)原理设计图
  (2)PCB自动或人工布线
  (3)SPICE电路仿真
革命性的特点:
  (1)互动的电路仿真
 用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
  (2)仿真处理器及其外围电路
 可以仿真51系列、PIC等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示以及输出,能看到运行后输入输出的效果。在配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

5.2Proteus系统仿真

根据设计需要和上述框图,就可得到交通灯控制系统各过程仿真图如下图所示
用P1端口作为输出端口,用P1.0到P1.5端口分别控制东西和南北两组灯的状态低电平点亮,具体端口功能如下:
P1.0控制南北红灯的亮灭
P1.1控制南北黄灯的亮灭
P1.2控制南北绿灯的亮灭
P1.3控制东西红灯的亮灭
P1.4控制东西黄灯的亮灭
P1.5控制东西绿灯的亮灭
具体的程序就以点亮东西红灯南北绿灯为例: MOV P1, #0EEH
其余部分根据硬件不同而修改#0EEH的值.

图5-1 系统仿真图

东西方向变黄灯,南北方向禁行

南北方向通车,东西方向禁行

南北方向禁行,东西方向通车

(硬件原理图):

(程序):

8附录二(程序):
#include<reg51.h>                  ;调用单片机头文件
#define uchar unsigned char          ;宏定义“uchar”代替“unsigned char”
#define uint unsigned int             ;宏定义“uint”用来定义无符号整型数
/// 数码管段选定义 0 1 2 3 4 5 6 7 8 9
uchar smg_du[]={0x40,0x75,0x0c,0x14,0x31,0x12,0x02,0x74,0x00,0x10,
//    A B C D E F 不显示
0x20,0x03,0x4a,0x05,0x0a,0x2a,0xff}   ;断码
uchar dis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
uchar smg_i=4;                     ;显示数码管的个位数
uchar flag_che;                     ;本看车流量

//数码管位选定义
sbit smg_we1=p1^6;                 ;数码管位选定义
sbit smg_we2=p1^7;
sbit smg_we3=p3^6;
sbit smg_we4=p3^7;

char dx__s=0;                       ;东西 南北 倒计时变量

sbit dx_ red = P1^3;                  ;东西红灯
sbit dx_ green = P1^5;                 ;东西绿灯
sbit dx_ yellow= P1^4;                ;东西黄灯
sbit nb_ red = P1^0;                  ;南北红灯
sbit nb_ green = P1^2;                 ;南北绿灯
sbit nb_ yellow= P1^1;                ;南北黄灯
sbit nb_ che = P3^3;                  ;南北车计流量
sbit dx_ che= P3^4;                   ;东西车计流量
uint nb_ che_ value;
uint dx_ che_ value;
uchar xdata nb[30];
uchar xdata dx[30];

uchar flag_ jtd. mode;                 ;交通灯的模式根据时间
bit flag_1s=0;
bit flag _500ms;

bit flag_ dx_ nb= 0;                   ;东西南北模式
uchar flag_5m_ value;
uchar i;
uchar flag_alarm;                     ;模式
uchar dx_time=30,nb_time= 20;         ;东西、南北的时间
uchar flag_jdgz ;                      ;交通管制
uchar miao ,miaol;
/******************数码位选函数*************/
void smg_we_switch(uchar i)
{
switch(i)
{
case 0: smg_wel =0; smg_we2= l;smg_we3= l; smg_we4= l; break;
case l: smg_wel = l; smg_we2= 0; smg_we3= l; smg_we4= l; break;
case 2: smg_wel= l; smg_we2= l; smg_we3=0; smg_we4= l; break;
case 3: smg_wel= l; smg_we2= l;smg_we3= l; smg_we4= 0; break;
}

}
void delay_1ms(uint q)

{
     uint i,j;
     for(i=0;i<q;i++)
               for(j=0:j<110:j++);
}
void display()
{
    uchar i;
    for(i=0;i<smg_i;i++)
   {
         P0 = 0xff;                   ;消隐
         smg_we_switch(i);            ;位选
         P0=dis_smg[i];                ;段选
         delay_1ms(3);
}
}
/****************定时器0、定时器1初始化*****
void time0_init()
{

      TMOD=0X11;                  ;定时器0、 定时器1工作方式1
      ET0= 1;                       ;开定时器0中断
TR0= 1;                       ;允许定时器0定时
ET1 = l;                       ;开定时器1中断
TR1= 1;                       ;允许定时器1定时
}
/*************交通灯处理函数**************/
void jiaotongdeng_dis()
{

     if(flag_ 1s== 1)
     {
flag_ls=0;
miao ++;
if(miao>= 60)
{
miao= 0; 
}
for(i=0;i<60;i++)
   dx_che_value +=dx[i];
for(i=0;i<60;i++)
   nb_che_value += nb[i];
dx_ _s--;
if(dx_ s<0)
{
    flag_dx_nb=~flag_dx_nb;
    if(flag_dx_nb== 1)
   {
     if(dx_che_value >= 30)
        dx_s=dx_time+ 20;                 ;东西时间
     else if(dx_che_value >= 20)
        dx_s=dx_time+ 10;                 ;东西时间
else

                   dx_s=dx_time ;                   ;东西时间
}
else
{
if(nb_che_value >= 30)
       dx_s=nb_time + 20;          ;南北时间
else if(nb_ che_value >= 20)
       dx_s=nb_time + 10;           ;南北吋向
else

dx_s=nb_time;                  ;南北时间




           

五、 文章目录

目 录
摘 要 1
Abstract 2
1 绪论 5
1.1 研究背景及意义 5
1.2 国内外研究现状 5
1.2.1 国内交通灯控制研究现状 5
1.2.2 国外交通灯控制研究现状 6
1.3 主要研究内容 7
2 总体设计方案 8
2.1 交通灯控制备选方案 8
2.2 原理框图 8
2.3 交通灯通行方案 9
3 硬件设计 11
3.1 单片机最小系统模块 11
3.1.1 51系列单片机简介 11
3.1.2 AT89C51芯片内部结构简介 12
3.1.3 AT89C51主要引脚功能 13
3.1.4 时钟电路 16
3.1.5 复位电路 17
3.2 电源电路 18
3.3 信号灯输出控制 18
3.4 数码管 19
3.5 时间显示模块 21
3.6 紧急车辆通行电路 22
3.7 车流量检测电路 22
4 软件设计 23
4.1 主程序设计 23
4.2 车流量检测程序设计 24
4.3 中断程序设计 25
4.4 显示程序设计 26
5 系统仿真实现 27
5.1 Proteus软件介绍 27
5.2 Proteus系统仿真 28
6 结 论 31
致 谢 32
参考文献 33
7 附录一(硬件原理图): 35
8 附录二(程序): 36

物联沃分享整理
物联沃-IOTWORD物联网 » 基于单片机的交通灯控制系统设计详解

发表评论