Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
AVANZADAS
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
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.
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
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.
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.
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.
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
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
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
NO
NO
BITS RC0 A RC3 DE PORTC COMO SALIDA (PARA CONTROL DE LOS TRANSISTORES PARA ACTIVAR DISPLAYS
NO
PORTD COMO ENTRADA (PARA CONTROL DE DIPSWITCH DE 4 VAS) Y PARA EL PUSH EN RD7
NO
NO
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
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.
NO
SON IGUALES? ACTIVAR EL TRANSISTOR PORTC=0X08 SI ACTIVA TODOS LOS TRANSISTORES PORTC=0XF Y MUESTRA 9999
WREG=UNIDADES
NO
MOSTRAR EL DGITO DE UNIDADES EN EL DISPLAY CORRESPONDIENTE PORTB = WREG DECREMENTA REG3=REG3-1 ACTIVAR EL TRANSISTOR, PORTC = 0X01
NO
NO SOLTAR PUSH EN RD7
WREG=DECENAS
MOSTRAR EL DGITO DE DECENAS EN EL DISPLAY CORRESPONDIENTE PORTB = WREG ACTIVAR EL TRANSISTOR PORTC = 0X02
NO
LECTURA DEL DIP SWITCH PARA GUARDAR LA UNIDAD DE MILLAR INGRESADA EN UN REGISTRO (UMILLAR)
SON IGUALES? WREG = CENTENAS SI LIMPIA REG. DECENAS MOSTRAR EL DGITO DE CENTENAS EN EL DISPLAY CORRESPONDIENTE NO
CENTENAS = CENTENAS+1
UMILLAR > 9
NO SI
CONTEO ASCENDENTE
CONTEO DESCENDENTE
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.
SON IGUALES? ACTIVAR EL TRANSISTOR PORTC=0X08 SI ACTIVA TODOS LOS TRANSISTORES PORTC=0XF Y MUESTRA 0000
WREG=UNIDADES
NO
MOSTRAR EL DGITO DE UNIDADES EN EL DISPLAY CORRESPONDIENTE PORTB = WREG DECREMENTA REG3=REG3-1 ACTIVAR EL TRANSISTOR, PORTC = 0X01
WREG=DECENAS
MOSTRAR EL DGITO DE DECENAS EN EL DISPLAY CORRESPONDIENTE PORTB = WREG ACTIVAR EL TRANSISTOR PORTC = 0X02
NO
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
nmero desplegado fueran de 1 segundo aproximadamente. Cumpliendo asi el circuito con su funcin de contador.
*REFERENCIAS:
Bibliografa (Cibergrafia): OJO HUMANO.
http://www.siste.com.ar/serv021.htm