Diseño del programa de control de semáforos
Experimento de E/S simple (control de semáforo)
1. Requisitos experimentales
Utilice 74LS273 como puerto de salida para controlar 4 luces LED bicolores ( puede enviar luz roja, verde, amarilla), gestión de semáforo simulada.
2. Fines experimentales
1. Aprenda a ampliar interfaces de E/S simples en sistemas informáticos de un solo chip.
2. Aprenda a diseñar programas de salida de datos.
3. Aprende a simular el control de un semáforo.
4. Aprende a utilizar luces de dos colores.
3. Circuito experimental y conexión
4. Descripción del experimento
1. Debido a que este experimento es un experimento de control de semáforo, primero debes comprender el tráfico real. patrones de cambio de luz. Supongamos que una intersección corre de este a oeste y de norte a sur. El estado inicial 0 son luces rojas en el este y oeste y luces rojas en el norte y sur. Luego cambie al estado 1, donde las luces norte y sur son verdes y las luces este y oeste son rojas. Después de un rato, cambia al estado 2. Las luces norte y sur parpadean en verde varias veces y luego se vuelven amarillas. Después de un retraso de unos segundos, las luces este y oeste permanecen en rojo. Luego cambie al estado 3, la luz verde de este a oeste está abierta al tráfico y la luz de norte a sur está en rojo. Después de un período de tiempo, cambia al estado 4, las luces este y oeste parpadean en verde varias veces y se vuelven amarillas, con un retraso de unos segundos, y las luces norte y sur permanecen rojas. Finalmente pase al estado 1.
2. El LED de dos colores está empaquetado junto con un chip de LED rojo y un chip de LED verde, con un terminal negativo común. Cuando el terminal positivo rojo agrega un nivel alto y el terminal positivo verde agrega un nivel bajo, la luz roja se enciende cuando el terminal positivo rojo agrega un nivel bajo y el terminal positivo verde agrega un nivel alto, la luz verde se enciende cuando ambos extremos suman; Nivel alto, la luz amarilla se enciende.
5. Diagrama de bloques del programa experimental
Diagrama de bloques del programa:
Código fuente:
ORG 0000H
LJMP INICIO
ORG 0040H
INICIO:
MOV SP,#60H
LCALL STATUS0 ;Estado inicial (todas las luces rojas)
p>
CÍRCULO: LCALL STATUS1; luz verde en el norte y sur, luz roja en el este y oeste
LCALL STATUS2; luz verde en el norte y sur parpadeando hacia luz amarilla, roja en el este y oeste
ESTADO DE LLAMADA3; luz roja en el norte y sur, luz verde Este-Oeste
ESTADO DE LLAMADA LC4; Luz verde oeste parpadeando a amarilla
CÍRCULO LJMP
ESTADO0: ;luz roja norte-sur, luz roja este-oeste
p>
MOV DPTR ,#8300H
MOV A,#0FH
MOVX @DPTR,A
MOV R2,#10 ;Retraso 1 segundo
LCALL DELAY
RET
ESTADO1: ;Luz verde norte-sur, luz roja este-oeste
MOV DPTR,#08300H
MOV A, #5AH; luz verde en el norte y sur, luz roja en el este y oeste
MOVX @DPTR,A
MOV R2, #50;
LCALL DELAY
RET
ESTADO2: ; las luces verdes del norte y del sur parpadean a las luces amarillas, del este y del oeste
MOV DPTR , #8300H
MOV R3,#03H; la luz verde parpadea 3 veces
FLASH: MOV A,#5FH
MOVX @DPTR,A
MOV R2,#03H
p>RETARDO DE LLAMADA
MOV A,#5AH
MOVX @DPTR,A
MOV R2,#03H
RETARDO DE LLAMADA
DJNZ R3,FLASH
MOV A,#0AH ;Luz amarilla norte-sur, luz roja este-oeste
MOVX @DPTR,A
MOV R2,#10 ;Retraso 1 segundo
LCALL DELAY
RET
ESTADO3: ;Luces rojas en el norte y sur, luces verdes en el este y oeste
MOV DPTR,#8300H
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#50 ;Retraso 5 segundos
p>RETARDO DE LLAMADA
RET
ESTADO4: ;Las luces rojas del norte y del sur, las luces verdes del este y del oeste parpadean hasta convertirse en luces amarillas
MOV DPTR,#8300H
MOV R3,#03H La luz verde parpadea 3 veces
;FLASH1: MOV A,#0AFH
MOVX @DPTR,A
MOV R2, #03H
RETARDO DE LLAMADA LC
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#03H
RETARDO DE LLAMADA LC
DJNZ R3,FLASH1
MOV A,#05H ;Luces rojas norte y sur, luces amarillas este y oeste
MOVX @DPTR,A
MOV R2,#10 ;Retraso 1 segundo
RETARDO DE LLAMADA
NOP
R
ET
DELAY: ;Retardo subrutina
PUSH 2
PUSH 1
PUSH 0
DELAY1 : MOV 1,#00H
DELAY2: MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2 ; >DJNZ 2,DELAY1
POP 0
POP 1
POP 2
RET
FIN p>