Sei sulla pagina 1di 21

INSTITUTO POLITCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA


EN INGENIERA Y TECNOLOGAS

AVANZADAS

PROGRAMACIN DE SISTEMAS EN TIEMPO REAL


Por el Prof. M. en C. DAVID ARTURO GUTIRREZ BEGOVICH

INTEGRANTES DEL EQUIPO:


ALVAREZ GALVN LUIS ALBERTO PIZANO ALANIS JOS DE JESS ZERN HERNNDEZ ALEJANDRO RAL

Prctica No. 04
Manejo de Tablas de Datos :
Contadores Electrnicos Digitales

GRUPO: 4BV1
Fecha Realizacin: Abril 08, 2010 Fecha Entrega (reporte): Abril 15, 2010

Contadores Electrnicos Digitales

Manejo de Tabla de Datos.

Prctica No. 04

Objetivos
Durante el desarrollo y al trmino de sta prctica, el estudiante de ingeniera podr: Entender el concepto de tablas de datos, y sus aplicaciones en la electrnica digital. Desarrollar cdigos de programacin en ensamblador de una subrutina de tablas de datos. Disear un circuito electrnico de un contador digital utilizando 4 display de 7 segmentos y el microcontrolador PIC16F877A tendr control total sobre ellos. Desarrollar e implementar un cdigo de programacin en ensamblador (utilizando MPLABIDE) para que el microcontrolador acte como un contador digital (ascendente y descendente). Utilizar las subrutinas anti-rebotes y subrutinas de retardo para que el contador se incremente o decremente en 1 cada segundo. Implementar un sistema en tiempo real con tiempos de ejecucin como contador lo ms preciso y exacto posible.

Introduccin
En este reporte se expondr cmo se utiliza el direccionamiento de un programa, en este caso ser indirecto y directo, tambin se explicar cmo se manejan e implementan las tablas de datos junto con las subrutinas de retardo para disear un cdigo de programacin que se grabar en el

PIC16F877A y se implementar en un sistema de tiempo real de conteo en el cul el microcontrolador actuar como el cerebro de ste para que realice la tarea de un contador digital de 4 cifras empleando, para ello, 4 display de

siete segmentos y entre otros materiales y elementos electrnicos ms para su funcionamiento ptimo en cuestin electrnica.

Por supuesto, se analizar el cdigo diseado y se tratar de detallar el funcionamiento de dicho cdigo ensamblado mediante diagramas de flujo y simulacin con MPLAB SIM y las ventanas para auxiliar la comprensin del modo en el que operar el sistema de tiempo real de conteo.

Tambin incluiremos una liga (o link) de una direccin web en el que subiremos un video de nuestro sistema contador digital de 4 dgitos y su funcionamiento.

totalmente de bastones, mientras que la densidad de conos es mxima.

Marco Terico
En el diseo, gestin e implementacin de sistemas en tiempo real, es bastante frecuente verse necesitado de contabilizar eventos o procesos y, por tanto, se requiere utilizar un contador, en nuestro caso se tratar de un contador electrnico digital. Por otra parte, en nuestros das estamos rodeados de dispositivos que disponen de algn tipo de contador digital, incluso en la mayora de los electrodomsticos vienen equipados con uno.

En la fvea, los conos son de tres tipos diferentes dependiendo del tipo de radiacin a la que sean sensibles. Estos conos permiten realizar la percepcin cromtica de las imgenes. Los bastones son los encargados de la luminancia, o visin monocroma (de blanco y negro). Este hecho, junto con la mayor sensibilidad de los bastones, explica el porqu, ante bajos niveles de iluminacin, se dejan de percibir los colores, y la imagen que nos queda es en blanco y negro. Los conos y los cilindros estn inmersos en un medio lquido que toma instantneamente color blanco ante la presencia de fotones, volviendo ms lentamente a su estado inicial cuando se produce el cese de fotones en la fuente emisora. Este retardo en la vuelta al estado inicial, se admite que es

Un contador digital, bsicamente consta de una entrada de impulsos que se encarga de conformar (escuadrar) las seales, de manera que el conteo de los pulsos no sea alterado por seales no deseadas, las cuales pueden falsear el resultado final. Los contadores tradicionales emplean un decodificador de pulsos para realizar la tarea de conteo. Estos impulsos son acumulados en un contador propiamente dicho cuyo resultado, se presenta mediante un visor que puede estar constituido por una serie de sencillos dgitos de siete segmentos o en su caso mediante una sofisticada pantalla de plasma. En nuestro el caso se pretende engaar al ojo humano, aprovechando la forma en la que el ojo percibe las imgenes, todo lo que se sabe acerca de la recepcin de una imagen por el ojo, y la interpretacin que de ella realiza el cerebro, se ha obtenido de una manera experimental estudiando y comparando el comportamiento del ojo ante los estmulos a que era sometido. Examinando al microscopio la superficie de la retina se comprueba que la densidad de los conos es mucho mayor que la de los bastones en una zona situada en el extremo opuesto de la pupila, denominada mancha amarilla. La parte central de esta zona, denominada fvea, est desprovista

debido al proceso inverso de la reaccin fotoqumica que se produce ante la presencia de fotones y tiene una duracin de, 50 x 10-3 seg (tiempo aproximado). Se ha hablado del tiempo que le toma al ojo y a todo su sistema el procesar una imagen, ahora, con la intencin de aclarar mas el por qu este tiempo nos ayudar es conveniente hablar de los cuadros por segundo (o frames per second). Se habla de un cuadro a una imagen particular dentro de una sucesin de imgenes que componen una animacin. La continua sucesin de estos fotogramas producen a la vista la sensacin de movimiento, fenmeno dado por las pequeas diferencias que hay entre cada uno de ellos. La frecuencia es el nmero de fotogramas por segundo que se necesitan para crear movimiento. Su frmula es la siguiente:

Se expresa en fotogramas o frames por segundo (fps) o en (Hz). Para conseguir que el sistema visual humano vea movimiento hemos de tener en cuenta que:

Para no observar parpadeo se ha de tener una frecuencia de fotograma < 50 Hz. La discontinuidad de movimiento tiene una frecuencia de fotograma < 1215 Hz.

Una de las mayores aplicaciones del manejo de la tabla de datos, es la resolucin de tablas de verdad grabadas en ROM. En la seccin de desarrollo de ste reporte, se mostrar la aplicacin de las tablas en nuestro cdigo la cual se us principalmente para activar los segmentos de

Las frecuencias de fotograma de algunos de los sistemas ms conocidos son las siguientes:

un display de siete segmentos. En este cdigo se apreciar como la tabla est formada por una serie de datos ordenados secuencialmente, de tal

Cine mudo = 1618 Hz. Cine = 24 Hz.

forma que para leer uno de ellos se le suma el valor del registro W al contador del programa mediante la instruccin de salto indexado addwf PCL,F, posicionndolo en el valor requerido y extrayendo el dato de la tabla con la instruccin retlw. Los valores de las constantes estn grabados y no se puede alterar. La nica manera de alterar una tabla ROM es volver a grabar el microcontrolador. No se debe confundir las tablas en ROM con las tablas de datos en la memoria RAM, que contienen variables almacenadas

Para el contador, no se pretende dar una sensacin de movimiento, sino que se pretende dar una sensacin de continuidad, alcanzando una frecuencia en la activacin de los leds del 7 segmentos que d la impresin de una imagen esttica.

Nosotros no emplearemos ni un decodificador ni un pulso de seal para generar el conteo, si no que emplearemos la eficiencia y potencia de un microcontrolador programado por nosotros para que realice dicha tarea. Como bien se indica en el ttulo de ste reporte de prctica, se manipularan las tablas de datos para lograr dicho fin.

en los registros de la memoria de datos y que puede alterarse.

Tambin, para simplificar el uso de las instrucciones retlw el ensamblador MPASM facilita la directiva DT (Define Tabla) que sustituye el empleo repetitivo de muchas instrucciones retlw. Su sintaxis es: DT <expr> [,<expr>,,<expr>]

Una tabla de datos en la memoria ROM de programa es una lista de constantes que el programa puede recoger mediante la instruccin retlw.

Esta directiva genera durante la fase de ensamblado instrucciones Esta instruccin (Return with Literal in W), funciona de forma similar que return, produce el retorno de una subrutina pero con un valor en el registro W. Dicha caracterstica es de suma importancia cuando se desea acceder a tablas de datos en la memoria de programa. El formato de esta instruccin es: RETLW K retlw, una instruccin por cada <expr>. Cada carcter de una cadena es almacenado en su propia instruccin retlw.

Donde K es el valor de la constante que se carga en el registro de trabajo W.

Material
Para el desarrollo de sta prctica se utilizaron los siguientes materiales y componentes electrnicos.

Desarrollo
1. 2. Se arm el circuito mostrado en la figura 4.1 y figura 4.2 (fotos). Se desarrollo un cdigo de programacin en ensamblador cuya funcin en tiempo real sea la de un contador del tipo ascendente y descendente.

1 1 2 1

PIC16F877A Cristal de cuarzo a 4 MHz Condensadores cermicos de 22 pF. Condensador cermico de 100 nF y electroltico de 1000 F (necesarios para filtrar nuestra alimentacin elctrica o fuente)

3.

El archivo prac04.asm se ensambl en MPLABIDE para generar el archivo prac04.hex, el cual se grabar ste en el

microcontrolador PIC utilizando un programador para dichos microcontroladores. 4. Se implementa dicho programa en el circuito electrnico armado y se midieron los tiempos al momento de cada incremento o decremento en el conteo.

1 1 1 6 8 4 4 4 1

DIP-SWITCH de 4 vas o polos. PUSH BUTTON para RD7 PUSH BUTTON para el reset. Resistencias de 10 K a watt Resistencias de 150 a watt Resistencias de 4.7 K Transistores NPN BC547C Display Ctodo Comn Tabla de prototipos Puentes para cablear 1.

DESCRIPCIN DE LA FUNCIN DEL PROGRAMA.

Al alimentar elctricamente con una fuente fija regulada a 5 VDC, el microcontrolador guardar la informacin del estado del bit menos significativo que est en el DIP-SWITCH, en el bit RD0 del PORTD, ya que ste ser el que determinar qu tipo de conteo realizar nuestro sistema, es decir, realice un conteo en ascenso (RB0 = 0) o un conteo en descenso (RB0 = 1).

1 1

Fuente de Voltaje Fija de 5 VDC Programador de microcontroladores PIC 2.

Luego, se introducirn los 4 dgitos para formar un nmero de 4 cifras, ya que a partir de l, se iniciar el conteo. Primero, se introduce por el DIP-SWITCH un dgito binario, que est comprendido entre 0 y 9 (el DIP estar del bit RD0 al RD4 del

PORTD, siendo este ltimo el bit ms significativo); cuando est listo se oprimir el interruptor PUSH BUTTON del bit RD7 (es

Figura 4.1 Diagrama elctrico del circuito que se mont para el desarrollo de sta prctica

Figura 4.2 Circuito que se mont para el desarrollo de sta prctica

necesario utilizar las subrutinas anti-rebotes y que no haga la funcin siguiente si no est soltado el interruptor PUSH BUTTON) y cuando se suelte guardar el valor del dgito en algn registro de memoria. ste valor, se mostrar en decimal en el DIPLAY donde se posicionan las UNIDADES, (recordar que hay que activar el transistor para que entre en saturacin y de esta manera activar el comn del DISPLAY). 3. Repetimos el paso 2 para posicionar el valor que se ingres a travs del DIP y se posicionar en el DISPLAY de las DECENAS. As como los dgitos de las CENTENAS y UNIDADES DE MILLAR, para iniciar ahora s el conteo a partir de dicha cantidad ingresada. 4. Despus de haberse introducido dicha cantidad, se proceder a verificar el estado del bit menos significativo del DIP-SWITCH (RD0) al inicio cuando se aliment elctricamente el PIC, para determinar el tipo de conteo: ASCENDENTE o DESCENDENTE. 5. Si RD0 = 0 ser ASCENDENTE. Se incrementar el contador cada segundo (lo ms exacto posible en cuanto a tiempo) y si llega dicho conteo a ser la mxima cifra, 9999, entonces se detendr en dicho valor, mostrndolo. 6. Si RD0 = 1 ser DESCENDENTE. Se decrementar el contador cada segundo (con exactitud aproximada) y si llega dicho conteo a se la mnima cifra, 0000, entonces se detendr en dicho valor mostrndolo. A continuacin se mostrar el diagrama de flujo del programa ensamblado. Acerca del tiempo de 1/40 de segundo, dicho intervalo se eligi debido a que los ciclos de instrucciones al momento de programar influyen considerablemente en el tiempo de ejecucin que queremos lograr. En este caso, cada cifra ser mostrada en un tiempo de 1/160 de segundo, si bien, es una duracin muy pequea [tome en cuenta en que al momento de ir mostrando la cifra se tiene que activar el transistor correspondiente al dgito(s) incrementado(s) o decrementado(s)].

Es necesario aclarar que para hacer el efecto de contador, es decir, a que los dgitos dieran la apariencia de estar fijos, engaando as a la vista humana, debido a la velocidad de captacin y retencin de imgenes a travs de sus ojos, se realiz todo el proceso de conteo en un tiempo estimado de 1/40 de segundo, o bien, el tiempo en que deben ser mostradas las 4 cifras en los display, para dar efecto de que los nmero estn fijos y que slo va incrementndose o decrementndose cada dgito en caso de ser 9 o 0, respectivamente, ir cambiando la siguiente cifra.

INICIO

CONFIGURACIN DE PUERTOS MEDIANTE DIRECCIONAMIENTO INDIRECTO


NO

INGRESAR UN DGITO ENTRE 0 Y 9 EN BINARIO

INGRESAR UN DGITO ENTRE 0 Y 9 EN BINARIO

INGRESAR UN DGITO ENTRE 0 Y 9 EN BINARIO

PRESIONAR PUSH EN RD7

NO

PRESIONAR PUSH EN RD7

NO

PRESIONAR PUSH EN RD7

PORTB COMO SALIDA (PARA CONTROLAR LOS 4 DISPLAY DE 7 SEGMENTOS)

PUSH PRESIONADO? RD7=1? SI

PUSH PRESIONADO? RD7=1? SI RUTINA ANTIREBOT. 30ms SI


SI

PUSH PRESIONADO? RD7=1? SI RUTINA ANTIREBOT. 30ms

BITS RC0 A RC3 DE PORTC COMO SALIDA (PARA CONTROL DE LOS TRANSISTORES PARA ACTIVAR DISPLAYS

RUTINA ANTIREBOT. 30ms SI

NO

PORTD COMO ENTRADA (PARA CONTROL DE DIPSWITCH DE 4 VAS) Y PARA EL PUSH EN RD7

SOLTAR PUSH EN RD7

NO

SOLTAR PUSH EN RD7

NO

SOLTAR PUSH EN RD7

PUSH SOLTADO? RD7=0? SI

PUSH SOLTADO? RD7=0? SI RUTINA ANTIREBOT. 30ms

PUSH SOLTADO? RD7=0? SI RUTINA ANTIREBOT. 30ms

LECTURA DEL PORTD Y GUARDAR LA INFORMACIN EN TIPODCONTEO

RUTINA ANTIREBOT. 30ms

WREG = 0X09 PARA Q NO EXCEDAN DEL DGITO 9

LECTURA DEL DIP SWITCH PARA GUARDAR LA UNIDAD INGRESADA EN UN REGISTRO (UNIDADES)

LECTURA DEL DIP SWITCH PARA GUARDAR LA DECENA INGRESADA EN UN REGISTRO (DECENAS)

LECTURA DEL DIP SWITCH PARA GUARDAR LA CENTENA INGRESADA EN UN REGISTRO (CENTENAS)

UNIDADES > 9

DECENAS > 9

CENTENAS > 9

LIMPIAR PORTB Y PORTC

NO MOSTRAR EN EL DISPLAY DE UNIDADES EL DGITO INGRESADO EN DECIMAL

NO MOSTRAR EN EL DISPLAY DE DECENAS EL DGITO INGRESADO EN DECIMAL

NO MOSTRAR EN EL DISPLAY DE CENTENAS EL DGITO INGRESADO EN DECIMAL

X INICIO CONT. ASCENDENTE NO

UMILLAR=UMILLAR+1

INGRESAR UN DGITO ENTRE 0 Y 9 EN BINARIO

NO PRESIONAR PUSH EN RD7

CARGAR 0X28 EN REG3 (No. de veces que se repetir cada vez que se haga el conteo, esto para mantener la cifra en los 4 disp.

WREG=UMILLAR COMPARA UMILLAR CON 0X0A

MOSTRAR EL DGITO DE UMILAR EN EL RESPECTIVO DISPLAY PORTB=WREG

NO

PRESIONAR PUSH EN RD7

PUSH PRESIONADO? RD7=1? SI RUTINA ANTIREBOT. 30ms

DESACTIVAR TODOS LOS TRANSISTORES (PORTC = 0X00)

SON IGUALES? ACTIVAR EL TRANSISTOR PORTC=0X08 SI ACTIVA TODOS LOS TRANSISTORES PORTC=0XF Y MUESTRA 9999

WREG=UNIDADES

NO

PUSH PRESIONADO? RD7=1? SI RUTINA ANTIREBOT. 30ms SI

SUBRUTINA DE 1/160 SEGUND0S

MOSTRAR EL DGITO DE UNIDADES EN EL DISPLAY CORRESPONDIENTE PORTB = WREG DECREMENTA REG3=REG3-1 ACTIVAR EL TRANSISTOR, PORTC = 0X01

FIN CONT. ASCENDENTE

NO
NO SOLTAR PUSH EN RD7

SOLTAR PUSH EN RD7

REG3=0? SUBRUTINA DE 1/160 SEGUNDOS SI UNIDADES = UNIDADES + 1

WREG=DECENAS

PUSH SOLTADO? RD7=0? SI RUTINA ANTIREBOT. 30ms

PUSH SOLTADO? RD7=0? SI RUTINA ANTIREBOT. 30ms

COMPARA: UNIDADES CON 0X0A

MOSTRAR EL DGITO DE DECENAS EN EL DISPLAY CORRESPONDIENTE PORTB = WREG ACTIVAR EL TRANSISTOR PORTC = 0X02

SON IGUALES? SI LIMPIA REG. UNIDADES DECENAS = DECENAS+1 NO

NO

SUBRUTINA DE 1/160 SEGUNDOS

COMPARA: DECENAS CON 0X0A

LECTURA DEL DIP SWITCH PARA GUARDAR LA UNIDAD DE MILLAR INGRESADA EN UN REGISTRO (UMILLAR)

VERIFICAR EL ESTADO DEL BIT0 DEL REGISTRO TIPODCONTEO

SON IGUALES? WREG = CENTENAS SI LIMPIA REG. DECENAS MOSTRAR EL DGITO DE CENTENAS EN EL DISPLAY CORRESPONDIENTE NO

CENTENAS = CENTENAS+1

UMILLAR > 9

NO MOSTRAR EN EL DISPLAY DE U.MILLAR EL DGITO INGRESADO EN DECIMAL

BIT 0 DEL REGISTRO TIPODCONTEO = 0?

ACTIVAR EL TRANSISTOR PORTC=0X04

COMPARA: CENTENAS CON 0X0A

NO SI

SUBRUTINA DE 1/160 SEGUNDOS

SON IGUALES? SI LIMPIA CENTENAS

CONTEO ASCENDENTE

CONTEO DESCENDENTE

X INICIO CONT. DESCENDENTE NO

UMILLAR=UMILLAR-1 CARGAR 0X28 EN REG3 (No. de veces que se repetir cada vez que se haga el conteo, esto para mantener la cifra en los 4 disp. WREG=UMILLAR COMPARA UMILLAR CON 0X0A

De acuerdo al diagrama de flujo anterior, se procedi a escribir y editar un cdigo de programacin en ensamblador utilizando el software de desarrollo MPLAB.

MOSTRAR EL DGITO DE UMILAR EN EL RESPECTIVO DISPLAY PORTB=WREG

DESACTIVAR TODOS LOS TRANSISTORES (PORTC = 0X00)

SON IGUALES? ACTIVAR EL TRANSISTOR PORTC=0X08 SI ACTIVA TODOS LOS TRANSISTORES PORTC=0XF Y MUESTRA 0000

WREG=UNIDADES

NO

SUBRUTINA DE 1/160 SEGUND0S

MOSTRAR EL DGITO DE UNIDADES EN EL DISPLAY CORRESPONDIENTE PORTB = WREG DECREMENTA REG3=REG3-1 ACTIVAR EL TRANSISTOR, PORTC = 0X01

FIN CONT. DESCENDENTE

REG3=0? SUBRUTINA DE 1/160 SEGUNDOS SI UNIDADES = UNIDADES - 1

WREG=DECENAS

COMPARA: UNIDADES CON 0XFF

MOSTRAR EL DGITO DE DECENAS EN EL DISPLAY CORRESPONDIENTE PORTB = WREG ACTIVAR EL TRANSISTOR PORTC = 0X02

SON IGUALES? SI UNIDADES = 0X09 DECENAS = DECENAS-1 NO

NO

SUBRUTINA DE 1/160 SEGUNDOS

COMPARA: DECENAS CON 0XFF

SON IGUALES? WREG = CENTENAS SI DECENAS = 0X09 MOSTRAR EL DGITO DE CENTENAS EN EL DISPLAY CORRESPONDIENTE ACTIVAR EL TRANSISTOR PORTC=0X04 NO

CENTENAS = CENTENAS-1

COMPARA: CENTENAS CON 0X0A

SUBRUTINA DE 1/160 SEGUNDOS

SON IGUALES? SI CENTENAS = 0X09

*LIGA DEL VIDEO:


http://www.youtube.com/watch?v=gHTCzXci-08

nmero desplegado fueran de 1 segundo aproximadamente. Cumpliendo asi el circuito con su funcin de contador.

*CONCLUSIONES: Este contador digital de 0


a 9999 pudo funcionar de esa forma ya que con la ayuda de subrutinas de tiempo se logr engaar al ojo humano, se le engao aprovechando el tiempo que le toma al sistema completo del ojo percibir una imagen. Se hizo prender a los leds a una frecuencia tan rpida que el ojo no lo pudiera percibir dando as la impresin de una imagen fija, se manipularon los displays con los transistores para que solo se mostrar la secuencia de iluminacin de los leds deseados, de igual forma en este proceso se utilizaron las subrutinas de tiempo, los tiempos de las subrutinas se manipularon de tal manera que los tiempos entre cada

*REFERENCIAS:
Bibliografa (Cibergrafia): OJO HUMANO.

http://www.siste.com.ar/serv021.htm

Potrebbero piacerti anche