Académique Documents
Professionnel Documents
Culture Documents
Trabajo Practico
Diseñar un circuito electrónico que cumpla la siguiente tabla de verdad para la función F(a, b, c) con el
menor número de puertas lógicas.
a b c F
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
Desarrollo:
F=B́ C + Á B Ć + AC
Página 1 de 9
Práctica Profesionalizante I Cesar Paredes
Un motor eléctrico puede girar en ambos sentidos por medio de dos contactores: “D” para el giro a derecha
y “I” para el giro a izquierda.
Estos dos contactores son comandados por dos pulsadores de giro “d” (derecha) e “i” (izquierda) y un
interruptor de selección “L” de acuerdo con las siguientes condiciones:
Si sólo se pulsa uno de los dos botones de giro, el motor gira en el sentido correspondiente.
Si se pulsan los dos botones de giro simultáneamente, el sentido de giro depende del estado del
interruptor “L” de forma que:
Si “L” está activado, el motor gira a la derecha.
Si “L” está en reposo, el motor gira a la izquierda.
Se pide:
a) La tabla de verdad.
b) Las funciones lógicas D e I y simplificarlas.
c) Su circuito lógico mediante puertas.
Desarrollo:
Página 2 de 9
Práctica Profesionalizante I Cesar Paredes
Diseñe su circuito de control mediante puertas lógicas que cumpla las siguientes condiciones de
funcionamiento:
Desarrollo:
A B C M L
0 0 0 0 0
0 0 1 0 0
0 1 0 0 1
0 1 1 0 1
1 0 0 1 0
1 0 1 1 0 M = AC+ BC + AB L= A B́+ Á C+ B Ć
1 1 0 1 0
1 1 1 0 1
Página 3 de 9
Práctica Profesionalizante I Cesar Paredes
Página 4 de 9
Práctica Profesionalizante I Cesar Paredes
Comparador de Magnitud
F 1= A B́ F 2= AB+ Á B́ F 3= Á B
A B F F F Si A > B ⟹ F 1=1 F 2=0 F 3=0
1 2 3
0 0 0 1 0
Si A=B ⟹ F 2=1 F 1=0 F 3=0
0 1 0 0 1 Si A < B ⟹ F 3=1 F 1=0 F 2=0
1 0 1 0 0
1 1 0 1 0
Página 5 de 9
Práctica Profesionalizante I Cesar Paredes
Contador del 0 al 9
Simulación:
Página 6 de 9
Práctica Profesionalizante I Cesar Paredes
Firmware (mikroC PRO for PIC v7.2.0):
//Prototipo de Funciones
//void setup(void);
Página 7 de 9
Práctica Profesionalizante I Cesar Paredes
Simulación:
//Prototipo de Funciones
//void setup(void);
//Función de Interrupción
void interrupt(){
INTCON.GIE = 0; //Deshabilito las interrupciones globales
if(INTCON.RBIF){ //Me fijo si la interrupción fue por el cambio de estado
de RB7:RB4
if(PORTB.RB4 == 0){ //Si fue el botón de "incrementor"
if(aux < 9){
aux++;
}
else {
aux = 0;
}
}
if(PORTB.RB5 == 0){ //Si fue el botón de "decrementar"
if(aux > 0){
aux--;
}
else {
aux = 9;
}
}
if(PORTB.RB6 == 0){ //Si fue el botón de "resetear"
aux = 0;
}
Página 8 de 9
Práctica Profesionalizante I Cesar Paredes
}
INTCON.RBIF = 0; //Pongo la bandera a 0 porque la interrupción ya se
atendió.
INTCON.GIE = 1; //Habilito las interrupciones globales
}
//Función de Configuracion de Parámetros Iniciales
void setup(){
delay_ms(100); //Retardo de 100ms
TRISB = 0B11110000; //Configuro los pines RB7:RB4 como entrada
TRISD = 0B10000000; //D0..D6 como salidas. Si algún pin no se usa, se
recomienda ponerlo como salida.
PORTD = 0xFF; //Pongo el puerto D en estado alto.
delay_ms(100);
}
void main() {
setup();
INTCON.GIE = 1; //Habilito las interrupciones globales
INTCON.RBIE = 1; //Habilito las interrupciones por cambio de estado en los
pines RB7:RB4
while(1){
switch(aux){
case 0:
PORTD = 64; //0
break;
case 1:
PORTD = 121; //1
break;
case 2:
PORTD = 36; //2
break;
case 3:
PORTD = 48; //3
break;
case 4:
PORTD = 25; //4
break;
case 5:
PORTD = 18; //5
break;
case 6:
PORTD = 2; //6
break;
case 7:
PORTD = 120; //7
break;
case 8:
PORTD = 0; //8
break;
case 9:
PORTD = 16; //9
break;
}
//delay_ms(20);
}
}
Página 9 de 9