交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

动作描述交通灯控制有很多程序的写法,这次介绍一种可能是最简单的编程方法交通灯程序

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

1.现有东西方向和南北方向交通灯,东西方向或者南北方向上的两组灯的亮灯逻辑一致交通灯程序;

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

2.东西方向和南北方向交通灯亮灯逻辑如图所示交通灯程序,东西方向红灯10秒,同时南北方向先绿灯亮5秒,再绿灯闪烁3秒,再黄灯亮2秒;反之亦然;

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

3.整个交通灯由一个总控开关控制。

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

交通灯程序:史上最简单易懂的PLC控制交通灯案例,还不快来收藏

硬件设备1.一台装有博途及其仿真软件

软件1.西门子plc编程软件:TIA 博途V16

2.博途仿真软件:PLCSIM V16

I/O分配

程序编写及思路同样,为便于后期修改,我们把交通灯程序做成一个功能块,块接口如图:

开始写程序,首先判断是否被激活:

定义一个定时器,自循环一个周期的时间,这里是20秒:

然后利用时间的当前值,来判断每个灯的状态:

然后,程序写完了。是的,你没看错,就只有这么长。

在主程序里调用赋值实际I/O点即可:

总结交通灯案例较简单,可以用很多种方法来实现。在此案例中用定时器来判断各个交通灯状态,简单易懂易操作,可以供大家参考。

(来源:技成培训网 。作者:张志强,未经授权不得转载,违者必究!)

80c51单片机交通灯程序

ORG 1000H

L:JNB P3.0,LP3

JNB P3.1,LP2 ;判断p3.1,p3.0口

;如果P3.0为1的话,正常运行交通灯

;如果P3.1为1的话,正常运行交通灯

;如果P3.1为0的话,依次点亮灯

;如果P3.0为0的话,停止交通灯,只有黄灯闪烁

;正常运行交通灯

LP1:

MOV P1,#61H

CLR P3.2

CLR P3.3

CLR P3.4

SETB P3.5 ;1,3 路口红灯亮,2,4 路口绿灯亮

LCALL DELAY1

MOV B,#04H ;设置循环次数为4次

M:MOV P1,#51H

CLR P3.5

SETB P3.4 ;1,3路口红灯亮,2,4路口黄灯亮

LCALL DELAY2

MOV P1,#41H

CLR P3.4 ;1,3路口红灯亮,2,4路口黄灯灭

LCALL DELAY2

DJNZ B,M

MOV P1,#0CH

SETB P3.2

SETB P3.3 ;1,3路口绿灯亮,2,4路口红灯亮

LCALL DELAY1

MOV B,#04H

N:MOV P1,#8AH

CLR P3.2 ;1,3路口黄灯亮,2,4路口红灯亮

LCALL DELAY2

MOV P1,#08H ;1,3路口黄灯灭,2,4路口红灯亮

LCALL DELAY2

DJNZ B,N

AJMP L

;黄灯闪

LP3: CLR P1.7

CLR P3.2

CLR P3.3

CLR P3.5

MOV P1,#92H

SETB P3.4 ;黄灯亮,其他的灯灭

LCALL DELAY2

MOV P1,#00H

CLR P3.4 ;所有的黄灯灭

LCALL DELAY2

AJMP L

;循环亮

LP2: CLR P3.2

CLR P3.3

CLR P3.4

CLR P3.5

MOV A,#01H ;赋初值

MOV R0,#08 ;循环变量,循环7次,控制7个灯

LOOP: MOV P1,A ;点亮第一个灯

LCALL DELAY2 ;延迟

RL A ;A的值加1,循环左移

DJNZ R0,LOOP ;RO的值减1不等于1则执行LOOP标号

SETB P3.2 ;P3.2灯亮

LCALL DELAY2 ;延迟

CLR P3.2 ;P3.2灯灭

SETB P3.3 ;下一个灯P3.3亮

LCALL DELAY2 ;延迟

CLR P3.3 ;P3.3灯灭

SETB P3.4 ;下一个灯P3.3亮

LCALL DELAY2 ;延迟

CLR P3.4 ;P3.4灯灭

SETB P3.5 ;P3.5灯亮

LCALL DELAY2 ;延迟

AJMP L

;延迟1

DELAY1 :

MOV R3,#200

DEL1: MOV R4,#250

DEL2: MOV R5,#50

DEL3: NOP ;空操作

DJNZ R5,DEL3

DJNZ R4,DEL2

DJNZ R3,DEL1 ;延长5秒

RET

;延迟2

DELAY2 :

DEL4: MOV R3,#200

DEL5: MOV R4,#200

DEL6: NOP

DJNZ R4,DEL6

DJNZ R3,DEL5 ;延迟0.08秒

RET

END