Proyecto F7

Reloj con Display SIEMENS DLO7135

7 de noviembre de 2020

En el siguiente tutorial veremos como hacer un reloj con la IceZUM Alhambra y tres displays Siemens DLO7135. 

Este display inteligente es una matriz de 5x7 puntos, con un decodificador interno capaz de mostrar 96 caracteres ASCII. Se conecta directamente a la IceZUM Alhambra y los caracteres se muestran enviando los códigos hexadecimales, de acuerdo con la siguiente tabla. 

DLO7135 Dot Matrix Display

En la imagen siguiente vemos el pinout del display.

Los pines D0 a D6 se conectan a la IceZUM Alhambra. LT es para comprobar que todos los puntos de la matriz funcionan.

 VCC y LT se conectan a +5V. CE y WR son señales activas a nivel bajo, se conectan a GND.

El brillo se controla mediante las señales BL1 Y BL0 de acuerdo con la siguiente tabla:

Podríamos controlar el brillo conectando estas señales a la IceZUM, pero como vamos un poco escasos de pines en la Alhambra, los he conectado a +5V. Más información en el datasheet

Esquema

A continuación el esquema.

Sketch

A la hora de programar la IceZUM me encontré con un problema; que sólo tengo tres displays. Esto condiciona mucho el diseño del circuito, ya que lo ideal sería tener cuatro displays para mostrar la hora en el formato clásico hh:mm.

Así que opté por mostrar la hora por intervalos, es decir, primero los displays mostrarían la hora, después los minutos y por último los segundos, acompañados de la letra h, m y s según corresponda a horas, minutos y segundos. En la imagen siguiente puedes ver un ejemplo. 

¿Y por qué solo tengo tres displays? pues porque los recuperé de un viejo oxímetro.

El de la imagen funciona con displays de 7 segmentos -lo siento pero no he encontrado una foto del original- es solo para que os hagáis una idea de como era el aparato en cuestión.

Sin más rollos, vamos al lío. 

Contando segundos

La idea para programar el reloj es partir de pulsos de 1 segundo de duración, e irlos dividiendo en múltiplos de 60, así obtenemos los minutos y con 60 minutos obtenemos las horas.

Veamos un ejemplo. El corazón bombea pulsos de 1 Hz que convertimos en tics de 1 segundo. Con el primer contador contamos de 0 a 9 (unidades de segundo) que convertiremos con ayuda de una tabla y mostraremos en el display 2.

El segundo contador se incrementa cada 10 segundos (decenas de segundo) y se resetea al llegar a 6, luego 6x10=60 segundos. Con una tabla mostramos las decenas de segundo en el display 1.

El resultado queda así: 

Contando minutos

El segundo contador se satura cuando han pasado 60 segundos, usaremos este tic aplicado en puerta OR para contar minutos. El pulsador en la otra entrada de la puerta OR también aplica un tic al contador, incrementando los minutos en 1 unidad, así podemos ajustar los minutos del reloj.

Lo ponemos todo junto y con ayuda de dos multiplexores alternamos entre minutos y segundos en los displays. 

Lo que veremos en los displays será un contador de segundos y minutos alternando cada 10 segundos. 

Contando horas

Con las horas procedemos de igual manera. Utilizaremos el Overflow del cuarto contador (que se satura cada 60 minutos) para contar horas.

También añadimos un pulsador para ajustar la hora aplicando tics en el contador de unidades de hora.

Un tercer contador resetea los contadores de unidades y decenas cuando han pasado 24 horas.

Para mostrar horas, minutos y segundos necesitamos un multiplexor triple. 

El contador se utiliza para generar las señales de selección de los multiplexores y alternar cíclicamente entre horas, minutos y segundos en los displays.

Lo ponemos todo junto y ya tenemos nuestro flamante Reloj con una FPGA ¡qué pasada! 

Lo subimos a la IceZUM y listo. En la siguiente animación puedes ver el resultado. Los displays muestran la hora, después los minutos y por último los segundos, en intervalos de tiempo seleccionados con la constante tON del contador que selecciona los multiplexores.

Todos los ejemplos de Icestudio están disponibles para descargar al final de la página, así como las imágenes en alta resolución.

Para verlo mejor, he convertido los diferentes contadores en bloques.

Bloque segundos 

Bloque minutos 

Bloque horas 

Bloque multiplexor 7 bits x 3 entradas 

RTC con bloques 

Eso es todo, espero que os haya gustado.

¡Hasta pronto!

Links

Tutoriales Obijuan Electrónica Digital con FPGA

Consigue tu IceZUM Alhambra en Alhambra Bits

Iconos SVG cortesía de svgrepo 

Descarga los ejemplos de IceStudio y las imágenes aqui