# Reloj digital con programación de hora



## seth9008 (Abr 18, 2011)

Hola, desearia que me pudieran ayudar.
Resulta que tengo que diseñar un reloj digital HH/MM/SS, pero con 2 opciones extra: programar el reloj (avanzar hora y minuto, aunque no es necesario que el reloj pare en este caso, solo que sea sensible a si "programar hora" está activado y ahí si puedo modificar la hora con 2 botones extra) y programar una alarma (ahí si para el reloj.....y en la hora en que se quede se guarda como hora de alarma, no es necesario un boton de "guardar alarma"), si ninguno se activa, los botones de aumento de hora no hacen nada.

EL caso es (ya estaba diseñando el control de las horas) que se tiene que diseñar a partir de una carta ASM..(lo cual no tengo ni la más mínima idea de como hacerlo)

Agradecería que me pudieran hechar la mano (al menos solo la carta ASM)


----------



## Chico3001 (Abr 18, 2011)

Que es una carta ASM?? no sera que te refieres a un programa en ASM? por que si es asi entonces estas hablando de programacion con microcontroladores...


----------



## seth9008 (Abr 18, 2011)

no, el lenguaje (o cartas) ASM es una forma de interpretar un circuito secuencial en algo parecido a un diagrama de fujo y que sirve para construir el control de dicho circuito secuencial. por ejemplo:

------------------------------
l                                         l
l             Estado 1                l<-----   
------------------------------         l
                  l                                l
                  l                                l
                  l                                l
                  "             0                 l
             "    x    "-------------------
                  "
                  l 1
                  l
                  l
                  V
------------------------------
l                                         l
l             Estado 2                l  
------------------------------ 
vamos del estado 1 al 2, pero nuestra entrada excitadora "x" define si pasamos o no al estado 2, dependiendo si se usa el método One-Hot o el de MUX se interpreta el avanze de bloques con lógica combinacional
(el tema se llama "Método de circuitos lógico secuenciales síncronos por método One-Hot y por método MUX a partir de cartas ASM")

ASM = Algoritmic State Machine

una descripción de lo que es una carta ASM

http://www.dte.us.es/tec_inf/itig/etc2/material/ETC2_0304_sistemas2-asm.pdf


----------



## Chico3001 (Abr 19, 2011)

Ya... de este lado se le conoce como diagrama de Flujo

Y para irlo haciendo solo necesitas ir definiendo las preguntas y acciones que te llevaran al resultado deseado, por ejemplo: "boton 1 activado?" si->incrementar hora, no->revisar boton 2


----------



## seth9008 (Abr 23, 2011)

Ok de acuerdo (perdon por "irme" un rato del tema....otras cosas, mucha tarea) el caso es este
*Reloj*

tengo 3 unidades de conteo, dos de 0-59 y una de 0-11 (de 11:59 pasa a 00:00). Hechas a base de 2 74ls90, y cada una unidad tiene solo un CLK (entre los dos 7490 de cada unidad, funcionan de forma asíncrona)

la primera unidad cuenta los segundos y su entrada CLK1 viene de un astable con el 555. Cuando llega a contar un minuto tenemos un pequeño pulso que avisa que se cumplió un minuto(le llamo one_min)

La segunda cuenta los minutos, pero en su entrada CLK2 funciona de forma asincrona de acuerdo al bloque de segundos, pero tambien aumenta de forma manual (no es necesario que el reloj pare) si "Programar hora" está activado y "aumentar minutos" se activa (es un push button para generar solo un pulso) de otra forma solo le hace caso a los pulsos de los segundos. Cuando llega a una hora genera otro pequeño pulso que avisa la hora cumplida (le llamo one_hrs)

La tercera unidad cuenta las horas, de 0-11, teniendo así un reloj en formato 12hrs. Funciona exactamente igual que la unidad de minutos, tiene su CLK3 que se activa de forma asincrona respecto a la unidad de minutos. Tambien CLK3 responde si "Programar hora" se activa y aumenta si le mendamos pulsos con "aumentar hora"(otro push button), de otra forma solo le hace caso a los pulsos de los minutos

Así ya tengo el reloj de forma HH/MM/SS sin nada mas que sus entraas asíncronas

*Alarma*

Del otro lado, otra unidad de 0->59 y otra de 0->11 funcionan para generar la hora a la cual sonará la alarma.

La unidad de minutos (la alarma solo tiene formato HH/MM) tiene su entrada CLK4 que solo se activa si "Programar Alarma" está activado y aumenta si mandamos pulsos de "aumentar minutos" (si, el mismo push button que se usa para aumentar minutos en el reloj)

La unidad de horas tiene su entrada CLK5 y aumenta si "Programar Alarma" esta activo y le mandamos pulsos con "aumentar hora" (el mismo en el reloj) 

Estos valores (tenemos 8 valores binarios por cada unidad de conteo, osea 4 por cada contador) los guardamos en un contador PIPO de 8 entradas (74ls273) (en total 2 registros, uno para los minutos y uno para las horas). Cada registro guarda los valores de entrada de la unidades contadoras y las carga cada vez que activamos sus respectivos CLK´s, pero esos CLK´s los asocio a las entradas CLK4 y CLK5 respectivamente (así aumenta el valor en los contadores y se guardan en los registros cada vez que aumento la hora. Aunque tengo en la salida del registro el valor anterior, i.e. en el contador tengo 5 y en la salida del registro tengo 4, solo me interesa el valor a la salida del registro, asi que ese detalle puede pasar)

Cada valor en el registro se compara con las salidas de las unidades de hora y minutos del reloj en si (i.e. las 8 salidas del registro de minutos se compara con las 8 salidas de la unidad de minutos), así cuando los minutos y la hora sean iguales se activa una señal (la llamo "alarma") que activa el dispositivo de alarma (he pensado en un monoestable o algo así, es lo de menos)

*Consideraciones* 

-El reloj es formato HH/MM/SS
-cuando programo alarma el reloj sigue su cuenta, para eso es la entrada DISPLAY
-Si activo "Programar hora" y "programar alarma" el reloj no hace nada, solo sigue su suenta
-Al activar "Programar alarma" se muestra la hora de alarma en los mismos display´s*

*Para esto tengo pensado  MUX 2-1 para decidir que muestro en los display´s (la entrada de desición la he llamado DISPLAY y depende de si "Programar alarma" está activada)

El problema que tengo es como, mediante diagrama de fujo (carta ASM) diseño el control del reloj, ya que depede de 

*Entradas*
-CLK2, CLK3 (en el reloj)  
-DISPLAY
-CLK4, CLK5 (en la alarma)

*Salidas*
-one_min
-one_hrs
_Externas o Entradas de Excitación_
-Programar hora
-Programar alarma
-aumentar minutos
-Aumentar hora

y se supone que el control de este sistema tiene que ejecutarse mientras dura el pulso de CLK1 para que funcione bien

El problema aqui es elaborar el Digrama de Flujo

agradecería que me pudieran hechar la mano con eso (y decir si estoy bien o alo va mal)

Los IC que estoy pensando usar son

-74ls90   (contador de décadas)
-74ls48   (BCD a 7 segmentos de Cátodo común)
-74ls688 (comparador de 8 bits)
-74ls273 (registro PIPO de 8 bits)
-74ls157 (MUX 8 entradas (bloque A y B) 4 salidas con entrada de desición A´/B.....0 muestra A, 1 muestra B)
-And´s y OR´s de 2 y 3 entradas


----------



## seth9008 (May 1, 2011)

ninguna sugerencia????


----------



## MrCarlos (May 1, 2011)

Hola seth9008

Acá está un reloj digital que podría servirte.

En el mensaje #61 de guero_j25_ https://www.forosdeelectronica.com/posts/487980/ _ 
saludos
a sus ordenes


----------

