¿Qué es un Microcontrolador? Cap.6

Page 1

Indicadores Digitales · Página 171

Capítulo 6: Indicadores Digitales EL INDICADOR DIGITAL DE TODOS LOS DIAS La Figura 6-1 muestra un indicador en el frente de la puerta de un horno. Cuando el horno no se usa, muestra la hora. Cuando se usa el horno, muestra el tiempo de cocimiento, y parpadea al mismo tiempoque una alarma suena para indicarle que el alimento está listo. Un microcontrolador dentro de la puerta del horno monitorea los botones push y actualiza el indicador. Tambien monitorea un sensor interno del horno y conmuta dispositivos que energizan y desenergizan el elemento de calentamiento.

Figura 6-1 Reloj Digital con Indicador de 7 segmentos en la puerta del horno.

Cada uno de los tres dígitos de la Figura 6-1 se llama indicador de 7 segmentos. En este capítulo, usted programará el BASIC Stamp para mostrar números y letras en un indicador de 7 segmentos.

¿QUÉ ES UN INDICADOR DE 7 SEGMENTOS? Un Indicador de 7 segmentos es un bloque rectangular de 7 líneas de igual longitud que puede iluminarse selectivamente con LEDs para mostrar digitos y algunas letras. La Figura 6-2 muestra un dibujo de un indicador de 7 segmentos que usted usará en las actividades de este capítulo. También tiene un punto que puede usarse como punto decimal. Cada uno de los segmentos (desde A hasta G) y el punto contienen un LED separado, que pueden controlarse individualmente. La mayoría de los pines tiene un número junto con una etiqueta que corresponde a uno de los LEDs del segmento. El pin 5 tiene la etiqueta DP, que significa punto decimal. Los pines 3 y 8 tienen la etiqueta “cátodo común” y estudiaremos su significado cuando veamos su diagrama.


Página 172 · ¿Qué es un Microcontrolador?

Common Cathode

10 9 8 7 6 G F

A B

A F

B G C

E D E D

Figura 6-2 Indicador de 7 segmentos Dibujo y mapa de pines.

C DP

1 2 3 4 5 Common Cathode

Mapa de pines La figura 6-2 es un ejemplo de un mapa de pines. Un mapa de pines contiene información útil que le ayuda conectar una parte a otros circuitos. El mapa de pines usualmente muestra un número para cada pin, un nombre para cada pin y una referencia. Mire la Figura 6-2. Cada pin está numerado, y el nombre para cada pin es la letra del segmento cercano al pin. La referencia para esta parte es el punto decimal. Oriente la parte de tal forma que el punto decimal esté abajo a la derecha. Entonces usted puede ver con el mapa de pines que el Pin 1 está abajo a la izquierda, y el número de los pines se incrementa en sentido inverso de las manecillas del reloj alrededor de la envolvente.

La Figura 6-3 muestra un esquemático del LED dentro del indicador LED de 7 segmentos. Cada ánodo del LED se conecta a un solo pin. Todos los cátodos se conectan juntos por alambres dentro de la parte. Debido a que los cátodos comparten una conexión común, al indicador LED de 7 segmentos se le llama de cátodo común. Se pueden conectar los pines 3 o 8 de la parte a Vss, usted conectará todos los cátodos del LED a Vss.


Indicadores Digitales · Página 173

1

4

6

7

9

10

5

E

C

B

A

F

G

DP

LED’s

3

Figura 6-3 Esquemático de un Indicador LED de 7 segmentos

8

ACTIVIDAD #1: CONSTRUYENDO Y VERIFICANDO EL INDICADOR LED DE 7 SEGMENTOS En esta actividad, usted manualmente construirá circuito para verificar cada segmento del indicador. Partes para la prueba del Indicador LED de 7 segmentos

Un indicador LED de 7 segmentos 5 Resistores de 1 KΩ (café-negro-rojo) Un alambre para puente Circuitos de Prueba para el indicador de 7 segmentos

9 Con la energía desconectada de su Tablilla Board of Education o HomeWork Board, construya el circuito mostrado en la Figura 6-4 y 6-5. 9 Reconecte la alimentación y verifique que el segmeto A se ilumina. 9 ¿Qué significa “x” debajo de “nc” en el esquemático? “nc” significa “no hay conexión” o no conectado. Esto indica que el pin particular del indicador LED de 7 segmentos no está conectado a ninguna parte. La “x” al final del pin también significa no conectado. Los esquemáticos algunas veces usan “x” o “nc”.


Página 174 · ¿Qué es un Microcontrolador?

Vdd

nc

X

X

X

nc

nc

nc X

nc

X

nc

X

nc X

1 kΩ

1

4

6

7

9

10

5

E

C

B

A

F

G

DP

Figura 6-4 Esquemático del circuito de prueba para el segmento A del indicador LED

LED’s

8 X

3 Vss

nc

X3

P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vdd Vin Vss

Figura 6-5 Diagrama de alambrado del circuito de prueba para el segmento “A” del indicador LED.

9 Desconecte la alimentación y modifique el circuito para conectar el resistor a la entrada “B” del LED como lo muestran la Figura 6-6 y 6-7.


Indicadores Digitales · Página 175

Vdd

X

nc

nc

nc X

X

nc

X

nc

X

nc

X

nc X

1 kΩ

1

4

6

7

9

10

5

E

C

B

A

F

G

DP

Figura 6-6 Esquemático del circuito de prueba para el segmento B del indicador LED

LED’s

8 X

3 Vss

nc

X3

P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vdd Vin Vss

Figura 6-7 Diagrama de alambrado del circuito de prueba para el segmento “B” del indicador LED.

9 Reconecte la alimentación y verifique que se ilumina el segmento B. 9 Usando el mapa de pines de la Figura 6-2 como guía, repita estos pasos para los segmentos C hasta G.


Página 176 · ¿Qué es un Microcontrolador?

Su Turno – El número 3 y la letra H

La Figura 6-8 y 6-9 muestran el dígito 3 alambrado en el indicador LED de 7 segmentos. Vdd

Vdd

Vdd

Vdd

Vdd

1 kΩ (all)

X

nc

X

nc

X

nc 1

4

6

7

9

10

5

E

C

B

A

F

G

DP

Figura 6-8 Alambrado del dígito “3”

LED’s

8 X

3 Vss

nc X3

P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vdd Vin

Figura 6-9 Diagrama de alambrado de la Figura 6-8

Vss

9 Construya y verifique el circuito mostrado en la Figura 6-8 y Figura 6-9 y verifique que mustra el número 3. 9 Dibuje un esquemático que mostrará el número 2 en el LED de 7 segmentos. 9 Contruya y verifique el circuito para asegurarse que funciona. Si tiene fallas solucionelas.


Indicadores Digitales · Página 177

9 Determine el circuito necesario para la letra “H” y después construyalo y verifiquelo.

ACTIVIDAD #2: CONTROLANDO EL INDICADOR LED DE 7 SEGMENTOS En esta actividad usted conectará el LED de 7 segmentos a el BASIC Stamp y ejecutará un programa simple para verificar y asegurarse que cada LED está conectado correctamente. Partes para el Indicador LED de 7 segmentos

Un indicador LED de 7 segmentos 8 Resistores de 1 KΩ (café-negro-rojo) 5 Alambres para puentes Conectando el Indicador LED de 7 segmentos a el BASIC Stamp

La Figura 6-11 muestra el esquemático y la Figura 6-12 muestra el diagrama de alambrado para este ejemplo de BASIC Stamp controlando un indicador LED de 7 segmentos. Esquematico y mapa de pines. Si usted está tratando de construir el circuito del esquemático de la Figura 6-11 sin ayuda de la Figura 6-12, asegúrese de consultar el mapa de pines del indicador LED de 7 segmentos, mostrado para su conveniencia en la Figura 610. Common Cathode

10 9 8 7 6 G F

A B

A F

B G C

E D E D

C DP

1 2 3 4 5 Common Cathode

Figura 6-10 Dibujo del Indicador LED de 7 segmentos y Mapa de pines


Página 178 · ¿Qué es un Microcontrolador?

1 kΩ (All) P15 P14 P13 P12 P11 P10 P9 P8

E

C

G

DP

F

A

LED’s

B

Figura 6-11 Esquematico del BASIC Stamp controlando un Indicador LED de 7 segmentos.

common Vss

Sea cuidadoso con los resistores conectados a P13 Y P14. Observe cuidadosamente a los resistores conectados en P13 y P14 de la Figura 6-12. Hay una distancia entre estos dos resistores. El espacio se muestra porque el pin 8 del indicador LED de 7 segmentos está sin conectar. Un resistor conecta el pin E/S P13 con pin 9 del indicador LED de 7 segmentos. Otro resistor conecta a P14 con el pin 7 del indicador de 7 segmentos DP EDC GFAB

X3

P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

Vdd

Figura 6-12 Diagrama de alambrado para la Figrua 6-11.

Vin Vss

Use las letras de letras de arriba de los segmentos en este diagrama como referencia.


Indicadores Digitales · Página 179

Dispositivo Paralelo El indicador LED de 7 segmentos se llama dispositivo paralelo porque el BASIC Stamp tiene que usar un grupo de líneas de E/S para mandar datos al dispositivo (información high y low). En el caso de este indicador LED de 7 segmentos toma 8 pines de E/S para decirle al dispositivo lo que tiene que mostrar. Bus Paralelo. Los alambres que transmiten las señales HIGH/LOW desde el BASIC Stamp al indicador LED de 7 segmentos se llaman BUS PARALELO. Observe que estos alambres se dibujan como líneas paralelas en la Figura 6-11. El termino “paralelo” hace referencia a la geometría del esquemático.

Programando la Prueba del Indicador LED de 7 segmentos

Las instrucciones HIGH y LOW aceptarán una variable Pin como argumento. Para verificar cada segmento, uno a la vez, simplemente coloque las instrucciones HIGH y LOW en un bucle FOR...NEXT, y use el “indice” para fijar nuevamente los pines E/S en HIGH y LOW. 9 Meta y ejecute el programa SegmentTestWithHighLow.bs2 9 Verifique que cada segmento en el indicador LED de 7 segmentos se ilumina brevemente girando nuevamente en apagado y encendido. 9 Haga una lista de que segmento controla cada pin de E/S. Programa Ejemplo: SegmentTestWithHighLow.bs2 ' ¿Que es un Microcontrolador- SegmentTestWithHighLow.bs2 ' Individualmente verifique cada segmento en un indicador LED de 7-Segment . '{$STAMP BS2} '{$PBASIC 2.5} pinCounter

VAR

Nib

PAUSE 1000 DEBUG "Pin de E/S", CR, "-------", CR FOR pinCounter = 8 TO 15 DEBUG DEC2 pinCounter, CR HIGH pinCounter PAUSE 1000 LOW pinCounter NEXT


Página 180 · ¿Qué es un Microcontrolador?

Su Turno – Un Patrón Diferente

Quitando la instrucción LOW pinCounter tendrá un efecto interesante. 9 Haga que la instrucción LOW pinCounter sea un comentario, agreguele un apostrofe a su izquierda. 9 Ejecute el programa modificado y observe el efecto.

ACTIVIDAD #3: MOSTRANDO DIGITOS Incluyendo el punto decimal hay 8 diferentes señales high/low que los pines de E/S del BASIC Stamp manda al indicador LED de 7 segmentos. Esto es, ocho diferentes instrucciones HIGH o LOW para mostrar un número. Si usted desea contar de cero a nueve, requeriría una gran cantidad de programación. Afortunadamente hay variables especiales que puede usted usar para fijar los valores high y low para los grupos de pines de E/S. En esta actividad, usará 8 números binarios en lugar de instrucciones HIGH y LOW para controlar las señales high/low que manda el BasicStamp a los pines: Al fijar variables especiales llamadas DIRH y OUTH iguales a los números binarios usted será capaz De controlar las señales high/low mandadas a los pines E/S conectados al circuito del indicador LED de 7 segmentos usando una sóla instrucción PBASIC. 8 bits aquello que tiene 8 dígitos se dice que tiene 8 bits. : A binary number Cada bit es un lugar donde puede almacenar un 1 o un 0. Un Byte es una variable que contiene 8 bits. Hay 256 diferentes combinaciones de ceros y unos que usted puede usar para contar desde 0 a 255 con 8 bits. Esta es la razón por la cual una variable Byte puede almacenar un número entre 0 y 255.

Partes y Circuito para Mostrar Digitos

Las mismas de la actividad anterior. Programando PATRONES On/Off usando números binarios

En esta actividad, usted experimentará con las variables DIRH y OUTH. DIRH es una variable que controla la dirección (entrad o salida) de los pines de E/S desde P8 hasta P15. OUTH controla las señales high o low que cada unos de estos pines E/S manda. Como usted pronto verá, OUTH es especialmente útil porque usted puede usarla para mandar al mismo tiempo las señales high/low para 8 diferentes pines con solamente una


Indicadores Digitales · Página 181

instrucción. Este es un programa ejemplo que muestra como se pueden usar estas dos variables para contar desde 0 hasta 0 con el indicador LED de 7 segmentos sin usar las instrucciones HIGH y LOW. Programa Ejemplo. DisplayDigits.bs2

Este Programa Ejemplo reciclara los digitos de 0 a 9 en el indicador LED de 7 segmentos. 9 Meta y ejecute el programa DisplayDigits.bs2 9 Verifique que se muestran los dígitos de 0 hasta 9. ' ¿Que es un Microcontrolador - DisplayDigits.bs2 ' Se muestran los digitos de 0 a 9 en el indicador LED de 7 segmentos. '{$STAMP BS2} '{$PBASIC 2.5} DEBUG "Program Running!" OUTH = %00000000 DIRH = %11111111 ' BAFG.CDE OUTH = %11100111 PAUSE 1000 OUTH = %10000100 PAUSE 1000 OUTH = %11010011 PAUSE 1000 OUTH = %11010110 PAUSE 1000 OUTH = %10110100 PAUSE 1000 OUTH = %01110110 PAUSE 1000 OUTH = %01110111 PAUSE 1000 OUTH = %11000100 PAUSE 1000 OUTH = %11110111 PAUSE 1000 OUTH = %11110110 PAUSE 1000 DIRH = %00000000 END

' OUTH se inicializa en low. ' Fiha P8-P15 todo en low. ' Digito: ' 0 ' 1 ' 2 ' 3 ' 4 ' 5 ' 6 ' 7 ' 8 ' 9

' Los pines E/S a entrada, ' de segmentos apagados.


Página 182 · ¿Qué es un Microcontrolador?

Funcionamiento de DisplayDigits.bs2

Vin

Vss

La Figura 6-13 le muestra como puede usar las variables DIRH y OUTH para controlar la dirección y estado (high/low) de los pines de E/S desde P8 hasta P15.

P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

X3

Vdd

Figura 6-13 Usando DIRH y OUTH para fijar todos los pines a Salida-Low

OUTH = %00000000 DIRH = %11111111 La primera instrucción: OUTH = %00000000

Hace que todos los pines E/S (de P8 a P15) están listos para mandar señales “low”. Si todos ellos mandan señales low, apagarán todos los LEDs del indicador LED de 7 segmentos. Si usted desea que todos los pines E/S manden una señal high usted podría usar OUTH = %11111111 ¿Qué hace %? El simbolo “%” formato en Binario se usa para decirle al Editor BASIC Stamp que el número es un número binario. Por ejemplo, el número binario %00001100 es lo mismo que el número decimal 12. Como usted verá en esta actividad, los números binarios pueden hacer más fácil muchas tareas de programacion.

Las señales low verdaderamente no se manda por los pines E/S hasta que se usa la variable DIRH que cambia los pines E/S de entrada a salida. La instrucción: DIRH = %11111111


Indicadores Digitales · Página 183

Fija los pines de E/S desde P8 hast P15 como salidad. Tan pronto como se ejecuta esta instrucción P8 hasta P15 empiezan a mandar señales low. Esto se debe a que la instrucción OUTH = 00000000 se ejecutó justamente antes de la instrucción DIRH. Tan pronto como la instrucción DIRH fija todos los pines como salida, empiezan a mandar señales low. Usted tambien puede usar DIRH = %00000000 para cambiar todos los pines E/S en entradas. Antes que los pines E/S se conviertan en salidas: Hasta que los pines de entrada cambian a salida, sensan las señales y actualizan la variable INH. Esta es la variable que contiene IN8, IN9 hasta IN15. Estas variables se pueden usar de la misma forma que se usaron IN3 y IN4 para leer los botones push en el Capítulo 3 Entrada Digital – Botones push. En el BASIC Stamp todos los pines de E/S se inicializan como entradas. A esto se le llama “default”. Usted tiene que decirle a el BASIC Stamp que un pin I/O cambie a salida antes de que empiece a mandar señales high o low. Las dos instrucciones HIGH y LOW cambian automáticamente la dirección de los pines E/S del BASIC Stamp como salida. Colocando un 1 en la variable DIRH también se hacen uno los pines de E/S en salida. Siempre fije valores en un registro OUT antes de hacerlos salidas con valores en el registro DIR correspondiente. Esto previene que brevemente se manden señales no desadas. Por ejemplo, si a DIR5 = 1 le sigue OUT5 = 1 en el principio de un programa, el brevemente manda una señal “low” no deseada antes de cambiar a “high” porque OUT5 almacena cero cuando el programa comienza. (En BASIC Stamp todas las variables/registros se inicializan en 0.) Si OUT5 = 1 y le sigue DIR5 =1, el pin de E/S mandará una señal “high” tan pronto como se convierta en salida. Como los valores almacenados por default en todas las variables es 0 cuando el programa inicia, la instrucción OUTH = %00000000 en realidad es redundante.

La Figura 6-14 muestra como usar la variable OUTH para mandar selectivamente señales high y low a P8 hasta P15. Un 1 binario se usa para mandar una señal high, y un 0 binario se usa para mandar una señal low. Este ejemplo muestra el número tres en el indicador LED de 7 segmentos: ' BAFG.CDE OUTH = %11010110


P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2

X3

Vdd

Vin

Vss

Página 184 · ¿Qué es un Microcontrolador?

Figura 6-14 Usando OUTH para controlar las señales High/Low desde P8 hasta P15

‘ BAFG.CDE OUTH = %11010110 La instrucción OUTH = %11010110 usa ceros binarios para fijar los pines E/S P8, P11 y P13 en low, y usa unos binarios para fijar P9, P10, P12, P14 y P15 en high. La linea debajo de la instrucción es un comentario que muestra las etiquetas del segmento con el valor binario que hace que el segmento se ilumine o se apague. Dentro de HIGH and LOW commands: HIGH 15

...es lo mismo que:

OUT15 = 1 DIR15 = 1

...es lo mismo que:

OUT15 = 0 DIR15 = 1

Igualmente , la instrucción : LOW 15

Si desea cambiar P15 como entrada, use DIR15 = 0. Entonces, puede usar IN15 para detectar (en lugar de mandar) señales high/low .

Su Turno – Mostrado A hasta F

9 Calcule que patrones binarios (combinaciones de ceros y unos) necesitará para mostrar las letras A, b, C, d, E y F. 9 Modifique el programa DisplayDigits.bs2 para que muestre A, b, C, d, E y F.


Indicadores Digitales · Página 185

Decimal vs Hexadecimal Los digitos basicos en el sistema de números decimales son; 0,1,2,3,4,5,6,7,8,9 En el hexadecimal (base-16) en el número de dígitos del sistema de base son: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F La Base-16 se usa mucho en la programación de computadoras y microcontroladores. Una vez que usted sepa calcular como mostrar los caracteres de A hasta F, usted podrá modificar su programa para contar en hexadecimal de 0 hasta F.

Guardando las Listas de los Patrones On/Off

La instrucción LOOKUP facilita la escritura de los códigos del Indicador LED de 7 segmentos. La instrucción LOOKUP le permite que “vea” elementos de una lista. Este es un ejemplo de código que usa la instrucción LOOKUP: LOOKUP index, [7, 85, 19, 167, 28], value

Hay dos variables que usa estra instrucción “index” y “value”. Si index es 0, value almacena 7, Si index es 1, value almacena 85. En el siguiente programa ejemplo, index vale 2, entonces la instrucción LOOKUP coloca 19 en value y eso es lo que muestra la Terminal Debug. Programa Ejemplo: SimpleLookup.bs2

9 Meta y ejecute el programa SimpleLookup.bs2 9 Ejecute el programa con la variable index fiajdo en 2. 9 Trate de ajustar la variable index igual a un número entre 0 y 4. 9 Ejecute nuevamente el programa despues de cada cambio en la variable index y observe que valor de la lista se coloca en la variable value. 9 Opcional: Modifique el programa colocando la instrucción LOOKUP en un bucle FOR...NEXT que cuente de 0 a 4. ' ¿Que es un Microcontrolador - SimpleLookup.bs2 ' Muestra un valor usando un indice y una Tabla. ' {$STAMP BS2} ' {$PBASIC 2.5} value index

VAR VAR

Byte Nib


Página 186 · ¿Qué es un Microcontrolador?

index = 2 PAUSE 1000 DEBUG ? index LOOKUP index, [7, 85, 19, 167, 28], value DEBUG ? value, CR DEBUG "Cambie la variable indice de un ", CR, "numero diferente (entre 0 y 4).", CR, CR, "Ejecute el programa moficado y ", CR, "verifique que ve el número", CR, "que la instrucción LOOKUP coloca en el", CR, "variable valor." END

Programa Ejemplo: DisplayDigitsWithLookup.bs2

Este programa ejemplo muestra como la instrucción LOOKUP puede verdaderamente facilitar el almacenamiento de patrones de bits usados en la variable OUTH. Nuevamente, la variable index se usa para escoger que valor binario se coloca en la variable OUTH. Este Programa Ejemplo cuenta desde 0 a 9. La diferencia entre este programa y el programan DisplayDigits.bs2 es que este programa es mucho más versatil. Es mucho más rápido y facil de ajustar para diferenes secuencias de números usando tablas lookup. 9 Meta y el ejecute el programa DisplayDigitsWithLookup.bs2 9 Verifique que hace las mismas acciones que el programa anterior (con mucho menor trabajo) 9 Vea la Terminal Debug mientras se ejecuta el programa. Esta muestra como el valor de index se usa con la instrucción LOOKUP para cargar el valor binario correcto desde la lista en OUTH.


Indicadores Digitales · Página 187

' ¿Que es un Microcontrolador - DisplayDigitsWithLookup.bs2 ' Use una tabla lookup para almacenar y mostrar digitos con un indicador LED 7-segment . '{$STAMP BS2} '{$PBASIC 2.5} index

VAR

Nib

OUTH = %00000000 DIRH = %11111111 PAUSE 1000 DEBUG "index "-----

OUTH ", CR, --------", CR

FOR index = 0 TO 9 LOOKUP index, [ %11100111, %10000100, %11010011, %11010110, %10110100, %01110110, %01110111, %11000100, %11110111, %11110110 ], OUTH DEBUG " ", DEC2 index, " PAUSE 1000 NEXT

", BIN8 OUTH, CR

DIRH = %00000000 END

Su Turno – Nuevamente mostrando de 0 a F

Modifique el programa DisplayDigitsWithLookup.bs2 para que cuente en hexadecimal de 0 a F. No olvide actualizar el argumento EndValue del bucle FOR...NEXT.

ACTIVIDAD #4: MOSTRANDO LA POSICIÓN DE UN DIAL En el capítulo 5, Actividad #4 usted usó el potenciometro para controlar la posición de un servo. En esta actividad, usted mostrara la posición de un potenciometro usando un indicador LED de 7 segmentos. Partes para el Dial y el Indicador

Un indicador LED de 7 segmentos 8 Resistores de 1 KΩ (café-negro-rojo) Un Potenciometro de 10 K Ω Un Resistor de 220 Ω (rojo-rojo-café) Un capacitor de 0.1 μF Siete alambres para puentes.


Página 188 · ¿Qué es un Microcontrolador?

Construyendo los circuitos Dial e Indicador

La Figura 6-15 muestra el esquemático de un circuito potenciometro que debe ser agregado a proyecto. La Figrua 6-16 muestra el diagrama de alambrado del circuito de la Figura 6-15 combinada con el circuito de la Figura 6-11. 9 Agregue el circuito del potenciometro al circuito del indicador LED de 7 segmentos como se muestra en la Figura 6-16.

Figura 6-15 Esquemático del circuito del potenciometro agregado al proyecto.

Figura 6-16 Diagrama de alambrado para la Figura 6-15

Programando el Dial e Indicador

Hay una instrucción muy útil llamadoa LOOKDOWN, y claro, es la instrucción inversa a LOOKUP.Entanto que la instrucción LOOKUP entregra un número basado en un índice, la instrucción LOOKDOWN entrega un índice basado en un número. Programa Ejemplo: SimpleLookdown.bs2

Este Programa Ejemplo demuestra el funcionamiento de la instrucción LOOKDOWN


Indicadores Digitales · Página 189

9 Meta y ejecute el programa SimpleLookdown.bs2. 9 Ejecute el programa, como es, con la variable “value” fijada en 167, y use la Terminal Debug para observar el valor del “index” 9 Trate de fijar la variable “value” con cada uno de los números de la lista de la instrucción LOOKDOWN: 7,85,19,28 9 Ejecute otra vez el programa después de cada cambio en la variable “value” y observe que valor la lista obtiene y lo coloca en la variable “index” Cuestion interesante: ¿Qué sucede si su valor es mayor que 187? Este pequeño giro en la instrucción LOOKDOWN puede causar problemas porque la instrucción LOOKDOWN no hace cambios en el “index”

' ¿Que es un Microcontrolador - SimpleLookdown.bs2 ' Debug un indice usando un valor la tabla lookup . ' {$STAMP BS2} ' {$PBASIC 2.5} value index

VAR VAR

Byte Nib

value = 167 PAUSE 1000 DEBUG ? value LOOKDOWN value, [7, 85, 19, 167, 28], index DEBUG ? index, CR DEBUG "Cambie el valor de la variable a un ", CR, "numero diferente en esta lista:", CR, "7, 85, 19, 167, or 28.", CR, CR, "Ejecute el programa modificado ", CR, "verifique que ve el número que ", CR, "que la instrucción LOOKDOWN coloca en la ", CR, "variable indice." END

A menos que le indique una diferente clase de comparación la instrucción LOOKDOWN verifica para ver si un valor es igual a una entrada de la lista. Usted también puede verificar para ver si un valor es mayor que, menor que o igual a, etc. Por ejemplo, para buscar una entrada en el que el valor de la variable “value” es menor que o igual que, use el operador <= justamente antes del primer parenteis que empieza la lista. En otras


Página 190 · ¿Qué es un Microcontrolador?

palabras, el operador regresa el índice del primer valor en la lista que hace la frase verdadera en la instrucción. 9 Modifique SimpleLookdown.bs2. sustituyendo las frases value y LOOKDOWN en lugar de los que ya existen. 9 Modifique las instrucción DEBUG para que muestre: DEBUG "Cambie la variable value a un ", CR, "numero diferente en este rango:", CR, "0 a 170.", CR, CR, "Ejecute el programa modificado y ", CR, "verifque que se ver el número que ", CR, "la instrucción LOOKDOWN coloca en la ", CR, "variable indice."

9 Experimente con diferentes valores y vea si la variable “index” muestra lo que usted esperaba. Programama Ejemplo: DialDisplay.bs2

Este Programa Ejemplo refleja la posición de la perilla del potenciometro iluminando segmentos exteriores alrededor del indicador LED de 7 segmentos como se muestra en la Figura 6-17

Figura 6-17 Mostrando la posición del potenciometro con el indicador LED de 7 segmentos

9 Meta y ejecute el programa DialDisplay.bs2 9 Gire la perilla del potenciometro y asegurese que funciona. Recuerde presionar al potenciometro en la tablilla para que asiente correctamente. 9 Cuando ejecuta el Programa Ejemplo quizá no sea tan preciso como lo muestra la Figura 6-17 Ajuste los valores en la Tabla para que el Indicador Digital muestra con mayor precisión la posición mostrada del potenciometro. ' ¿Que es un Microcontrolador - DialDisplay.bs2 ' Muestre la posición del POT usando un indicador LED de 7-segment .


Indicadores Digitales · Página 191

'{$STAMP BS2} '{$PBASIC 2.5} PAUSE 1000 DEBUG "Programa en Ejecución” index time

VAR VAR

Nib Word

OUTH = %00000000 DIRH = %11111111 DO HIGH 5 PAUSE 100 RCTIME 5, 1, time LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index LOOKUP index, [ %11100101, %11100001, %01100001, %00100001, %00000001, %00000000 ], OUTH LOOP

Funcionamiento del programa DialDisplay.bs2

Este Programa Ejemplo toma mediciones con RCTIME del potenciometro y las almacena en una variable llamada “time” HIGH 5 PAUSE 100 RCTIME 5, 1, time

La variable “time” se usa en una tabla LOOKDOWN. La tabla LOOKDOWN decide que número en la lista “time” es menor que, y luego carga el número (0 a 5 en este caso) en la variable “indice” LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index

En seguida, la variable “index” se usa en una tabla LOOKUP para escoger el valor binario a cargar en la variable OUTH. LOOKUP index, [ %11100101, %11100001, %01100001, %00100001, %00000001, %00000000 ], OUTH


Página 192 · ¿Qué es un Microcontrolador?

Su Turno – Agregando un Segmento

El programa DialDisplay.bs2 solo gira cinco de los seis segmento cuando usted gira la perilla. La secuencia de giro de los LEDs del programa DialDisplay.bs2 es E, F, A, B, C, el segmento D no se ilumina. 9 Guarde el programa DialDisplay.bs2 con el nombre DialDisplayYourTurn.bs2 9 Modifique DialDisplayYourTurn.bs2 para que haga que los seis LEDs exteriores se iluminen conforme gira el potenciometro. La secuencia deberá ser: E,F,A,B,C, y D. Sugerencia: Quite el circuito LED de su tablilla. Estaremos usando nuevamente el circuito indicador LED de 7 segmentos con otros circuitos del Capítulo 7, Actividad 4.

RESUMEN Este capítulo introdujo el indicador LED de 7 segmentos, y la lectura de un mapa de pines. Este capítulo también introdujo algunas técnicas para dispositivos y circuitos que tienen entradas paralelas. Se introdujeron las variables DIRH y OUTH como un medio para controlar los valores de los pines E/S del BASIC Stamp de P8 hasta P15. Se introdujeron las instrucciones LOOKUP y LOOKDOWN como un medio de referencia de listas de valores usados para mostrar letras y números. Preguntas

1. ¿ En un indicador LED de 7 segmentos cual es el ingrediente activo que hace que un indicador muestre datos cuando un microcontrolador senda señales high y low? 2. ¿Qué significa cátodo común? ¿Qué piensa que significa ánodo común? 3. ¿Cómo se llama al grupo de alambres que conducen señales de y hacia un dispositivo paralelo? 4. ¿Cuáles son los nombres de las instrucciones que en este capítulo se usaron para manejar listas de valores? Ejercicios

1. Escriba un comando OUTH para fijar en “high” P8, P10,P12. y P9, P11 Y P13 en “low”. Considere que todos los pines de E/S comienzan como entradas, escriba la instrucción DIRH que hará que los pines de E/S de P8 a P13 manden señales high/low mientras que P14 y P125 se configuren como entradas.


Indicadores Digitales · Página 193

2. Escriba los valores requeridos de OUTH para formar las letras: a, C, d, F, H, I, n, P, S. Proyecto

1. Deletree “FISH CHIPS And Dip” en forma permanente con su indicador LED de 7 segmentos. Haga que cada letra dure 400 ms. Soluciones

Q1. El ingrediente activo es un LED. Q2. Cátodo común significa que todos los cátodos se conectan juntos, esto es, ellos comparten un punto de conexión común. Ánodo común podría significar que todos los ánodos se conectan juntos. Q3. Un Bus en Paralelo. Q4. Las instrucciones LOOKUP y LOOKDOWN manejas listas de valores. E1. El primer paso para configurar OUTH es fijar en “1” cada posición especificada del bit como HIGH. Entonces los bits 8,10 y 12 se fijan en “1”. Luego poner “0” para cada LOW. Entonces los bists 9, 11 y 13 se fijan en “0”. Para configurar DIRH, los pines especificados 8,10,12,11, y 13 deben ponerse como salidas mandandoles un bit en “1”. 15 y 14 se configuran como entradas colocando ceros en los bits 15 y 14. El segundo paso es traducir esto a lenguage PBASIC. Bit 15 14 13 12 11 10 OUTH 0 0 0 1 0 1 OUTH = %00010101

9 0

8 1

Bit 15 14 13 12 11 10 DIRH 0 0 1 1 1 1

9 1

8 1

DIRH = %00111111

E2. La clave para resolver este problema es dibujar cada letra y observar que segmentos deben iluminarse. Coloque un 1 en cada segmento que debe iluminarse. Translade eso valores binarios OUTH. La lista de segmentos BAFG.CDE para los bits de OUTH está en la Figura 5-14.


Página 194 · ¿Qué es un Microcontrolador?

Letra a C d F H I n P S

LED Segmentos e, f, a, b, c, g a, f, e, d b, c, d, e, g a, f, e, g f, e, b, c, g f, e e, g, c all but c and d a, f, g, c, d

B A F G.C D E 11110101 01100011 10010111 01110001 10110101 00100001 00010101 11110001 01110110

OUTH Valor = %11110101 %01100011 %10010111 %01110001 %10110101 %00100001 %00010101 %11110001 %01110110

From Figura on page 172.

Common Cathode

10 9 8 7 6 G F

A B

A F

B G C

E D E D

C DP

1 2 3 4 5 Common Cathode

P1. Use el esquemático de la Figura 6-11. Para resolver este problema modifique el programa DisplayDigitsWithLookup.bs2, usando el patrón de letras que resolvió en el Ejercicio 2. En la solución las letras tienen que arreglarse como constantes para hacer el programa más intuitivo. Es correcto usar los valores binarios, pero está sujeto a mayores errores. ' ¿Que es un Microcontrolador - Ch6Prj01_FishAndChips.bs2 ' Use la tabla lookup para almacenar y mostrar los digitos ' en un indicador 7-segment. Deletree el mensaje: FISH CHIPS And dIP '{$STAMP BS2} '{$PBASIC 2.5} ' Patrones del indicador 7-Segment para crear letras A CON %11110101 C CON %01100011 d CON %10010111 F CON %01110001 H CON %10110101 I CON %00100001 n CON %00010101 P CON %11110001 S CON %01110110 space CON %00000000 index

VAR

Byte

OUTH = %00000000 DIRH = %11111111 PAUSE 1000

' Todos apagados al iniciar ' Todos los LEDs deben ser salidas ' 1 sec. Antes del 1er. mensaje

DO DEBUG "indice

' 19 caracteres por mensaje

OUTH

", CR,


Indicadores Digitales 路 P谩gina 195

"-----

--------", CR

FOR index = 0 TO 18

' 19 Caracteres por mensaje

LOOKUP index, [ F, I, S, H, space, C, H, I, P, S, space, A, n, d, space, d, I, P, space ], OUTH DEBUG " PAUSE 400 NEXT LOOP

", DEC2 index, "

", BIN8 OUTH, CR ' 400 ms entre letras


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.