元器件交易网-中发网全新升级平台
关注我们:
首页 > 解决方案 > 正文

以单片机8051为核心的交通灯的设计方案

    一、  系统功能要求:

    1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。

    时间方向 控制要求

    白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯

    晚上 东西 黄灯 南北 红灯

    2.总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的2倍。在正常情况下,两干道的交通灯按图1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。

    二、 总体设计方案提示:

    1.假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态。

    2.东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态。

    3.南北绿灯通车,东西红灯。过一段时间转状态。

    4.南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。

    三。硬件设计

    电路原理图如下:

以单片机8051为核心的交通灯的设计方案0

 

    四、软件设计

    1、   流程图

以单片机8051为核心的交通灯的设计方案1

    2、程序设计

    ORG 0000H

    MOV P0,#00H                 ;确保P0为低电位

    lJMP MAIN0

    ORG 0030H

    MAIN0: MOV 30H,#08H

    MOV R6,#00H

    MOV R7,#00H

    MOV DPTR,#TABLE             ;取数码管的译码

    MOV TMOD,#01H               ;设计定时方式及时间

    MOV TL0,#0CDH

    MOV TH0,#0BH

    SETB TR0

    MOV IE,#00H

    MAIN: MOV P1,#0F3H                ;南北绿灯,东西红灯

    MOV R6,#1EH                 ;红灯30s倒计时

    MOV R7,#19H                 ;绿灯25s倒计时

    MAIN1:CALL DELAY                  ;1S延时子程序

    JB P0.1,REL1                ;判断是否有东西方向按钮按下

    CJNE R7,#00H,MAIN1          ;判断绿灯25s是否倒计完

    MOV P1,#0F5H                ;南北黄灯,东西红灯

    MAIN2:CALL DELAY

    MOV R7,#00H                 ;红灯继续倒计时,黄灯闪烁,保持0s

    CPL P1.1                    ;黄灯闪烁

    CJNE R6,#00H,MAIN2          ;判断红灯是否倒计时完

    MOV P1,#0DEH                ;南北红灯,东西绿灯

    MOV R7,#1EH

    MOV R6,#19H

    MAIN3:CALL DELAY

    JB P0.0,REL2

    CJNE R6,#00H,MAIN3

    MOV P1,#0EEH

    MAIN4:CALL DELAY

    MOV R6,#00H

    CPL P1.4

    CJNE R7,#00H,MAIN4

    JMP MAIN

    REL1:MOV P1,#0F5H                ;东西方向按钮按下,南北方向强制由绿灯变成黄灯警告

    MOV R6,#05H

 

    MOV R7,#00H

    JMP MAIN2

    REL2:MOV P1,#0EEH                ;南北方向按钮按下,东西方向强制由绿灯变成黄灯警告

    MOV R7,#05H

    MOV R6,#00H

    JMP MAIN4

    ;1s延时子程序

    DELAY:MOV A,R6                    ;进行南北方向倒计时时间的十进制调整

    MOV B,#0AH

    DIV AB

    MOVC A,@A+DPTR              ;找寻相应的数码管代码

    MOV P2,#01H

    MOV P3,A                    ;输出个位

    MOV R4,#4                   ;降低动态显示频率

    LOOP2:MOV R3,#125

    LOOP3:DJNZ R3,LOOP3

    DJNZ R4,LOOP2

    MOV A,B

    MOVC A,@A+DPTR

    MOV P2,#02H                 ;输出十位

    MOV P3,A

    MOV R4,#4

    LOOP4:MOV R3,#125

    LOOP5:DJNZ R3,LOOP5

    DJNZ R4,LOOP4

    MOV A,R7                    ;进行东西方向倒计时时间的十进制调整

    MOV B,#0AH

    DIV AB

    MOVC A,@A+DPTR

    MOV P2,#04H

    MOV P3,A

    MOV R4,#4

    LOOP6:MOV R3,#125

    LOOP7:DJNZ R3,LOOP7

    DJNZ R4,LOOP6

    MOV A,B

    MOVC A,@A+DPTR

    MOV P2,#08H

    MOV P3,A

    MOV R4,#4

    LOOP8:MOV R3,#125

    LOOP9:DJNZ R3,LOOP9

    DJNZ R4,LOOP8

    JBC TF0,LOOP                ;判断是否计满125ms

    AJMP DELAY

    LOOP:MOV TL0,#0CDH               ;计满125ms重新给定时器赋值

    MOV TH0,#0BH

    MOV A,30H

    DEC A

    MOV 30H,A

    JNZ DELAY                   ;判断是否计满8次125ms,即1s

    DEC R6                      ;计满1s,东西倒计时减1,南北倒计时减1

    DEC R7

    MOV 30H,#08H                ;重新1s次数,重新计时

    RET

    TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H  ;相应数值的数码管代码

    DB 92H,82H,0F8H,80H,90H

    END

扫描左侧的二维码

科技圈最新动态一手掌握
每日砸蛋,中奖率100%