Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/11/2008 #1


Duda con la creación del proyecto
Muy buenas a tod@s!
He estado mirando por el foro y no he sido capaz de encontrar nada que en conjunto me sirva.
Mi problema es que necesito montar un circuito que pueda hacer los siguiente:
1.- Introducimos numeros por teclado (maximo dos cifras, 0-99)
2.- Visualice esa selección con leds en Binario
3.- Convierta el numero intorducido por teclado a hexadecimal i lo muestre por display

He podido observar que en foro hay explicaciones sobre teclados y codificación, pero no soy capaz de adaptarlo a esta necesidad, es decir, mirando como hacer funcionar el teclado y obtener el resultado en binario me doy cuenta que solo lo puedo hacer para un digito, pero no para dos. Y a la hora de codificar o sacar la información por display me ocurre lo mismo. Solo pido un poco de ayuda a grandes trazos o ideas que seguir para poder llevar a cabo este proyecto, no me hace falta una explicación detallada de todo el proceso pero si una forma de hacerlo. Gracias de antemano!
12/11/2008 #2


Para los digitos, debes tener 3 registros. Uno para cada digito, y otro para el resultado final.

Estas a la espera de que introduzca el primer digito. Y lo que entre por teclado lo guardas en un registro que se ocupe del primer digito (entiendo primer digito por el 1 de 10(por ejemplo).

Entonces, automaticamente, pasas a guardar los digitos en el segundo registro.

Como estás trabajando con registros de 8bits, ambos numeros estarán guardados en la parte baja. Pero ya tienes ambos registros con ambas partes del numero.

Aqui, se me ocurria primero una cosa. Pero no estoy seguro de que funcione. Asi que te doy una opción, que no es la más eficiente.

El primer registro, solo puede tomar 2 valores. O cero (si el valor introducido es menor de 10, ej:06) o mayor de 0(si el valor introducido es mayor de 10, ej:45). Por tanto Compruebas si el valor del primer registro es mayor de 0.

Si no es mayor de cero, el primer digito es 0. Por tanto solo debes subar el registro del primer digito y del segundo.

Si es mayor de 0. Significa que existe una decena. Entonces, lo que debes hacer es una subrutina, que se sume a si mismo, 10 veces. Y despues sumarle el valor del registro del segundo digito.

Me explico. Supongamos 3 registros:

Registro A (Aqui guardaremos el primer digito del número ej: el 5 de 57)
Registro B (Aqui guardaremos el segundo digito del número ej: el 7 de 57)
Registro C (Aqui guardaremos el resultado final)

Comprobamos Registro A, es menor de 0?. SI-le usamos el Registro B.

Es mayor de 0? (En nuestro ejemplo: 57).

Sumamos 10 veces 5.

Esto nos dá el valor de las decenas.
Ahora, le sumamos el valor del Registro B.

La suma total nos dá 57.


Esto, a la velocidad que actua un microcontrolador no es nada. No es la solución más eficiente. Pero, no habrá problemas.


Espero que te sirva.
13/11/2008 #3


Muchísimas gracias lanselor! Me has ayudado bastante, tu idea me ha venido muy bien, lo unico que tengo q montarlos sin usar microcontroladores (asi q lo intentare sin ellos, y si veo que se complica muchísimo lo hare como has explicado). Gracias una vez mas!
14/11/2008 #4


No sé por que, cuando leí teclado lo relacioné directamente con PIC, es la costumbre.

Creo que hay dos opciones si utilizas teclados hexadecimales de estos que se pueden comprar en cualquier tienda de electronica:



Ahora mismo no estoy seguro de si los datos salen en binario o en BCD, si salen en BCD prueba con este integrado:

http://www.utm.edu/staff/leeb/DM74185.pdf

En la pagina seis viene como convertir de BCD a binario.


Si sale en Binario quizas sea algo más complicado., lo que podrias hacer seria, utilizar un multiplexor, introducir en la entrada el codigo binario procedente del tecado y mediante unas puertas logicas y una tabla de verdad, que detecte si se ha producido un cambio y esto cambie el canal por el que sale la información del multiplexor.

Para almacenar los datos del primer digito, deberias usar un latch a la salida del primer canal del multiplexor.

Una vez tengas esto. Podemos suponer que el dato está en BCD (Ya que, ambos digitos están separados por 2 grupos de 4 bits). Entonces, usando el DM74185 (o similar), podrias pasar de BCD a binario, teniendo el digito en Binario natural completo.

El bcd no acepta numeros superiores a 9. Para evitar que pase de 9 tendrias que que hacer otro circuito que comprobase que el numero no excede de 9, y para evitar que esto llegue al convertidor, podrias conectarlo a la entrada de ENABLED del DM7485, de esta manera si excede de 9. Lo desabilitas.

Como tendrás que hacer dos circuitos detectores separados, yo conectaria el del primer digito al enabled de los que se encargan del primer digito, y a los demás el que se encarga del segundo digito.

No sé si me he explicado. El circuito es complicado, no obstante. Con componentes pasivos ya que tienes que hacer conversiones. Además, tiendo a complicarme la vida, por lo que quizas mi respuesta haga el diseño aún más complicado.

Espero que al menos te sirva de ayuda.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.