Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo.
Diseñar y desarrollar un programa utilizando el dsPIC33FJ32MC204 que emule el
funcionamiento de los semáforos del crucero vial que se muestra en la Fig1.
FUNDAMENTO
En este cruce vial se tienen cuatro semáforos, dos para la avenida principal y dos para la avenida
secundaria.
Ambas avenidas son de doble sentido, las vueltas son prohibidas por lo que el recorrido solo
puede ser recto.
Las siguientes condiciones describen el funcionamiento de los semáforos:
Mientras los semáforos S1 y S3 de la avenida principal, se encuentran en “siga” (verde),
los semáforos S2 y S4 de la avenida secundaria, se encontrarán en “alto” (rojo).
Los semáforos S2 y S4 se mantienen en rojo aun cuando los semáforos S1 y S3 cambien
a “preventivo” (amarillo).
Cuando cambien a “alto” los semáforos S1 y S3, los semáforos S2 y S4 estarán en “siga”,
manteniéndose así mientras S1 y S3 pasen a “preventivo”.
Finalmente se repite el ciclo indefinidamente.
Asumiendo que el flujo vehicular de la avenida principal es mayor que el de la avenida
secundaria, se establece:
que el tiempo en verde de los semáforos S1 y S3 (de la avenida principal) debe ser
mayor al tiempo en verde de los semáforos S2 y S4 (de la avenida secundaria).
PROCEDIMIENTO
1. Desarrollo del diagrama de flujo
El diagrama de flujo es una representación gráfica de un proceso.
Ofrece una descripción visual de las actividades implicadas en un proceso, mostrando la relación
secuencial ente ellas.
Como se puede observar al inicio del diagrama de flujo se configura el programa, mediante el
llamado de las librerías y los encabezados.
Una de las librerías a utilizar en este programa es la función Delay, a través de la cual se definirá
el tiempo de retardo.
Posteriormente se habilita el puerto B para conectar cada uno de los LED que emularan el
comportamiento del semáforo.
En el siguiente paso se definen los bits de salida para cada semáforo según las condiciones
descritas en la Tabla 1, agregando el tiempo para cada condición. El tiempo de duración de cada
una de las condiciones es implementado mediante la función Delay.
El diagrama de flujo de la función se muestra en la Fig. 2 . Como se puede observar la función
DELAY trabaja a una frecuencia de oscilación de 4MHz porque todo dispositivo Microchip (PIC,
DSPIC) se ejecuta en 4 instrucciones de reloj. Esta función es definida en un archivo aparte, ser
llamada las veces necesarias, como si fuera una librería.
R2
10k
U1
1 4
MCLR RB0/CN4/RP0/C2IN-/AN2/EMUD1/PGD1
20 5
VCAP/VDDCORE RB1/CN5/RP1/C2IN+/AN3/EMUC1/PGC1
6
RB2/CN6/RP2/AN4
R3 2
RA0/CN2/VREF+/AN0 RB3/CN7/RP3/AN5
7
10k 3 11
RA1/CN3/VREF-/AN1 RB4/CN1/RP4/SOSCI
9 14
RA2/CN30/CLKI/OSCI RB5/CN27/RP5/ASDA1/EMUD3/PGD3
10 15
RA3/CN29/CLKO/OSCO RB6/CN24/RP6/ASCL1/EMUC3/PGC3
12 16
RA4/CN0/T1CK/SOSCO RB7/CN23/RP7/INT0
17
RB8/CN22/RP8/SCL1/PWM2H1/TCK
18
RB9/CN21/RP9/SDA1/PWM2L1/TDO
21
RB10/CN16/RP10/PWM1H3/TDI/EMUD2/PGD2
22
RB11/CN15/RP11/PWM1L3/TMS/EMUC2/PGC2
23
RB12/CN14/RP12/PWM1H2
24
RB13/CN13/RP13/PWM1L2
28 25
AVDD RB14/CN12/RP14/PWM1H1
27 26
AVSS RB15/CN11/RP15/PWM1L1
DSPIC33FJ32MC202
D12D11D10D9 D8 D7 D6 D5 D4 D3 D2 D1
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
LED-YELLOW
. . .
R1
100
/*
* File: PROYECTO DE: semaforo1.c
* Author: ASTOCONDOR VILLAR JACOB
* Created on 26 de mayo de 2020, 08:38 AM
*/
#include <xc.h>
#include"p33fj32mc202.h"
#include "config1.h"
#include "reloj.h"
#include <libpic30.h>
//Función principal
int main()
{
AD1PCFGL=0XFFFF; //
TRISB=0x0000;
PORTB=0x0000;
TRISA=0XFFFF;
while(1) //iniciamos ciclo infinito
if(PORTAbits.RA0==0)
{
/*b0=verde; b1=amarillo; b2=rojo; b3=verde; b4=amarillo; b5=rojo
b6=verde; b7=amarillo; b8=rojo; b9=verde; b10=amarillo
b11=rojo
Se da la condición de cada puerto
*/
{
//S1
PORTB=0b100001100001;
__delay_ms(8000);
//S3
PORTB=0b100010100010;
__delay_ms(4000);
//S2
PORTB=0b001100001100;
__delay_ms(4000);
//S4
PORTB=0b010100010100;
__delay_ms(4000);
}
}
else {PORTB=0X0000;
}
}
config1.h
#include <xc.h>
2. Archvio:
Reloj.h