您当前的位置:五五电子网电子知识单片机-工控设备源码-程序基于51单片机的交通灯控制程序 正文
基于51单片机的交通灯控制程序

基于51单片机的交通灯控制程序

点击数:7872 次   录入时间:03-04 11:42:34   整理:http://www.55dianzi.com   源码-程序

  采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮

  每个街口有左拐、直行及行人三种指示灯。直行灯每个灯有红、黄、绿三种颜色。自行车与汽车共用左拐和直行灯。

  首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒),然后东西向的绿灯亮,依次类推。

  每次绿灯亮的时候,对应的行人灯亮。

  60S/30S/5S/60S/30S/5S

  东西道

  绿和行人/左转/黄/红/红/红

  南北道

  红/红/红/绿和行人/左转/黄

  行人灯亮的时候有声音提示盲人能通过。

  突发交通事故的时候能够紧急全红灯。

  在有重要人物通过的时候能手动改为绿灯。

  ORG 0000H ;主程序的入口地址

  LJMP MAIN ;跳转到主程序的开始处

  ORG 0003H ;外部中断0的中断程序入口地址

  ORG 000BH ;定时器0的中断程序入口地址

  LJMP T0_INT ;跳转到中断服务程序处

  ORG 0013H ;外部中断1的中断程序入口地址

  MAIN : MOV SP,#50H

  MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断

  MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1

  MOV TH1,#00H ;T1计数器清零

  MOV TL1,#00H

  SETB TR1 ;启动T1计时器

  SETB EX1 ;允许INT1中断

  SETB IT1 ;选择边沿触发方式

  MOV DPTR ,#0003H

  MOV A, #80H ;给8255赋初值,8255工作于方式0

  MOVX @DPTR, A

  AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转

  MOV A,P1

  JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间

  MOV R0,#00H ;R0清零

  MOV R0,A ;存入东西方向绿灯初始时间

  MOV R3,A

  LCALL DISP1

  LCALL DELAY

  AJMP AGAIN

  RED: MOV A,P1

  ANL A,#7FH ;P1.7置0

  MOV R7,#00H ;R7清零

  MOV R7,A ;存入东西方向红灯初始时间

  MOV R3,A

  LCALL DISP1

  LCALL DELAY

  AJMP AGAIN

  ;----------------------------------

  N0: SETB TR0 ;启动T0计时器

  MOV 76H,R7 ;红灯时间存入76H

  N00: MOV A,76H ;东西方向禁止,南北方向通行

  MOV R3,A

  MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮

  MOV A,#0DDH

  MOVX @DPTR, A

  N01: JB P2.0,B0

  N02: SETB P3.0

  CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行

  ;------黄灯闪烁5秒程序------

  N1: SETB P3.0

  MOV R3,#05H

  MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮

  MOV A,#0D4H

  MOVX @DPTR,A

  N11: MOV R4,#00H

  N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

  N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭

  MOV A,#0DDH

  MOVX @DPTR,A

  N14: MOV R4,#00H

  CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

  CJNE R3,#00H,N1 ;闪烁时间达5秒则退出

  ;-----------------------------------

  N2: MOV R7,#00H

  MOV A,R0 ;东西通行,南北禁止

  MOV R3,A

  MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮

  MOV A,#0EBH

  MOVX @DPTR,A

  N21: JB P2.0,T03

  N22: CJNE R3,#00H,N21

  ;------黄灯闪烁5秒程序------

  N3: MOV R3,#05H

  MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮

  MOV A,#0E2H

  MOVX @DPTR,A

  N31: MOV R4,#00H

  CJNE R4,#7DH,$ ;黄灯持续亮0.5秒

  N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭

  MOV A,#0EBH

  MOVX @DPTR,A

  N33: MOV R4,#00H

  CJNE R4,#7DH,$ ;黄灯持续灭0.5秒

  CJNE R3,#00H,N3 ;闪烁时间达5秒则退出

  SJMP N00

  ;------闯红灯报警程序------

  B0: MOV R2,#03H ;报警持续时间3秒

  B01: MOV A,R3

  JZ N1 ;若倒计时完毕,不再报警

  CLR P3.0 ;报警

  CJNE R2,#00H,B01 ;判断3秒是否结束

  SJMP N02

  ;------1秒延时子程序-------

  N7: RETI

  T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值

  MOV TH0,#0F1H

  INC R4

  INC R5

  CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序

  MOV R5,#00H ;R5清零

  DEC R3 ;倒计时初值减一

  DEC R2 ;报警初值减一

  T01: ACALL DISP ;调用显示子程序

  RETI ;中断返回

  ;------显示子程序------

  DISP: JNB P2.4,T02

  DISP1: MOV B,#0AH

  MOV A,R3 ;R3中值二转十显示转换

  DIV AB

  MOV 79H,A

  MOV 7AH,B

  DIS: MOV A,79H ;显示十位

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV DPTR,#0002H

  MOVX @DPTR,A

  MOV DPTR,#0001H

  MOV A,#0F7H

  MOVX @DPTR,A

  LCALL DELAY

  DS2: MOV A,7AH ;显示个位

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV DPTR,#0002H

  MOVX @DPTR,A

  MOV DPTR,#0001H

  MOV A,#0FBH

  MOVX @DPTR,A

  RET

  ;------东西方向车流量检测程序------

  T03: MOV A,R3

  SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量

  JZ N3

  JB P2.0,T03

  INC R7

  CJNE R7,#64H,E1

  MOV R7,#00H ;中断到100次则清零

  E1: SJMP N22

  ;------东西方向车流量显示程序------

  T02: MOV B,#0AH

  MOV A,R7 ;R7中值二转十显示转换

  DIV AB

  MOV 79H,A

  MOV 7AH,B

  DIS3: MOV A,79H ;显示十位

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV DPTR,#0002H

  MOVX @DPTR,A

  MOV DPTR,#0001H

  MOV A,#0F7H

  MOVX @DPTR,A

  LCALL DELAY

  DS4: MOV A,7AH ;显示个位

  MOV DPTR,#TAB

  MOVC A,@A+DPTR

  MOV DPTR,#0002H

  MOVX @DPTR,A

  MOV DPTR,#0001H

  MOV A,#0FBH

  MOVX @DPTR,A

  LJMP N7

  ;------延时4MS子程序----------

  DELAY: MOV R1,#0AH

  LOOP: MOV R6,#64H

  NOP

  LOOP1: DJNZ R6,LOOP1

  DJNZ R1,LOOP

  RET

  ;------字符表------

  TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

  END




本文关键字:单片机  交通灯  源码-程序单片机-工控设备 - 源码-程序