视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于单片机的交通灯控制系统设计
2025-09-24 07:09:07 责编:小OO
文档
基于单片机的交通灯控制系统设计

1 设计任务与要求

本次课程设计的时间是2009年6月,需要完成的任务是用单片机实现交通灯的基本功能,该系统除了可以实现基本交通灯功能外,也能实现倒计时﹑紧急特殊模式等功能。

详细功能为:在白天正常东西方向和南北方向通车,通车时间均为45秒。正常通车情况下,可以对通车的时间进行倒计时计数,并通过显示器显示出来。如果遇到特殊情况,在处理特殊事件时,可使整个十字路口禁止通车。强制东西通行,适用某些需要只进行东西通车的情况。强制南北通行,适用某些需要只进行南北通车的情况。在夜间车流量较少的情况下,正常东西方向和南北方向通车,通车时间均为10秒,相对与白天通行模式,车辆等待时间减少,提高了通行效率。

2 系统设计

 此次设计通过ATMEL公司的单片机ATC51对整个交通灯电路进行控制。根据上面的功能要求,本次设计需要完成正常模式﹑计时功能﹑紧急特殊模式﹑夜间模式等四个功能。

在正常模式下,交通灯每45秒改变一次通行方向,使得南北和东西交替通行。而LED显示系统则显示到下一次改变所剩的时间,利于司机调整车辆状况。每到同行方向转换时,绿灯闪烁,变为黄灯。提醒司机注意通行方向的改变,避免不必要的危险。

本交通灯的设计运用了单片机的外部中断,系统的紧急和夜间模式的切换采用中断系统完成。这样在任何通行情况下都可进入以上两种模式。在设计中,设置外部中断0为夜间模式触发按钮,由电平触发完成,设置为低优先级,设置外部中断1为紧急模式触发按钮,由电平触发完成,设置为高优先级。此时无论紧急状况(如车祸等)发生在何时都可以直接进入紧急模式以便于交通管理人员处理问题。同时,通过在紧急模式下软件检测p3.7和p3.6是否不为1来触发东西及南北强制通行模式,以弥补外部中断的不足,实现更多的功能。

此次设计运用了软件延时程序,这样不仅调整延时长短十分灵活,而且不占用内部定时/计数器的资源。设计中通过对指令运行的次数进行循环来实现软件延时。当晶振频率为12MHz时有以下时间周期:

震荡周期:1/12微秒;

状态周期:1/6微秒;

机器周期:1微秒;

指令周期:1~4微秒;(根据指令的不同而不同)

软件延时的优点是较为灵活,调整更为容易,且不受延时时间。但软件延时长时间占用系统资源,使得CPU工作效率不高,在中断频繁的系统中其定时精度也受到中断的影响。但本系统要求延时时间较长,且没有频繁申请的中断系统,所以选择软件延时配合外部申请中断模式切换较为合理。

2.1硬件系统设计

    根据上面的功能要求,硬件系统主要模块有单片机模块﹑显示模块﹑按键模块,其硬件总电路图如附录二所示。

2.1.1  单片机模块

  ATC52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,ATC52可以按照常规方法进行编程,也可以在线编程。

本设计中ATC52使用12MHz晶振。

XTAL1(19脚)和XTAL2(18脚):外接晶体引脚,XTAL1和XTAL2分别接外部晶振一端;RST:即为RESET,该引脚为单片机的上电复位或掉电保护端。在此设计中接正常模式按扭;P3.7:使用第二功能,接强制南北通行按扭;P3.6:使用第二功能,接强制东西通行按扭;P3.3:使用第二功能INT1,接紧急工作模式按扭;P3.2:使用第二功能INT0,接夜间工作模式按扭;P1.0~P1.7:输出BCD码,用来控制LED显示器的显示控制;P2.7、P2.6、P2.5:输出高低电平,用来控制南北交通信号灯;P2.1、P2.2、P2.3:输出高低电平,用来控制东西交通信号灯;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS。

单片机与其他模块的连接如下图1所示:

图1  单片机与其它模块的连接

2.1.2  显示模块

传统的共阳极或共阴极的数码管其显示输入需要为段码,这样就使得电路相对复杂和繁琐。对于相同的功能在成本相差不大的情况下,此处运用了带BCD译码电路的LED显示器。这样既可使线路简化,又可使可靠性提高

本设计中使用的自带BCD译码电路的LED显示器,其主要特点是采用四线BCD码输入,可显示0-F十六进制数。使用时直接输入BCD码 即可显示相应的数字,使得电路大大简化。设计时,把P1.0~P1.7当 做BCD码输出端口,连接到LED显示器上,这样可把BCD码直接转换成可显示的数字,显示模块的连接如图2所示:

                         图2  显示模块

   图中的总线接至单片机的P1.0~P1.7端口。

2.1.3 按键模块

   在此系统中,按键模块是实现各项功能的关键,按键通过电阻与单片机相连接,可以对单片机进行控制,低电平信号对相应的单片机引脚有效,可使按键的另一端接地。本设计中有强制东西通行按键﹑强制南北通行按键﹑夜间模式按键﹑正常模式按键﹑紧急模式按键五个按键,分别对应着相应的子模式。如图3所示:

图3  按键模块

  各按键与单片机相对应的接口见上面的单片机模块。

2.2  系统软件设计

    根据前面的要求以及硬件的设置情况,本系统的软件部分需要进行中断设置。为了实现上述要求,软件部分应包括正常模式﹑夜间模式﹑紧急模式﹑强制通行等子程序。主程序流程图如图4所示:

图4  主程序流程图

开机上电处于正常模式下,交通灯每45秒改变一次通行方向,使得南北和东西交替通行。而显示系统则显示到下一次改变所剩的时间,利于司机调整车辆状况。每到同行方向转换时,绿灯闪烁,变为黄灯。提醒司机注意通行方向的改变,避免不必要的危险。

在设计运用了单片机的外部中断,系统的紧急和夜间模式的切换采用中断系统完成。这样在任何通行情况下都可进入以上两种模式。在设计中,设置外部中断0为夜间模式触发按钮,由电平触发完成,设置为低优先级,设置外部中断1为紧急模式触发按钮,由电平触发完成,设置为高优先级。此时无论紧急状况(如车祸等)发生在何时都可以直接进入紧急模式以便于交通管理人员处理问题。同时,通过在紧急模式下软件检测p3.7和p3.6是否不为1来触发东西及南北强制通行模式,以弥补外部中断的不足,实现更多的功能。

总程序见附录一。

2.2.1正常工作模式子程序

     正常模式下,交通灯每45秒改变一次通行方向,使得南北和东西交替通行,其流程图如图5所示。

其主要程序为:

MOV        R6,#03H            ;绿灯闪烁次数

        MOV        R0,#00H            ;    

        MOV        P2,R0                ;灯全灭

        SETB    P2.7                ;南北绿灯亮

        SETB    P2.1                ;东西红灯亮

        ACALL    DISPLAY            ;显示倒计时

        ACALL    FLASHN                ;南北方向绿灯闪烁

        CLR        P2.7                ;南北绿灯灭

        SETB    p2.6                ;南北黄灯亮

        ACALL    DELAY2                ;短延时2

        CLR        P2.6                ;南北黄灯灭

        CLR        P2.1                ;东西红灯灭

        SETB    P2.3                ;东西绿灯亮

        SETB    P2.5                ;南北红灯亮

        ACALL    DISPLAY            ;显示倒计时

        ACALL    FLASHS                ;东西方向绿灯闪烁

        CLR        P2.3                ;东西绿灯灭

        SETB    P2.2                ;东西黄灯亮

        ACALL    DELAY2                ;短延时2

        CLR        P2.2                    ;东西黄灯灭

图5  正常工作模式流程图

2.2.2  延时子程序

设计中通过对指令运行的次数进行循环来实现软件延时。当晶振频率为12MHz时每个机器周期是1微秒,一条NOP指令是一个机器周期,一条DJNZ指令是两个机器周期,所以可写出如下的1秒延时子程序:

DELAY:    MOV     R2,#33        

DEL3:    MOV     R3,#100

DEL2:    MOV     R4,#75

DEL1:    NOP

              NOP

      DJNZ     R4,DEL1

      DJNZ     R3,DEL2

      DJNZ     R2,DEL3

其流程图如6所示:

图6 1秒延时子程序流程图

2.2.3 夜间模式子程序

    系统在主程序中已经完成中断初始化,在正常模式下,其随时可通过中断0进入夜间模式,不受当时通行方向的影响。夜间模式中,交通灯每45秒改变一次通行方向,使得南北和东西交替通行。其流程图如图7。其程序为:

   YEJIAN: MOV     R0,#00H          ;夜间模式

        MOV     P2,R0            ;灯全灭

        SETB    P2.7             ; 南北绿灯亮

        SETB    P2.1             ;东西红灯亮

        ACALL   DISPLAY1         ;显示倒计时

        ACALL   FLASHN           ;南北方向绿灯闪烁

        CLR     P2.7             ;南北绿灯灭

        SETB    P2.6             ;南北黄灯亮

        ACALL   DELAY2           ;短延时2

        CLR     P2.6             ;南北黄灯灭

        CLR     P2.1             ;东西红灯灭

        SETB    P2.3             ;东西绿灯亮

        SETB    P2.5             ;南北红灯亮

        ACALL   DISPLAY1         ;显示倒计时

        ACALL   FLASHS            ;东西方向绿灯闪烁

        CLR     P2.3              ;东西绿灯灭

        SETB    P2.2              ;东西黄灯亮

        ACALL   DELAY2            ;短延时2

        CLR     P2.2              ;东西黄灯灭

         LJMP      YEJIAN 

图7  夜间工作模式

2.2.4绿灯闪烁子程序

  每到同行方向转换时,绿灯闪烁,提醒司机注意通行方向的改变,避免不必要的危险。绿灯闪烁的程序分南北方向和东西方向,以南北方向为例,流程图如图8所示,其程序为:

      SETB    P2.7                    ;南北方向绿灯闪烁子程序

        ACALL    DELAY1                    ;短延时1

        CLR        P2.7                    ;灭南北方向绿灯

        ACALL    DELAY1                    ;短延时1

        DJNZ    R6,FLASHN                ;循环3次

        MOV        R6,#3                    ;重装循环次数

        RET

图8  绿灯闪烁子程序流程图

2.2.5显示倒计时子程序

   通过LED显示器显示距离换向时间还剩多少,利于司机调整车辆状况,其程序为:

  DISPLAY:MOV    R0,#44            ;显示子程序

        MOV        R7,#45                    ;循环次数

L1:    MOV        DPTR,#TABLE            ;表地址送DPTR

        MOV        A,R0                    ;秒数送A

        MOVC    A,@A+DPTR                ;查表

        MOV        P1,A                    ;查表得BCD送P1

        DEC        R0                        ;秒数减一

        ACALL    DELAY                    ;延时一秒

        DJNZ    R7,L1                    ;循环

        RET                                ;返回

此程序是通过循环查表来实现倒计时显示的,其流程图如图9所示:

图9  显示子程序流程图

3系统测试与实现

根据上面的设计,此次课程设计使用WAVE 2000和Proteus软件仿真,其中使用WAVE2000软件汇编源程序,使用Proteus软件对硬件电路进行模拟。

3.1汇编源程序

  在伟福2000中,输入源程序后,对源程序进行编译,经调试源程序可以运行。汇编结果如图10所示:

图10  汇编结果

3.2Proteus仿真

    在此次设计中,用Proteus对硬件部分进行模式。在Proteus中输入原理图后,在单片机中载入上面汇编的hex文件,运行仿真,结果如下:

按下正常模式按键后,系统开始工作,南北方向和东西方向交替通行45秒。仿真结果如图11所示:

图11 正常工作模式模拟结果

   按下夜间模式按键后,系统进入夜间工作模式,南北先通行10秒,然后东西通行10秒,如此交替运行,模拟结果如图12所示:

图12  夜间工作模式模拟结果

无论系统处于那种工作模式,按下紧急模式键后,系统便进入紧急工作状态,在紧急状态下,各方向禁止通行,模拟结果如图13所示:

图13  紧急工作模式模拟结果

在紧急工作模式下,可以实现强制东西通行或强制南北通行,例如按下强制东西通行后,只可以东西通行,显示器显示在45秒,如图14所示:

图14  强制东西通行模式模拟结果

4 课程设计总结

随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在,因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。单片机作为我们的主要专业课之一,虽然在开始学习时我对这门课并没有什么兴趣,觉得那些程序指令枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。。

通过这次的单片机课程设计,我更进一步了解到单片机的优点和强大功能,在查找资料的过程中,认识到单片机应用的广泛性。

在设计中,我并没有局限于普通十字路口交通灯方案,而是根据实际情况加入了夜间模式等其他功能。在实现这些功能的同时,对单片机系统有了一个更深刻的认识。同时通过此次课程设计,熟练掌握了汇编语言的编程方法,进一步熟悉了外部中断的使用方法,学习了中断优先级的设置方法。通过使用仿真软件Proteus,深化了对软硬件联合调试的意义的理解,在仿真的过程中肖老师指点了许多存在的问题,使我大大提高了联调的效率。

但由于我的知识水平有限,设计的单片机交通灯系统还是存在一些的缺点和不足。如没能实现左右转向信号灯的设计,不能根据车流量的大小来控制各方向的通车时间,希望在以后的学习过程中,能够尽快的解决这些问题。

最后,我觉得作为一名电子信息工程专业的学生,单片机的课程设计是很有意义的,在这个过程中可以学会如何把自己平时所学的东西应用到实际中。虽然我对这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得有点难,也没有很有效的办法通过自身去理解,但是靠着这两个多星期的“学习”,在小组同学的帮助和讲解下,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。我觉得课程设计反映的是一个从理论到实际应用的过程,这个过程对缺乏实际经验的我们是非常重要的。通过这次单片机课程设计使我认识到自身知识及能力的薄弱,更让我知道实践的重要性。在以后的学习过程中,我会更加努力学习MCU的相关知识和应用,真正能够运用单片机组成的微控制系统解决各种实际的问题。

参考文献

[1] 何立民主编.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社,1995

[2] 薛钧义,张彦斌.MCS-51系列单片微型计算机及其应用.西安:西安交通大学出版社,1997

[3] 杰.单片微机原理及应用.北京:机械工业出版社,1994

[4] 张毅坤,陈善久,裘雪红.单片微型计算机原理及应用.西安:西安电子科技大学出版社,1998

[5] 李广弟.单片机基础.北京:北京航空航天大学出版社,1992

附录一 交通灯控制系统源程序

ORG     0000H

        SJMP    MAIN

        ORG        0003H                ;外部中断0入口(夜间模式)

        LJMP    YEJIAN

        ORG        0013H                ;外部中断1入口(紧急模式)

        LJMP    JINJI

       ORG    0100H

MAIN:                                ;主程序实现正常工作状态

SETB    EA                  ;开总中断

        SETB    EX0                    ;开外部中断0

        CLR        PX0                    ;中断0低优先级

        CLR        IT0                    ;电平触发

        SETB    EX1                    ;开外部中断1

        SETB    PX1                    ;中断1高优先级

        CLR        IT1                    ;电平触发

        MOV        R0,#00H            ;    

        MOV        P2,R0                ;灯全灭

        SETB    P2.7                ;南北绿灯亮

        SETB    P2.1                ;东西红灯亮

        ACALL    DISPLAY            ;显示倒计时

        CLR        P2.7                ;南北绿灯灭

        CLR        P2.1                ;东西红灯灭

        SETB    P2.3                ;东西绿灯亮

        SETB    P2.5                ;南北红灯亮

        ACALL    DISPLAY            ;显示倒计时

        LJMP    MAIN                    ;循环执行正常模式

    

显示程序    

DISPLAY:MOV    R0,#441                ;显示子程序

        MOV        R7,#45                    ;循环次数

L1:        MOV        DPTR,#TABLE            ;表地址送DPTR

        MOV        A,R0                    ;秒数送A

        MOVC    A,@A+DPTR                ;查表

        MOV        P1,A                    ;查表得BCD送P1

        DEC        R0                        ;秒数减一

        ACALL    DELAY                    ;延时一秒

        DJNZ    R7,L1                    ;循环

        RET                                ;返主

夜间状态

YEJIAN: MOV     R0,#00H          ;夜间模式

        MOV     P2,R0            ;灯全灭

Y:   SETB    P2.6                    ;南北方向黄灯亮

        SETB    P2.2                    ;东西方向黄灯亮        

         ACALL    DELAY1                    ;短延时1        

CLR        P2.6                    ;南北方向黄灯灭

         CLR        P2.2                    ;东西方向黄灯灭

         ACALL    DELAY1                    ;短延时1          

         SJMP    Y                    ;循环 

紧急状态          

JINJI:    MOV        R2,#00H                        ;紧急状态通行子程序

        MOV        P1,#45H                     ;显示45秒

     SETB    P2.5                            ;南北红灯亮

        SETB    P2.1                            ;东西红灯亮

    J:    SJMP    J                            ;紧急状态循环

延时1S

DELAY1:MOV     R2,#10                    ;短延时1子程序

DEL1:    MOV     R3,#100

DEL2:    MOV     R4,#75

DEL3:    NOP

          NOP

          DJNZ     R4,DEL6

          DJNZ     R3,DEL7

          DJNZ     R2,DEL8

          RET

TABLE:        DB                                     ;0-44双位BCD码译码表        00000000B,00000001B,00000010B,00000011B,00000100B,00000101B,00000110B,00000111B,00001000B,00001001B

    DB 00010000B,00010001B,00010010B,00010011B,00010100B,00010101B,00010110B,00010111B,00011000B,00011001B

    DB 00100000B,00100001B,00100010B,00100011B,00100100B,00100101B,00100110B,00100111B,00101000B,00101001B

    DB 00110000B, 00110001B,00110010B,00110011B,00110100B,00110101B,00110110B,00110111B,00111000B,00111001B

    DB  01000000B , 01000001B, 01000010B, 01000011B,01000100B

                            END

附录二 系统总电路图下载本文

显示全文
专题