tutorialprotonpart5-120916150457-phpapp01

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

Upload: key-montoya

Post on 02-Jan-2016

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: tutorialprotonpart5-120916150457-phpapp01

 

 

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.

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.

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.

Page 2: tutorialprotonpart5-120916150457-phpapp01

 

 

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

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.

Page 3: tutorialprotonpart5-120916150457-phpapp01

 

 

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

5. Se desea que al pulsar SW1 se prendan todas las lámparas LEDS ubicadas en PORTA del PIC 18F4550, y al soltar SW1 se apaguen.

Page 4: tutorialprotonpart5-120916150457-phpapp01

 

 

Ejercicio 2.

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

Page 5: tutorialprotonpart5-120916150457-phpapp01

 

 

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

Page 6: tutorialprotonpart5-120916150457-phpapp01

 

 

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

Page 7: tutorialprotonpart5-120916150457-phpapp01

 

 

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

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.

PINES ESPECIALES PARA CONECTAR INTERUPTORES

El PORTB.0 de interrupción

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.

El PORTA.4 T0CKI

También puede ser utilizado de otra forma. El PIN PORTA.4 puede ser configurado como entrada para el 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.

Page 8: tutorialprotonpart5-120916150457-phpapp01

 

 

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

1. 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.

2. 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.

3. 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.

4. 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.

5. 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.