技术中心
 
 

基于单片机的交通灯设计

   日期:2012-09-18     来源:互联网    
核心提示:设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制

  一、 系统功能要求:

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

  时间方向 控制要求

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

  晚上 东西 黄灯 南北 红灯

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

  二、 总体设计方案提示:

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

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

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

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

  三.硬件设计

  电路原理图如下:

  

  四、软件设计

  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

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢