Vous êtes sur la page 1sur 9

Práctica Profesionalizante I Cesar Paredes

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:

i d L I D I =i d́ Ĺ+i d́ L+id Ĺ D=í d Ĺ+ í dL+idL


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
1 1 0 1 0
1 1 1 0 1 I=i d́ +i Ĺ D=dL+ í d

Página 2 de 9
Práctica Profesionalizante I Cesar Paredes

Un motor es controlado mediante tres pulsadores A, B y C.

Diseñe su circuito de control mediante puertas lógicas que cumpla las siguientes condiciones de
funcionamiento:

 Si se pulsan los tres pulsadores el motor se activa.


 Si se pulsan dos pulsadores cualesquiera, el motor se activa, pero se enciende una lámpara adicional
como señal de emergencia.
 Si sólo se pulsa un pulsador, el motor no se activa, pero se enciende la lámpara indicadora de
emergencia.
 Si no se pulsa ningún interruptor, ni el motor ni la lámpara se activan.

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

Circuito Oscilador Circuito de Reset

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);

//Funcion de Configuracion de Parámetros Iniciales


void setup(){
delay_ms(100); //Retardo de 100ms
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();
while(1){
PORTD = 64; //0
delay_ms(500);
PORTD = 121; //1
delay_ms(500);
PORTD = 36; //2
delay_ms(500);
PORTD = 48; //3
delay_ms(500);
PORTD = 25; //4
delay_ms(500);
PORTD = 18; //5
delay_ms(500);
PORTD = 2; //6
delay_ms(500);
PORTD = 120; //7
delay_ms(500);
PORTD = 0; //8
delay_ms(500);
PORTD = 16; //9
delay_ms(500);
}
}

Circuito que incrementa, decrementa del 0 al 9 y restablece a 0

Resistencias de Pull-up Botones conectados al Puerto B

Página 7 de 9
Práctica Profesionalizante I Cesar Paredes
Simulación:

Firmware (mikroC PRO for PIC v7.2.0):


unsigned int i;
unsigned char aux = 0;

//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

Vous aimerez peut-être aussi