锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

交通灯设计

时间:2023-11-21 15:07:01 yl1雨量传感器

交通灯设计

东西南北交通灯原理

原理图

在这里插入图片描述

单片机在这里使用P1.0-P151个io口控12盏灯,P1.0-P151分别对应abcdef

实现的功能是南北(即A通道绿灯亮B通道红灯亮)绿灯放行时间为60s,在60s倒计时即将结束时,绿灯会闪烁3s提醒绿灯即将结束,60s倒计时结束时,黄灯(中间两盏灯)亮2s,这两秒是等待时间(即不确定状态)s后,开始换成东西放行(就是B通道绿灯亮A通道红灯亮),然后B通道放绿灯300s,在30s倒计时即将结束时,绿灯会闪烁3s提醒绿灯即将结束,30s倒计时结束时,黄灯亮2s,这两秒是等待时间(即不确定状态),开始换成南北放行(即B通道红灯亮a通道绿灯亮),然后循环往复。

代码讲解

 org 0000H        LJMP  MAIN      ;转向主程序         org 0003H        LJMP INTT0    ;转向紧急车辆中断服务程序          org 0013H        LJMP INTT1      ;转向车道中断服务程序        org   0200H   MAIN:MOV   SP,#30H         SETB  PX0           ;外部中断0优先级                     MOV   TCON,#00H      ;外部中断0,1,电平触发           MOV   TMOD,#10H     ;定时器1是方式1           MOV   IE,#85H      ;开CPU开外中断0,1中断    LOOP:  MOV  P1,#0F3H      ;A绿灯放行,B道红灯禁止             MOV  R1,#90      ;置0.5秒循环次数(0.5×90=45S)     DIP1:  ACALL  DELAY       ;调用0.子程序延迟5秒         DJNZ   R1,DIP1      ;继续循环不到45秒  MOV    R1,#06      ;A绿灯闪烁循环次数   WAN1: CPL    P1.2      ;A绿灯闪烁             ACALL  DELAY          DJNZ   R1,WAN1      ;闪烁次数没有继续循环          MOV    P1,#0F5H    ;A黄灯警告,B红灯禁止          MOV    R1,#04H   ;置0.5秒循环次数(0.5×4=2S)     YL1:ACALL  DELAY       DJNZ   R1,YL1     ;2秒未到继续循环       MOV    P1,#0DEH   ;A红灯,B绿灯       MOV    R1,#32H    ;置0.5秒循环次数(0.5×50=25S)    DIP2:  ACALL  DELAY     DJNZ   R1,DIP2    ;继续循环不到25秒         MOV    R1,#06H WAN2:  CPL    P1.5      ;B绿灯闪烁               ACALL  DELAY      DJNZ   R1,WAN2             MOV     P1,#0EEH ;A红灯,B黄灯           MOV     R1,#04H YL2:      ACALL   DELAY      DJNZ     R1,YL2           AJMP    LOOP      ;循环执行主程序  INTT0:PUSH    P1       ;P1口数据压栈保护            PUSH   ACC      ;ACC寄存器压栈保护           PUSH   TH1       ;TH1压栈保护            PUSH     TL1      ;TL1压栈保护            MOV    P1,#0F6H  ;A、B道均为红灯         MOV    R2,#40    ;置0.5秒循环初值(20S)       DEY0:     ACALL  DELAY      DJNZ   R2,DEY0   ;继续循环不到15秒          POP     TL1      ;弹栈恢复现场             POP     TH1            POP    ACC      POP     P1      RETI              ;返回主程序         INTT1: CLR    EA      ;关中断             PUSH   P1      ;保护现场              PUSH   ACC        PUSH   TH1        PUSH   TL1        SETB   EA      ;开中断              JB    P3.0,BOP ;A无车转向B道            MOV    P1,#0F3H ;A道绿灯,B道红灯                   SJMP   DEL1      ;转向15秒延时            BOP:  JB    P3.1,EXIT  ;B道路无车退出中断            MOV    P1,#0DEH  ;A红灯,B绿灯              DEL1:  MOV    R5,#30    ;置0.5秒循环初值(15S)              NEXT:  ACALL  DELAY             DJNZ   R5,NEXT    ;继续循环不到15秒              EXIT:   CLR    EA        POP    TL1        ;弹栈恢复现场                   POP   TH1              POP   ACC         POP   P1         SETB  EA         RETI      DELAY:   MOV   R3,#0AH   ;0.5秒子程序(50ms×10=0.5s)             MOV   TH1,#3CH  ;置50ms初值X=3CB0H           MOV   TL1,#0B0H         SETB  TR1       ;启动T1           LP1: JBC   TF1,LP2    ;查询计数溢出         SJMP  LP1         LP2:MOV   TH1,#3CH    ;置50ms初值X=3CB0H           MOV   TL1,#0B0H         DJNZ  R3,LP1         RET         END  
;置50ms初值X=3CB0H       MOV   TL1,#0B0H     DJNZ  R3,LP1     RET     END 
 
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章