;2位LED数码管显示程序:P0口接数码管段,P2口接数码管位。 P3口接键盘,P1口接发光二极管
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0P
ORG 000BH
LJMP T0INT
ORG 0013H
LJMP INT1P
ORG 001BH
LJMP CTC1
ORG 0100H
MAIN: LCALL CSHIH ;初始化
LOOP: LCALL TONGX ;通行路口
LCALL H_BCD2 ;计算(1位HEX转换为2位BCD码)
LCALL YIMA ;译码
LCALL LED4W ;显示
CLR 00H
JNB 00H,$
DJNZ R6,LOOP
MOV R6,#100
JNB 10H,LOOP1 ;启动特殊功能K0
JB 10H,$
LOOP1: JNB 11H,LOOP2 ;启动特殊功能K1
JB 11H,$
NOP
LOOP2: JNB 12H,LOOP3 ;启动特殊功能K2
JB 12H,$
NOP
LOOP3: DJNZ TIME,LOOP
SETB 02H
SJMP LOOP
TONGX: JB 01H,DONGX
JB 02H,HUANG1
MOV P1,#21H
SJMP TX_OUT
HUANG1: MOV P1,#22H
MOV TIME,#1
DJNZ R5,TX_OUT
MOV R5,200
CLR 02H
CPL 01H
MOV TIME,#15
SJMP TX_OUT
DONGX: JB 02H,HUANG2
MOV P1,#0CH
SJMP TX_OUT
HUANG2: MOV P1,#14H
MOV TIME,#1
DJNZ R5,TX_OUT
MOV R5,200
CLR 02H
CPL 01H
MOV TIME,#15
TX_OUT: RET
LED4W: MOV A,XWEI
MOV B,#3
MUL AB
MOV DPTR,#LED4T
JMP @A+DPTR
LED4T: LJMP LD4W1
LJMP LD4W2
LJMP LD4W3
LJMP LD4W4
LD4W1: MOV LEDD,MLED1
MOV LEDW,#1
INC XWEI
SJMP LED4WE
LD4W2: MOV LEDD,MLED2
MOV LEDW,#2
INC XWEI
SJMP LED4WE
LD4W3: MOV LEDD,MLED3
MOV LEDW,#4
INC XWEI
SJMP LED4WE
LD4W4: MOV LEDD,MLED4
MOV LEDW,#8
MOV XWEI,#0
LED4WE: RET
YIMA: MOV R0,#BLED1 ;四位LED
MOV R1,#MLED1
MOV R7,#2
MOV DPTR,#YIMTAB
YIMA1: MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,YIMA1
RET
YIMTAB: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4
DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9
CSHIH: MOV TIME,#15
MOV XWEI,#0
MOV LEDD,#0
MOV LEDW,#0
MOV R6,#100 ;1秒延时
MOV R5,#200 ;2秒延时
MOV P1,#21H
MOV 20H,#0
MOV 22H,#0
MOV TMOD,#61H ;T0方式1
MOV TTH0,#0D8H ;10ms
MOV TTL0,#0F0H
MOV TL0,TTL0
MOV TH0,TTH0
MOV TL1,#0FFH
MOV TH1,#0FFH
MOV IE,#8FH
SETB TR0
SETB TR1
MOV BLED1,#0
MOV BLED2,#0
MOV MLED3,#0
MOV MLED4,#0
RET
H_BCD2: MOV A,TIME
MOV B,#10
DIV AB
MOV BLED2,A
MOV BLED1,B
MOV MLED3,#0
MOV MLED4,#0
RET
T0INT: MOV TL0,TTL0
MOV TH0,TTH0
SETB 00H
RETI
INT0P: CPL 10H
SETB P12
CLR P11
CLR P10
SETB P15
CLR P14
CLR P13
RETI
INT1P: CPL 11H
CLR P12
CLR P11
SETB P10
SETB P15
CLR P14
CLR P13
RETI
CTC1: CPL 12H
MOV P1,#0CH
RETI
BIAOZ DATA 20H ;标志:0定时到。
XWEI DATA 60H ;显示位,4位:0~3
TTL0 DATA 61H
TTH0 DATA 62H
TIME DATA 66H ;倒计时时间
BLED1 DATA 74H ;显示数据BCD
BLED2 DATA 75H
BLED3 DATA 76H
BLED4 DATA 77H
MLED1 DATA 78H ;显示数据译码
MLED2 DATA 79H
MLED3 DATA 7AH
MLED4 DATA 7BH
LEDD EQU P0 ;数码管段
LEDW EQU P2 ;数码管位
END
一个按钮控制,在一个灯上显示三种状态,进行切换,供参考:
所以时间你自己得修改
Option
Explicit
Dim
a
As
Byte
Private
Sub
Command1_Click()
a
=
a
+
1
If
a
=
1
Then
Shape1FillColor
=
vbRed
ElseIf
a
=
2
Then
Shape1FillColor
=
vbYellow
ElseIf
a
=
3
Then
Shape1FillColor
=
vbGreen
ElseIf
a
=
4
Then
Shape1FillColor
=
vbYellow
ElseIf
a
>
4
Or
a
=
1
Then
a
=
a
-
4
Shape1FillColor
=
vbRed
End
If
End
Sub
Private Sub Form_Load()
Timer1Interval = 60000
Timer2Interval = 60000
End SubPrivate Sub Timer1_Timer()
MeBackColor = RGB(0, 255, 0)
Timer2Enabled = True
Timer1Enabled = False
End SubPrivate Sub Timer2_Timer()
MeBackColor = RGB(255, 0, 0)
Timer1Enabled = True
Timer2Enabled = False
End Sub
用汇编,编写的程序如下,经过了仿真调试,在12MHz的条件下,通过
ORG 0000H
MOV P0, #01111011B ;P07=P02=0, 东西 南北 都是红灯
LCALL DL3S
LOOP:
MOV P0, #11011011B ;P05=P02=0, 南北绿 东西红
LCALL DL15S
MOV P0, #10111011B ;P06=P02=0, 南北黄 东西红
LCALL DL3S
MOV P0, #01111110B ;P07=P00=0, 南北红 东西绿
LCALL DL15S
MOV P0, #01111101B ;P07=P01=0, 南北红 东西黄
LCALL DL3S
SJMP LOOP
DL15S:
MOV R2, #5
DL2:
CALL DL3S
DJNZ R2, DL2
RET
DL3S: ;延时3s,实测303s
MOV R5, #23
DL3:
MOV R6, #0
DL4:
MOV R7, #0
DL5:
DJNZ R7, DL5
DJNZ R6, DL4
DJNZ R5, DL3
RET
END
随着生活科技的高速发展,形形色色的汽车走进了我们的生活,大街小巷的十字路口也出现了各种各样的红绿灯,红绿黄颜色间隔切换我们都已经习以为常,但是大家知道红绿灯到底是如何控制的吗?
红灯停,绿灯行,黄灯亮了,等一等,这是我们在上学的时候老师教给我们的,如果没有红绿灯,生活中的十字路口一定很混乱,在绿灯熄灭,红灯亮起来之前,一般会有三秒钟是黄灯。黄灯亮起来意味着红灯马上就要来了,司机要做好停车准备了,那么不同颜色不停的切换程序会不会很麻烦?
控制交通信号灯最基本的方式是定时控制,也就是提前设置好每次红绿灯的时长。比如某个方向绿灯亮30秒之后黄灯亮三秒。接着红灯亮20秒,然后再这样周期循环,那每个交叉路口的红绿灯时间都一样吗?当然不是了,不同路口的红绿灯时间很可能不一样。即便是同一个路口,在不同的时间段也可能不一样,比如早晚高峰期或者周末都有可能和平时的时间不同。
工作人员会事先调查统计不同路口不同时间段的车流量,从而确定不同方向的红绿灯时长。比如某个路口,南北方向的车总是明显比东西方向的车多,那么南北方向的绿灯时间就会相对长一些,红灯时间短一些,东西方向则红灯时间长一些,绿灯时间短一些。每个路口情况不同,红绿灯时间也就不一样了。除了定时控制方式之外,还有一种效率更高的控制方式,通过车辆检测,实时检测路口车流量的大小,从而灵活调整红绿灯时间。这种方式可以根据实际的交通状况控制信号灯。信号灯联网后,还能与其他相关路口的信号灯实现协调工作,进一步提高交通效率。
PLC实现程序循环(交通灯)方法
交通信号灯分东、西、南、北四组,每组分别有“红”“黄”“绿”三种颜色。
其工作状态由PLC过程控制,“启动”、“停止”按钮分别控制信号灯的启动和停止。
G1表示东西绿灯的信号,Y1表示东西黄灯的信号,R1表示东西红灯的信号;
G2表示南北绿灯的信号,Y2表示南北黄灯的信号,R3表示南北红灯的信号;
SB2表示“停止”信号,SB1表示“启动”信号。
1.按下启动按钮,东西绿灯亮,南北红灯亮; 30秒后,熄灭。
2.东西,南北四个黄灯同时闪烁5次(5秒)后,熄灭。
3.东西红灯亮,南北绿灯亮20秒。
4.东西,南北四个黄灯同时闪烁5次(5秒)后,熄灭。按如下波形图,连续循环。
5.按下停止按钮,所有指示灯全部熄灭。
6.选定PLC的机型是S7-200系列PLC。确定I/O点,绘制I/O点分配表,编程。
7.编程后,认真检查PLC的梯形图程序。
以上就是关于单片机 交通信号灯模拟程序改变全部的内容,包括:单片机 交通信号灯模拟程序改变、利用VB编写交通信号灯程序、用VB模拟交通信号灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)