单片机实现交通灯控制系统的双模式

发布者:心灵的旅程最新更新时间:2011-09-06 关键字:单片机  交通灯控制 手机看文章 扫描二维码
随时随地手机看文章

针对实现交通灯系统的双模式控制的目的。采用以C 编写程序,设计电路的软件部分和以89C52 单片机为核心,连同红外接收模块、交通灯显示模块和其它元器件,设计电路的硬件部分的软硬件相结合的方法。即软件部分:在KEIL 环境中编写并验证C 程序。硬件部分:通过单片机控制交通灯和数码管的显示,同时可利用按键或红外遥控切换交通灯系统运行模式,即普通模式和上下班高峰模式。此系统可保证在平时,车辆与行人有较长时间穿过马路。通过切换运行模式,此系统又可有效防止上下班时交通堵塞和车辆、人员滞留。比起普通交通灯控制系统,此系统提高了交通控制的效率,保证交通有序进行。

   引言

  现实生活中很多交通灯都是按照一个时间间隔切换。而本设计中交通灯可根据平时或上下班高峰期来转换红绿灯切换时间,如上下班高峰期红灯转换时间设置为40 秒,平时设置为60 秒。这样可有效缓解在上下班时间,由于红灯设置时间太长,为了赶时间而闯红灯现象。同时,有效缓解交通堵塞现象。

  1 交通管理方案的论证

  1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定:绿灯亮允许通行;红灯亮,禁止通行;黄灯亮,提示人们注意红,绿灯的状态即将切换。为了方便说明,现假设东西,南北走向的两干道相交于一处十字路口。同时,为了保证行人安全,设置A,B,C,D 四条人行道。如图1 所示。

  

图1. 路口指示灯示意图

 

  图1. 路口指示灯示意图

  路口指示灯工作情况说明:当东西道为红灯,此道车辆禁止通行,此时B,D 人行道上行人可通过马路;同时南北道为绿灯,此道车辆通过,此时A,C 人行道上行人禁止通行,时间为60 秒。黄灯闪烁5 秒,警示车辆和行人红,绿灯的状态即将切换。当东西道为绿灯,此道车辆通行,此时B,D 人行道上行人禁止通过马路;同时南北道为红灯,此道车辆禁止通过,此时A,C 人行道上行人可通行,时间为60 秒。依此循环,即可指引车辆有序行驶,行人安全通过马路。

  2 系统硬件电路的设计

  2.1 系统电路总体概要

  本设计主要由89C52 单片机、交通灯显示模块、红外接收模块、数码管、按键等组成。

  89C52 单片机为系统主控制器,控制其他模块协调工作;按键和红外接收模块用来切换系统工作模式:正常模式或上下班高峰模式。即正常模式下,红灯设置的时间为60 秒;上下班高峰模式下,红灯设置的时间为40 秒。交通灯显示模块用以指引各路道车辆的通行,数码管为了显示交通红绿灯所剩的切换时间,行人依此判断是否有足够时间过马路,是走还是停。其主要框图如图2 所示。

  

图 2. 系统设计总框图

 

  图 2. 系统设计总框图[page]

2.2 硬件电路的设计

  2.2.1 控制器的选择

  作为交通智能控制的中心,控制器的选择十分重要。我们常见的有:(1)现场可编程门阵列FPGA;(2)可编程逻辑控制器PLC;(3)51 系列单片机等。这是一种较为实用的系统,所以要从价格和使用方面等因素综合考虑。以上3 种控制器都可以很好的完成交通灯的智能控制,而FPGA 和PLC 操作和完成简单,但成本价格较高,性价比低。对于本设计,51 系列单片机完全可以实现其控制,且性能良好,价格低廉。因此选用大家所熟知的89C52单片机作为控制器。

  2.2.2 红外发射接收原理

  

图3 红外发射与接收原理图

 

  图3 红外发射与接收原理图

  通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制如图3所示。红外接收头的工作原理:内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC 内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出来的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

  2.2.3 硬件电路总图

  本设计选用 89C52单片机作为控制器,控制系统的正常运行。本系统有两种运行模式,普通模式和上下班高峰模式。可通过按键或红外遥控对系统运行模式进行切换。按键切换适于值班人员使用,而红外遥控切换适于交警巡查时使用,方便快捷。现简要介绍该系统工作原理:89C52 单片机通过锁存器控制数码管显示红绿灯时间,东西、南北四组数码管时间显示相同。P1^2~P1^7 控制交通灯的显示。P1^2~P1^4 控制东西道两组交通灯的显示,这两组红绿灯通过单片机控制显示相同颜色的指示灯并且切换时间相同;而P1^5~P1^7 控制南北道两组交通灯的显示,这两组红绿灯同样通过单片机控制显示相同颜色的指示灯并且切换时间相同。P3^5 接按键S1,通过此按键可控制系统运行模式。P3^2 接红外接收模块,通过此接口可红外遥控切换系统运行模式。如图4 所示:

  

图4,硬件电路图

 

  图4,硬件电路图

  到此,硬件电路搭建完成。

  3 系统软件的设计

  近年来,单片机开发技术不断发展,从普遍使用汇编语言到逐渐使用高级语言,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机程序的软件。

  Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVison)将这些部分连在一起。

  因此该系统的软件部分在Keil 环境下进行程序的编程,下面主要介绍程序中的主要子程序和一些重要部分:

[page]

初始函数主要是对定时/计数器和一些参数初值的设定:

  #include

  #define uint unsigned int

  #define uchar unsigned char

  uint aa,num,MODEL1,numa,HMODE1;

  uchar shi,ge,gtime,rtime;

  … …

  sbit dula=P1^0; // 段选

  sbit wela=P1^1; // 位选

  sbit LED1=P1^2; // 东西(红灯)

  sbit LED2=P1^5; // 南北(红灯)

  sbit LED3=P1^6; // 南北(黄灯)

  sbit LED4=P1^3; // 东西(黄灯)

  sbit LED5=P1^7; // 南北(绿灯)

  sbit LED6=P1^4; // 东西(绿灯)

  sbit KEY1=P3^5;

  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  uchar table1[]={0xbf,0x7f};

  void delay(uchar z) // 延时函数

  { uchar x,y;

  for(x=z;x>0;x--)

  for(y=110;y>0;y--); }

  void init()

  { TMOD=0x01; // 选择方式一,16 位计数器

  TH0=15536/256;

  TL0=15536%256; // 定时器高、低位,置入初值

  EA=1; // 中断允许总控制位

  ET0=1; // 定时器0 中断允许控制位

  TR0=1; // 定时器0 运行控制位

  aa=0;

  gtime=60;

  rtime=40;

  num=1;

  numa=1;

  MODEL1=1;

  HMODE1=0;}

  定时的函数及原理:

  当单片机工作于定时状态时,定时/计数器对机器周期进行计数,每个机器周期包括12个振荡周期,以晶振频率为12MHZ 为例,则:

  1 个机器周期=12/晶振频率=12/12000000=0.001ms定时时间为:TC=XTP。其中,TP 为机器周期,TC 为定时时间。

  则应装入计数/定时器的初值为:

  

 

  (注:M=2n , TP 为机器周期,TC 为定时时间)

  对于方式1,一次最大的定时时间为:T=(216-0)×0.001=65.536ms ,为了便于计算,设定每次最大定时时间为50ms,计算应装入的初值:N = 65536 − 50000 = 15536

  显示子函数:

  通过单片机对锁存器进行位选,段选的控制,使数码管显示需要的数字。

  void display(shi,ge)

  { dula=1;

  P0=table[shi];

  dula=0;

  wela=1;

  P0=table1[0];

  wela=0;

  delay(5);

  P0=0xff; // 对数码管消影

  dula=1;

  P0=table[ge];

  dula=0;

  wela=1;

  P0=table1[1];

  wela=0;

  delay(5);

  P0=0xff;}

  模式一函数:

  void mod1()

  { if(num==1&>ime>5) // 东西道红灯亮,南北道绿灯亮,最后5 秒切换成黄灯

  { LED5=0;

  LED1=0; }

  if(num==2) // 东西道绿灯亮,南北道红灯亮

  { LED2=0;

  LED6=0;

  LED5=1;

  LED3=1;

  LED1=1; }

  if(num==1&>ime==5) // 东西道红灯亮,南北道黄灯亮5 秒

  { LED5=1;

  LED2=1;

  LED3=0; }

  shi=gtime/10;

  ge=gtime%10;

  if(aa==20) // 50ms×20=1s, 即过1s 数码管数字减1

  { aa=0;

  gtime--; }

  display(shi,ge);

  if(gtime==0&&num!=2)

  { gtime=60;

  num=2; }

  if(gtime==0&&num==2)

  { num=1;

  gtime=60;

  LED2=1;

  LED6=1; } }[page]

模式二函数:

  如同模式一,只是参数有变化。如将gtime=60 换成rtime=40;num=1 换成numa=1;仅此而已。

  主函数:

  void main()

  { init();

  while(1)

  /* 模式一,平常模式,红绿灯切换时间为60 秒*/

  { if(MODEL1==1||HMODE1==0) // 按键或红外控制切换模式

  { mod1(); }

  /* 通过按键切换工作模式*/

  if(KEY1==0)

  { delay(5); //按键消抖

  while(KEY1==0)

  { MODEL1++;

  rtime=40;

  if(MODEL1==3)

  { MODEL1=1;

  gtime=60; }

  while(!KEY1); } }

  … …

  /*模式二,上下班高峰期模式。红绿灯切换时间为40 秒*/

  if(MODEL1==2||HMODE1==1)

  { mod2(); }

  } }

  void timer0() interrupt 1

  { TH0=15536/256;

  TL0=15536%256;

  aa++; }

  4 系统的仿真

  结合软硬件,通过proteus 仿真,此系统可安全、可靠的运行。仿真图的部分截图如图5 所示。

  

图5 交通灯控制系统运行示意图

 

  图5 交通灯控制系统运行示意图

  5 结论

  该系统完全可以完成设计的要求。具有一定的实用价值,同时,该系统还有诸多开发前景,具备一定的扩展能力,如:根据图像识别,判断车辆数是否增加,以此来判断该运行哪种模式,有待进一步开发。

 

关键字:单片机  交通灯控制 引用地址:单片机实现交通灯控制系统的双模式

上一篇:基于单片机的人体阻抗测量系统
下一篇:C++ STL的概念及举例

推荐阅读最新更新时间:2024-03-16 12:40

单片机的ISP在线编程设计
  随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应地对系统板级调试的困难也在加大。在传统的调试方式中,频繁的调试和更换程序需要频繁地插拔芯片,开发效率极低。AT89S系列单片机提供的ISP在线编程技术彻底地改变了传统的开发模式,开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率,因此它是对市场定型产品进行现场升级和维护的经济、有效的方式,极大地促进了PLD产品的发展。 1 PC机并行口 1.1 并行口硬件接口简介   标准并行口有25个引脚,其中数据端口引脚为2~9,状态端口引脚为15、10~13,控制端口引脚1、14
[单片机]
<font color='red'>单片机</font>的ISP在线编程设计
关于STM32单片机GPIO口上拉与下拉输入
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。 图1 按键电路 于是去看一下GPIO的结构图: I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. 将按键电路与I/O
[单片机]
关于STM32<font color='red'>单片机</font>GPIO口上拉与下拉输入
51单片机超声波测距学习板的基本原理
  1.功能      超声波测距学习板可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0-27~4.00m,测量精度1cm,测量时与被测物体无直接接触。能够清晰稳定地显示测量结果。   2.基本原理      超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波本时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,
[单片机]
MCS-51单片机外部RAM的地址指针及其应用
MCS-51单片机外部RAM的地址空间为64K , 地址总线为16位,访问外接RAM可执行如下4条指令: MOVX A,@DPTR MOVX @DPTR,A MOVX A,@RI MOVX @RI,A 其中DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL;Ri(I=0,1)是8位寄存器,作为地址指针时仅存低8位地址。 MCS-51执行上述指令时分为两个阶段:首先,是从外接程序存储器中取出指令代码,并进行分析。然后,执行对外接RAM的数据读/写操作。在这两个阶段,P0口、P1口上的地址选通是有区别的。 执行“MOVX A,@DPTR”和“MOVX @DPTR,A”指令时,在读指令代码阶段,由程序计
[单片机]
基于PIC32单片机LED点阵显示控制系统设计
简介: LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。 导读:LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。 项目背景: LED点阵显示屏是集微电子技术、计算机技术、信息处理技术于一体的大型显示屏系统。它以其色彩鲜艳,动态范围广,亮度高,寿命长,工作稳定可靠等优点而成为众多显示媒体以及户外作业显示的理想选择。目前,已经被广泛应用到军事、车站
[单片机]
基于PIC32<font color='red'>单片机</font>LED点阵显示控制系统设计
基于单片机的电能质量检测分析平台设计
一、项目概述 1.1 引言 随着现代工业的蓬勃发展,基于大功率电力电子开关设备的普及及应用,使得电力网中的非线性设备及电力负荷大量增加,同时由于为了提高系统效益而不断地采用电子装置,这些现象所带来的各种电能质量问题已日益突出。特别是冲击性和非线性负荷容量的不断增长,使得电网发生波形畸变和三相不平衡等电能质量问题,严重影响电力系统和电力用户供用电设备的安全运行。 电能质量的优劣将直接影响整个系统的稳定性和可靠性,已经引起了各国电力工作者的高度重视。电能质量所带来的问题和其他环境问题一样成为公害,电能质量的检测分析和质量控制越来越引起电力供应企业和电力用户的关注。电能质量的问题取决于供电和用电方,要提高电网的电能质量水平,使
[单片机]
基于<font color='red'>单片机</font>的电能质量检测分析平台设计
爱特梅尔扩展32位AVR UC3微控制器解决方案系列
微控制器及触摸技术解决方案的领导厂商爱特梅尔公司 (Atmel® Corporation)宣布推出32位AVR® UC3产品组合的三个不同产品系列共13款新型器件。获奖的AVR UC3微控制器(MCU)具有高性能、可执行数字信号处理(DSP)指令、提供USB接口、安全加密和电容式触摸支持等特性。除了现有UC3 L和UC3 A系列中的新器件外,还提供了新的UC3 D系列微控制器。现在,爱特梅尔的AVR UC3产品组合包括: •AVR UC3L:获奖的超低功耗32位微控制器,新产品包括新的存储器选项和附加的USB功能。 •AVR UC3D:针对入门级32位应用的全新产品系列,包括支持电容式触摸的硬件。 •AVR UC3A4:高性能、高处
[单片机]
基于AVR单片机并采用分立元件构成的125 kHz RFID
0 引言 无线射频识别(Radio Frequency Identification,RFID)是利用感应、电磁场或电磁波为传输手段,完成非接触式双向通信、获取相关数据的一种自动识别技术。该技术完成识别工作时无须人工干预,易于实现自动化且不易损坏,可识别高速运动物体并可同时识别多个射频卡,操作快捷方便,已经得到了广泛的应用。 目前存在的一些读卡器,都需要读卡芯片作为基站,成本较高。本文介绍了一种采用分立元件构成的125 kHz RFID阅读器,电路结构简单,成本极低,用于读取EM4100型ID卡。 1 RFID系统的分类 RFID系统的分类方法有很多,在通常应用中都是根据频率来分,根据不同的工作频率,可将其分
[单片机]
基于AVR<font color='red'>单片机</font>并采用分立元件构成的125 kHz RFID
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved