单片机 交通信号灯模拟程序改变

单片机 交通信号灯模拟程序改变,第1张

;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模拟交通信号灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9434735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存