历史上的今天
返回首页

历史上的今天

今天是:2025年04月03日(星期四)

正在发生

2018年04月03日 | 基于89C52单片机的红外遥控双模式交通灯控制系统设计

2018-04-03 来源:eefocus

     引言

    近年来,随着经济的快速发展,城市中车辆不断增多。由此引起交通拥挤、堵塞,交通事故频发等一系列问题。交通灯是城市重要的交通指挥系统,与人们的日常生活有十分密切的关系,它不仅关系到城市交通的有序进行,也影响到人们的出行便捷和安全。设计一个稳定、灵活、便捷的交通灯控制系统具有必要性和现实性。然而现实生活中很多交通灯都是按照一个时间间隔切换。而本设计中交通灯可根据平时或上下班高峰期来转换红绿灯切换时间,如上下班高峰期红灯转换时间设置为40 秒,平时设置为60 秒。这样可有效缓解在上下班时间,由于红灯设置时间太长,为了赶时间而闯红灯现象。同时,有效缓解交通堵塞现象。

    1 交通管理方案的论证

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

   路口指示灯示意图
图1. 路口指示灯示意图

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

    2 系统硬件电路的设计

    2.1 系统电路总体概要

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

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

   676
图 2. 系统设计总框图


    2.2 硬件电路的设计

    2.2.1 控制器的选择

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

 


    2.2.2 红外发射接收原理

   红外发射与接收原理图
图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 环境下进行程序的编程,下面主要介绍程序中的主要子程序和一些重要部分:

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


    #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; } }

    模式二函数:

    如同模式一,只是参数有变化。如将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 结论

    本设计的红外遥控双模式交通灯控制系统,通过硬件电路的搭建和软件的调试,最后通过proteus 进行仿真。该系统完全可以完成设计的要求。具有一定的实用价值,同时,该系统还有诸多开发前景,具备一定的扩展能力,如:根据图像识别,判断车辆数是否增加,以此来判断该运行哪种模式,有待进一步开发。


推荐阅读

史海拾趣

Hasco Relays and Electronics International Corp公司的发展小趣事

作为L3Harris Technologies的一部分,Harris(原Harris Corporation)在太空和航空领域也取得了重大突破。公司参与了多个太空任务和航空项目,为这些项目提供了先进的航天器和航空电子系统。这些系统不仅支持了复杂的航天任务,还提升了航空器的性能和安全性。L3Harris在太空和航空领域的持续投入和创新,为其在电子行业中的发展注入了新的动力。

CLANDELL公司的发展小趣事

随着国内市场的饱和,CLANDELL公司开始寻求国际化发展。公司通过市场调研和合作伙伴的建立,逐步拓展海外市场。在国际化的过程中,CLANDELL公司不仅提升了自身的品牌影响力,也学习到了国际先进的管理经验和市场策略,为公司的长远发展奠定了坚实基础。

Block USA Inc.公司的发展小趣事

除了支付业务外,Block USA Inc.还积极投身于软件SAAS服务的研发与创新。公司推出了一系列针对餐厅、薪资发放和预约等领域的软件解决方案,帮助商家提升运营效率和管理水平。这些软件服务的推出,不仅进一步丰富了Block的产品线,也为其在电子行业中树立了创新者的形象。

Amphenol Thermometrics公司的发展小趣事

为了进一步扩大市场份额和影响力,CNC Tech公司积极实施全球化战略。公司通过参加国际展会、设立海外分支机构等方式,加强与全球客户的交流与合作。同时,CNC Tech还积极引进国际先进的技术和管理经验,不断提升自身的竞争力。在全球化战略的推动下,CNC Tech的产品和服务逐渐打入国际市场,赢得了全球客户的认可和信赖。

锋鸣电子(Fengming)公司的发展小趣事

在稳固光伏胶膜市场的同时,福斯特并未停止前进的步伐。公司积极拓展产品品类,进入电子新材料领域。2014年,公司开始开发PCB用感光干膜,进军电子信息产业。感光干膜作为PCB产业最核心的工艺材料之一,对电子信息产业的发展具有重要意义。福斯特凭借其技术实力和市场洞察力,迅速在该领域取得突破,成为行业内的佼佼者。至2020年,公司感光干膜销量大幅增长,为公司带来了新的增长点。

Electron Products Inc公司的发展小趣事

Electron Products Inc(简称EPI)成立于XXXX年,由一群对电子技术充满热情的工程师共同创立。初期,公司主要从事电子产品的设计和研发,致力于为小型企业和消费者提供高质量的电子产品。通过不断创新和优化产品,EPI逐渐在市场上树立了自己的品牌形象。

问答坊 | AI 解惑

之前看到NEC有送开发板的活动,大家使用的如何呢?

本帖最后由 paulhyde 于 2014-9-15 09:24 编辑 之前看到NEC有送开发板的活动,大家使用过程中有什么感触或心得呢? 希望可以贴图出来分享下。 因为我们学校已经有自己的开发板了,所以当时没有申请,但是很想了解下相关的信息。  …

查看全部问答>

PCB互连设计过程中最大程度降低RF效应的基本方法

电路板系统的互连包括:芯片到电路板、PCB板内互连以及PCB与外部器件之间的三类互连。在RF设计中,互连点处的电磁特性是工程设计面临的主要问题之一,本文介绍上述三类互连设计的各种技巧,内容涉及器件安装方法、布线的隔离以及减少引线电感的措施 ...…

查看全部问答>

场效管放大电路

场效管放大电路…

查看全部问答>

谁有at91sam9260 rtl8201驱动,顶贴给分

谁有at91sam9260 rtl8201驱动,顶贴给分…

查看全部问答>

WINCE6.0 支持SQLCE3.0?

如何让WINCE6.0支持SQLCE3.0? 谢谢! …

查看全部问答>

请教: 利用4个感应探头来判断运动方向 的C程序

4个感应探头采集动作信号后输入51单片机   输出2个方向信号 。 这个命题我做不来 请高手指点。…

查看全部问答>

便携式数据采集系统中ADC的选用指南

   真实世界的应用需要真实世界的物理连接,一般来说,这意味着模拟信号要在系统内的某处被数字化处理,以便于微处理器、ASIC或FPGA采集数据并做出决策。 基本选用标准 当选择一款模拟数字转换器(ADC)时,大多数设计师似乎只关注几个主 ...…

查看全部问答>

C51初学者 的程序 日记(每天更新)

  1. 51单片机 P2.5 I/O口上的LED灯一闪一闪:   #include <reg51.h>sbit led0=P2^5;   void delay () {   unsigned int a;   a=50000;   while (a--); } void main (main){  vo ...…

查看全部问答>

WEBENCH使用说明和设计工具手册

对学习WEBENCH工具的使用和操作很有用。 内容见附件…

查看全部问答>

Linux 内核发布 3.5 正式版

Linus宣布了 3.5 正式版内核,3.5 版本最核心的特性包括CoDel 队列管理算法,seccomp 过滤器沙箱机制,autosleep,uprobes用户空间侦测子系统,contiguous memory allocator, 新的kcmp()系统调用, Ext4 文件系统的metadata checksumming等等,详情请 ...…

查看全部问答>