Está en la página 1de 8

PROYECTOS CON INTERRUPTORES

Un escenario típico en el mundo de microcontrolador consta del procesamiento de una entrada, para establecer una salida. Leer entradas de un número de fuentes es muy importante. La entrada en un sistema puede ser analógica, que varía con el voltaje, o digital, que es verdadera o falsa. Interruptores u otros dispositivos pueden dar señales al microcontrolador como 0 lógico o 1. Aquí vamos a hablar de la conexión de interruptores de pulsar para varias líneas E / S del microcontrolador.

de pulsar para varias líneas E / S del microcontrolador. Los Interruptores pueden ser conect ados

Los Interruptores pueden ser conectados en una de las dos maneras:

Activo. Esto significa que cuando se pulsa un interruptor, se conecta a la línea I / O a VCC o 5V en línea, para dar un 1 lógico.

Línea Baja. Esto se conoce como activos de alta, lo contrario es poco activa. Sin embargo, a fin de evitar una la línea abierta, se conecta la línea utilizando resistencias a GND.

abierta, se conecta la línea utilizando resistencias a GND. El esquema tiene 5 interruptor es de

El esquema tiene 5 interruptores de entrada. Estos interruptores están configurados como activos. Así, se han asociado resistencias conectadas a VCC. La línea correspondiente a leer 1 lógico, cuando el interruptor NO se presiona y 0 lógica

cuando está siendo presionado.

La línea especificada debe ser declarada como digital y como entrada antes de usar el interruptor.

Ejercicio 1.

Device=18F4550

XTAL=20

ALL_DIGITAL=true Output PORTC Input PORTA.0 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Low LED Loop:

If SW1=0 Then DelayMS 300 High LED End If GoTo Loop
If SW1=0 Then
DelayMS 300
High LED
End If
GoTo Loop

En este programa se supervisa a PORTA.0 asignando a la línea un interruptor SW1. Cuando el interruptor está desactivado la línea lee un 1 lógico, tan pronto como se

pulsa el interruptor y sí IF es ejecutado, la línea lee 0 lógico y ejecuta las instrucciones

que se adjuntan en la estructura del IF

End IF.

Observe el pequeño retraso de DelayMS 300, se ha hecho así, para que una vez que activado el interruptor sea detectado, se encienda el led ubicado en PORTC.0, permaneciendo en este estado una vez se libera el interruptor.

Circuito EJERCICIO 1. Hágalo usted mismo 1. Hacer un programa que deba encender el LED
Circuito EJERCICIO 1.
Hágalo usted mismo
1.
Hacer un programa que deba encender el LED y en cada pulsación de un botón
lo apague.
2.

Hacer un programa que encienda un LED cuando se pulsa SW1 y lo apague cuando se pulsa SW2.

3. Se desea que al pulsar SW1 se prenda un LED y al soltar SW1 se apague el LED.

4. Se desea que al pulsar SW1 se prenda un LED0 y se apague un LED1, y si se pulsa SW2 se prende LED1 y se paga LED0.

Ejercicio 2.

Circuito EJERCICIO 2, 3, 4,5. Device=18F4550 XTAL=20
Circuito EJERCICIO 2, 3, 4,5.
Device=18F4550
XTAL=20

ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Dim x As Byte

x=100

Low LED

Loop:

DelayMS x* 10 Toggle LED If SW3=0 Then

= PORTA .0 Symbol SW2 = PORTA .1 Dim x As Byte x=100 Low LED Loop:

x=x+5

DelayMS 200 EndIf If SW4=0 Then

x=x-5

DelayMS 200

EndIf

GoTo Loop

Este programa lee dos interruptores, SW1 y SW2, y cuando se detecta que son activados
Este programa lee dos interruptores, SW1 y SW2, y cuando se detecta que son
activados se incrementa o
disminuye el valor de una variable x por 5. A su vez la X se
utiliza en la demora de activación del LED ubicado en PORTC.0. Así, la velocidad de
parpadeo del LED se puede cambiar pulsando SW1 o SW2.
Rebote de Pulsación
Cuando se pulsa un botón, los contactos hacen una conexión a corto (1 a 20 ms). El
Comando Button evita este ruido para ser interpretado como una acción más del
interruptor, realizando un retraso después de leer el estado de entrada.
En las aplicaciones del mundo real, los botones se suponen que deben realizar más que
una sola activación. El software soporta una variedad de maneras de pulsar un botón.
Por ejemplo, en el caso de la selección de un valor de entrada, cuando se pulsa el
botón se supone incrementar el número, sin embargo, si se pulsa un cierto período,
comienza a comportarse como si el botón se activara varias veces. Esto se llama
repetición automática característica. PROTON proporciona un comando llamado
Button. Este comando supervisa un pin específico de un puerto para la entrada, lee
el
valor como activos de baja o alta, también acepta un número que es el retraso de
espera, después de que una repetición automática
sea publicada. La frecuencia de
repetición automática también puede ser mencionada en la declaración.
Ejercicio 3.
Device=18F4550
XTAL=20

ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED = PORTC.0 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Dim x As Byte

x=0

loop:

Button SW1, 0, 100, 250, x, 0, aa Toggle LED DelayMS 100 aa:

GoTo loop

Este programa utiliza el comando Button para leer el estado de un botón, SW1. Si se pulsa el botón, se alterna el LED, si se mantiene pulsado el botón, se iniciará la repetición automática después de una pequeña demora.

Además de los botones, muchos tipos de interruptores, como puentes o conmutadores DIP pueden ser utilizados en el de hardware para indicar varias configuraciones. Se puede leer como cualquier cambio, como 0 lógico o 1, dependiendo de la configuración del hardware.

Lectura de una combinación de botones A veces, en un programa es necesario leer una
Lectura de una combinación de botones
A veces, en un programa es necesario leer una combinación de botones, esto se utiliza
para ampliar la gama de
capacidades de entrada, así como proporcionar un mecanismo
de seguridad para funciones importantes. La combinación se puede leer en la misma
línea, con el uso del operador AND, o como IFS anidados.
Ejercicio 4.
Device=18F4550
XTAL=20
ALL_DIGITAL=true
Output PORTC
Input PORTA.0
Input PORTA.1
Symbol LED = PORTC.0
Symbol SW1 = PORTA.0
Symbol SW2 = PORTA.1
loop:
If SW1=0 And SW2=0 Then
Toggle LED
DelayMS 300
EndIf
GoTo loop
Este programa hará un seguimiento del interruptor SW1 y SW2.
Se cambiará el
estado del LED sólo si se pulsan las dos teclas.
En una segunda situación queremos
que SW2 preceda a SW1.

Ejercicio 5.

Device=18F4550

XTAL=20

ALL_DIGITAL=true Output PORTC Input PORTA.0 Input PORTA.1 Symbol LED0 = PORTC.0

Symbol LED1 = PORTC.1 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 loop:

If SW1=0 Then High LED1 DelayMS 2000 If SW2=0 Then DelayMS 200 Toggle LED0 EndIf Low LED1 EndIf GoTo loop

PINES ESPECIALES PARA CONECTAR INTERUPTORES El PORTB.0 de interrupción El PORTA.4 T0CKI
PINES ESPECIALES PARA CONECTAR INTERUPTORES
El PORTB.0 de interrupción
El PORTA.4 T0CKI

Este programa se configura SW1 como interruptor principal, cuando se activa, se cambia de estado el LED1 (PORTC.1) y espere dos segundos, esto da tiempo a la activación de SW2, al final de 2 segundos que se comprobará si SW2 sigue presionado, entonces, se activará el LED0. Sea o no SW2 presionado, en lapso de 2 segundos, el LED1 se apagará, y el ciclo se repite. Este tipo de mecanismo, asegura que una determinada secuencia de teclas presionadas antes de una acción importante, como apagar un motor etc. es llevado a cabo.

Se puede ubicar un interruptor de uso general, situado en PORTB.0. Aunque puede funcionar como un interruptor normal, descrito anteriormente, el PORTB.0 puede ser configurado para desarrollar un procedimiento interno de la interrupción cada vez que se produce un cambio, en el PIN. Vamos a hablar de esto más adelante en la sección correspondiente. Aquí sólo quiero mencionar que este PIN puede ser utilizado no sólo como interruptor de entrada de uso general, sino también como un medio de prueba de la interrupción.

También puede ser utilizado de otra forma. El PIN PORTA.4 puede ser

Timer 0. Timer 0 puede ser configurado para contar el número

de impulsos procedentes de PORTA.4. Con el fin de experimentar con esto podemos utilizar in interruptor para dar impulsos externos para este contador o hacer una fuente externa, como un oscilador basado en 555, y conectarlo a este conector, para valorar los acontecimientos externos, que se pueden contar.

configurado

como entrada para el

Ejercicios propuestos

En los siguientes ejercicios escribir las decisiones y realizar la simulación en PROTEUS.

1. 2. 3. 4. 5.
1.
2.
3.
4.
5.

Se tienen 3 pulsadores SW1, SW2 y SW3, un LED0, se desea que al pulsar solo dos se prenda LED0, y si no se pulsa ninguno se apague LED0.

Se tienen 2 lámparas L0 y L1, dos pulsadores SW1 y SW2, se desea que al pulsar SW1 se prendan las dos lámparas y se apaguen si se pulsa SW2.

Se tienen 4 pulsadores SW0 a SW3, una lámpara L0, se desea que al pulsar SW0 y SW1 o SW22 y SW3 se prenda L0 en otro caso se apague.

Se tiene A=1, B=10, C=4, si A+B>3 cargar en C 25, si A>C or B<C entonces cargue en A 34 y en B 12. Mostrar resultado con leds.

Se tienen 4 pulsadores Sw1 a Sw4, y tres lámparas L1 a L3, se desea que L1 solo prenda cuando se pulsen al menos dos, L2 solo prende cuando se pulsen solo 3, L3 solo prende si L1 y L2 están prendidas.