找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12827|回复: 1
打印 上一主题 下一主题
收起左侧

基于51单片机交通信号灯控制系统

[复制链接]
跳转到指定楼层
楼主
ID:305925 发表于 2018-4-11 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘 要
     随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
  本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统等组成,较好的模拟了交通路面的控制。
关键词:交通灯,单片机 ,数码管 ,LED灯


目录


引言
   当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。
    1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消。
    电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。
    信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口。
1.设计背景1.1课题背景
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。本交通灯控制系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
1.2设计内容
    本设计主要是介绍了单片机控制下的交通灯控制系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:
    东西、南北两干道交于十字路口,各干道有一组红、绿、黄三个指示灯,指挥车辆和行人安全通行。东西方向为主干道,通行时间为40秒;南北方向为支干道,通行时间为30秒。通行时间最后3秒,绿灯灭,黄灯闪烁,黄灯闪烁完毕变更通行车道。通行时间由数字显示器显示,黄灯3秒闪烁不单另计时。
2交通灯控制系统系统简介2.1方案选择
    方案一:利用PLC实现对交通灯控制,其可靠性高,抗干扰能力强。对于交通灯这种特殊装置,其可靠性是至关重要的,因为交通灯控制系统中途若发生什么意外,其后果是不堪设想。而且PLC系统的设计、制造工作量小,维护方便,体积小、重量轻、能耗低,还可以进行智能化控制以更有效、合理地控制交通。但是使用PLC控制也有缺点,因为PLC比起其它控制系统,其价格较贵,一般一台小型的PLC价格最便宜的也在二三千元以上。  
    方案二:运用单片机对交通灯系统进行实现,使用51单片机为主控核心,通过软件来控制过往车辆的正常运作。同时它也具有如下的优点:
(1)单片机体积小巧、使用灵活、成本低,易于真正产品化。组装各种智能式控制设备和仪器,能做到机电仪一体化。
(2)面向控制。能有针对性地解决各种从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。
(3)抗干扰能力强,适应温度范围宽,在各种恶劣的环境下都能可靠的工作。这是其它微机集中无法比拟的。
(4)可以方便的实现多机、分布式的集散控制,使整个控制系统的效率大大地提高。
(5)单片机应用产品的研制周期短,所开发出来的样机就是以后批量生产的产品,可以避免不必要的二次开发过程。
综上所述,比较5种交通灯控制装置的优点与缺点,根据交通灯所工作的特殊环境,体积小巧、使用灵活、成本低,易于真正产品化面向控制抗干扰能力强,适应温度范围宽可以方便的实现多机、分布式的集散控制便等特点,现在拟采用单片机来控制交通灯。
本设计研究的是基于AT89C51单片机的交通灯智能控制系统。根据交通控制系统的设计原理,阐述了硬件和软件方面开发的整个过程。主控系统采用AT89C51单片机作为控制器,控制通行倒计时及右拐、右拐、直行,占用端口少,耗电也最小。系统电源采用独立的+5V稳压电源,有各种成熟电路可供选用,使此方案可靠稳定。该设计可直接在I/O口上接按键开关,精简并优化了电路。结合实际情况,显示界面采用LED提示和数码管计时的方法,满足了倒计时的时间显示输出和状态灯提示信息输出的要求,减少系统的复杂度。
2.2系统设计原理
开机上电便处于正常运行状态,东西方向通行40秒后变为南北方向通行30秒,如此70秒循环一次,使得东西方向和南北方向交替通行。
显示系统则显示到下一次改变通行方向所剩的时间,利于司机调整车辆状况。每到通行方向转换时,正在通行的方向绿灯熄灭,变为黄灯闪烁,提醒司机注意通行方向的改变,避免不必要的危险。
延时方法可以有两种,一种是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。本程序的倒计时采用软件延时。
3.系统硬件设计
    根据上面的功能要求,硬件系统主要有单片机模块、指示灯模块和倒计时显示模块。各模块选择如下
3.1主控制器选择
主控芯片采用AT89C51单片机,其管脚图下图所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
图3.1  AT89C51引脚图
AT89C51是AT89C5X系列单片机的典型产品,它采用ATMEL的高密非易失存储技术制造并和工业标准MCS—51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和快闪存储器,ATMEL公司生产的AT89C52是一强劲的微型计算机,它对许多嵌入式控制的应用,提供了一种高度灵活和成本低的解决办法。芯片AT89C52是ATMEL公司生产的带2K字节快闪存储器的8位单片机。它具有如下的一些特性:
(1)指令和89C51产品兼容
(2)内含2K字节可重复编程快闪存储器
(3)耐久性1,000写/擦除周期   
(4)2.7V~6V的工作电压范围
(5)全静态操作0Hz~24MHz      
(6)二级程序存储器加锁
(7)内含128*8位内部RAM     
(8)15根可编程I/0引线
(9)2个16位的计数器/定时器   
(10)6个中断源
(11)带有可编程串行通讯口      
(12)可直接驱动LED输出
(13)片内模拟电压比较器        
(14)低功耗空载和掉电方式
   另外,该单片机还具有体积小,价格低等特点。AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
图3.2  系统硬件结构图
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
AT89C51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。  
AT89C51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 AT89C51有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
AT89C51共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 AT89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
AT89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
3.2 时钟及复位电路
AT89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但AT89C51单片机需外置振荡电容。
本设计中,使单片机运行在最小系统。
时钟电路由两个20nF的微调电容和一个晶振组成。AT89C51内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。本系统采用12Hz的振荡器,机器周期为1us。复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式。本设计采用按键电平复位。按键电平复位是通过复位端经电阻与电源接通实现,如下图所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
图3.3 AT89C51最小系统
3.3 指示灯及倒计时模块
   (1)指示灯模块:
   设计电路中每个路口的控制信号灯应有三个,即红灯、黄灯、绿灯各一个。因此,本电路的设计中应用到红灯、黄灯、绿灯个四个。同一方向的两个路口的同一颜色指示灯是同时亮灭,为简化电路,可让这两个灯接同一引脚。这样可用P1口控制所有的指示灯。
按照设计,指示灯采用红/绿/黄三种发光二极管。该组件及其与单片机引脚的接法如下:
表3.1  引脚接口
  
  
东西方向
南北方向
指示灯
绿
绿
引脚
P2.2
P2.0
P2.1
P2.3
P2.4
P2.5
   (2)倒计时模块:
由于黄灯3秒闪烁时间不单另计时,四个路口的倒计时是同步的。两位的倒计时采用两个八位的七段数码显示管。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
图3.4 倒计时显示模块
3.4系统总体电路图
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
图3.5 系统总体电路图
4.系统软件设计简介
4.1 系统主程序流程
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg
图4.1 系统主程序流程图
开机上电便处于正常运行状态,东西方向通行40秒后变为南北方向通行30秒,如此70秒循环一次,使得东西方向和南北方向交替通行。
显示系统则显示到下一次改变通行方向所剩的时间,利于司机调整车辆状况。每到通行方向转换时,正在通行的方向绿灯熄灭,变为黄灯闪烁,提醒司机注意通行方向的改变,避免不必要的危险。
延时方法可以有两种,一种是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。本程序的倒计时采用软件延时。     
5.Proteus软件仿真5.1 Proteus软件介绍
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
图5.1 启动页面
    Proteus软件是英国Labcenter electronics公司出版的EDA工具软件,可完成从原理图布图、PCB设计、代码调试到单片机与外围电路的协同仿真,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。Proteus软件主要具有以下特点:
(1)具有强大的原理图绘制功能。
(2)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路的系统仿真、RS232动态仿真、I2
C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(3)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(4)提供软件调试功能。具有全速、单步、设置断点等调试功能,同时可以观察各变量以及寄存器等的当前状态,并支持第三方编译和调试环境,如wave6000、Keil等软件。file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg
图5.2 软件预览页面5.2  交通控制系统Proteus仿真
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg
图5.2 交通控制系统运行(南北通行)
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg
图5.3 交通控制系统运行(南北等待)
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
图5.4 交通控制系统运行(东西通行)
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
图5.5 交通控制系统运行(东西等待)
6.总结
    随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在,因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。单片机作为我们的主要专业课之一,虽然在开始学习时我对这门课并没有什么兴趣,觉得那些程序指令枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。
    在设计中,我对单片机系统有了一个更深刻的认识。通过此次课程设计,熟练掌握了汇编语言的编程方法,进一步熟悉了外部中断的使用方法。在参与硬件设计的同时,我学到了如何通过使用仿真软件Proteus,深化了对软硬件联合调试的意义的理解。
    作为一名自动化专业的学生,单片机的课程设计是很有意义的,在这个过程中可以学会如何把自己平时所学的东西应用到实际中。虽然我对这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得有点难,但是靠着这两个多星期的学习突击,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。我觉得课程设计反映的是一个从理论到实际应用的过程,这个过程对缺乏实际经验的我们是非常重要的。通过这次单片机课程设计使我认识到自身知识及能力的薄弱,更让我知道实践的重要性。在以后的学习过程中,我会更加努力学习单片机的相关知识和应用,真正能够运用单片机组成的微控制系统解决各种实际的问题。


参考文献
[1]李群芳.《单片机原理及接口技术》.北京:电子工业出版社,2008
附录:源程序代码
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar j,k,m,n,temp1,temp2,aa,bb;
sbit sh=P2^1;
sbit sl=P2^0;
sbit so=P2^2;
sbit zh=P2^5;
sbit zl=P2^4;
sbit zo=P2^3;

sbit shiz=P1^1;
sbit gez=P1^0;
sbit shis=P1^2;
sbit ges=P1^3;

uchar code table[]={
0xed,0x81,0xf4,0xb5,
0x99,0x3d,0x7d,0x85,
0xfd,0xbd};
void display(uchar j,k,m,n);
void delay(uint z);
void init();
void main()
{
init();
while(1)
{

       if(bb==20)
       {
         bb=0;
         aa++;
         }
       if(aa<=32)
         {
           P2=0;
           zo=1;
           sl=1;
           temp1=36-aa;
           j=temp1/10;
           k=temp1%10;
           temp2=33-aa;
           m=temp2/10;
           n=temp2%10;
           
             }

       if(aa>32&&aa<=35)
         {
           P2=0;
           zo=1;
           sh=1;
           temp1=36-aa;
           j=temp1/10;
           k=temp1%10;
           m=j;
           n=k;
             }
       if(aa>35&&aa<=67)
         {
           P2=0;
           zl=1;
           so=1;
           temp1=68-aa;
           j=temp1/10;
           k=temp1%10;
           temp2=71-aa;
           m=temp2/10;
           n=temp2%10;
           
             }
       if(aa>67&&aa<=70)
         {
           P2=0;
           zh=1;
           so=1;
           temp1=71-aa;
           j=temp1/10;
           k=temp1%10;
           m=j;
           n=k;
              }

       if(aa>70)
         aa=0;
      display(j,k,m,n);
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void display(uchar j,k,m,n)
{
        shiz=0;
        P0=table[j];
        delay(1);
        shiz=1;
        
        gez=0;
        P0=table[k];
        delay(1);
        gez=1;
         
        shis=0;
        P0=table[m];
        delay(1);
        shis=1;
     
        ges=0;
        P0=table[n];
        delay(1);
        ges=1;
}

void init()
{
temp1=0;
temp2=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
    shiz=1;
    gez=1;
    shis=1;
    ges=1;
    bb=0;
    aa=0;
    P2=0;
}

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
bb++;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:532257 发表于 2019-6-29 14:34 | 只看该作者
怎么下载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表