Thursday, December 11, 2008

display de siete segmentos y el microcontrolador Pic


En mi "curso" de microcontroladores estoy avanzando sin duda. La última clase vimos como utilizar display de LCD y de siete segmentos, los cuales nos permiten mostrar información que nos manda el microcontrolador de una manera más legible para los seres humanos. Finalmente el microcontrolador solamente manda ceros y unos lógicos a través de sus patitas de salida, por lo cual es responsabilidad del programador hacer que esta información le haga algún sentido al usuario final.

Eric, mi maestro, nos mostró la teoría de cómo funcionaban los display de siete segmentos y del cómo conectarlos para que se pudiesen "interfacear" con el microcontrolador. El ejercicio propuesto fue hacer un contador -primero del cero al nueve- usando un solo display de siete segmentos. La tarea fue fácil. No obstante, la segunda encomienda ya tuvo más dificultades. Se trataba de hacer un contador que contaba de 00 a 99. Aquí el problema es que las líneas de salida del controlador (siete) que van hacia el display de siete segmentos (como si fuesen siete LEDs), estaba conectando ambos display en paralelo. Así, la pregunta era ¿cómo hacer para que dos displays diferentes observasen valores diferentes? La solución fue multiplexarlos, es decir, a través de una para del controlador le indicamos qué display está activo y cual no. De hecho un asunto curioso es al hacer esto, cuando pintamos en un display, se borra el otro. entonces surge la pregunta ¿cómo hacer para ver los dos valores al mismo tiempo?

El truco es desplegar cada valor -en cada display- lo suficientemente rápido para que el ojo humano no pueda discernir si se está usando el display uno o el dos, en el caso del ejercicio.

El programa corriendo, que puede verse en el video más abajo, es más lento en su despliegue para que se vea el efecto del sistema que va de un display al otro. Haciendo que el sistema muestre los números cada 10 milisegundos, por ejemplo, el efecto final al ojo humano es que estamos desplegando los dos valores siempre y al mismo tiempo.



El manejo de los microcontroladores es muy interesante. Para ciertos procesos, en donde por ejemplo, hay que desplegar información y seguir procesando, el chip tiene acceso a las interrupciones, que cortan lo que hace el programa para dar servicio a la interrupción y después continuar en donde se quedó. Esto permite cierta interactividad a nivel multitareas.

En resumen, aparte de aprender montones de cosas nuevas, veo un gran potencial en estos microcircuitos.

2 comments:

R. Daneel Olivaw said...

Bastante interesante, a medio camino en la universidad hubo un par de materias donde realizábamos cosas con circuitos integrados que denominamos compuertas lógicas, donde entre otras cosas realizábamos de una manera visual con leds las tablas de verdad y demás aspectos teóricos. Una de las cosas que mas satisfacción me daba fue cuando teníamos que armar contadores con displays. Todo el armado teórico lo realizábamos con mapas de Karnaugh, lo probábamos con simuladores y por ultimo armábamos en las tablas de circuitos todo el entramado para obtener el resultado. Recuerdo mi practica final fue un contador ascendente y descendente, cada display mostraba los números y dependiendo de un interruptor debían intercambiar el orden en que aparecían los números. Saludos, siempre leo tu blog.

Morsa said...

Hola Daneel,

Gracias por leerme. La verdad es que todo eso que hacías, que sin duda ilustra y enseña mucho, ya está superado usando microcontroladores. Si se tiene experiencia en programación (BASIC, Pascal, C), las cosas se simplifican bastante. La realidad es que el hardware (el microcontrolador Pic) hace maravillas, es realmente una computadora completa dentro de un chip.

Creo que las aplicaciones son muchas y variadas.

Saludos
Manuel