Circuitos integrados decimales codificados en binario

¿Hay algún IC que pueda usarse para convertir un código binario de 9 bits en una pantalla de siete segmentos? EJ: 100101100->300 Quiero mostrar 300 en una pantalla de siete segmentos cuando se aplica el código binario 100101100 a la entrada. Quiero hacer esto solo usando circuitos integrados que no usan microcontroladores.

¿Por qué no quieres usar un microcontrolador? Esa sería probablemente la mejor y más barata opción.
Un microcontrolador es la elección obvia. Dado que no ha justificado por qué no quiere usar uno, solo podemos suponer que es por razones religiosas tontas y, por lo tanto, ignorar esa especificación.
100101100 no es BCD para 300, 001100000000 es
100101100 es solo binario ... no decimal codificado en binario. y el ic que está buscando se llama microcontrolador, especialmente porque tiene que hacer una división (o multiplicación por 1/10) si quiere un decimal.

Respuestas (7)

Puedo pensar en tres maneras de hacer esto. Comenzaré desde el más costoso y complicado y avanzaré hacia abajo.

  1. Todos los circuitos integrados lógicos: use un contador binario ascendente/descendente de carga paralela de 9 bits (como 3x 74hc190) y un contador BCD reiniciable de 3 dígitos (3x 74hc163). Cargue el contador binario con su número de 9 bits y borre el contador BCD a 0. Reloj ambos contadores hasta que el contador binario llegue a cero. Cargue la salida del contador BCD en un pestillo y luego aliméntelo a un decodificador BCD-7seg. Repetir.
    • Ventajas:
      • Cumple con el requisito de usar solo circuitos integrados lógicos estándar
      • No requiere programación
    • Contras:
      • Caro (las fichas de mostrador cuestan alrededor de $ 1-2 cada una)
      • Propenso a fallas en el cableado
      • Requiere una señal de reloj de 31kHz para una actualización de 60Hz
      • Requiere 8-12 circuitos integrados lógicos (dibujaré un esquema más adelante)

  2. Tabla de búsqueda de ROM: use una pequeña memoria FLASH asíncrona paralela (como esta ) para tomar todas las entradas de datos como una dirección y luego programe la ROM para generar salidas BCD para 2 dígitos. Introduzca el resultado en un decodificador BCD-to-7seg. Alternativamente, use una ROM para generar un solo dígito decimal decodificado en pines de 7 segmentos.
    • Ventajas:
      • Precio bastante económico por dígito
      • escalas mejor
      • Rápido (pero la velocidad realmente no importa)
      • Fácil de cablear/diseñar
    • Contras:
      • Cada ROM requiere una programación diferente
      • Necesita comprar una ROM mucho más grande de lo necesario
      • La programación requiere automatización informática.

  3. Microcontrolador: un microcontrolador simple con suficientes entradas y salidas puede convertir el número binario en BCD y luego codificarlo en señales de control de 7 segmentos. La solución más barata (mi búsqueda de digikey seleccionó este PIC ) multiplexará los dígitos de salida. Es posible que necesite transistores para controlar el ánodo/cátodo común de sus pantallas de 7 segmentos, pero pueden ser transistores económicos.
    • Ventajas:
      • La solución más barata a $1.50 - $2.00 en total
      • cableado sencillo
      • Facilidad de implementar el algoritmo Binario->BCD en el software
      • Fácil de agregar más funcionalidad
      • Sistema menos costoso para controlar la pantalla
    • Contras:
      • Se requiere un programador de chips
      • Necesita escribir software (no solo un problema de hardware)
      • La solución más económica requiere multiplexación de dígitos, que es más complicada que la transmisión directa.

Voy a dibujar algunos esquemas más tarde

Me temo que no hay tales chips estándar. Si bien hay chips de BCD a 7 segmentos, será difícil extraer dígitos individuales, ya que esto requeriría chips 'divididos por 10'.

Además, los CPLD están aquí para usted.

Si puede generar dígitos separados en lugar de un solo número de 9 bits, podrá usar chips estándar.

+1 por señalar que los datos de origen son binarios, no decimales codificados en binario, lo que complica las conversiones basadas en lógica. Pero cualquier tipo de chip ROM para una tabla de búsqueda es una solución fácil.

Quizás la forma más fácil sería hacer una tabla de conversión y ponerla en EPROM o FLASH con al menos 9 direcciones y 12 líneas de datos. De lo contrario, CPLD o FPGA pequeño ( opencores.org tiene algunos HDL para esto).

Si realmente quisiera hacer esto usando circuitos integrados discretos, tendría que construir una máquina de estado que implemente el algoritmo, que sería la solución más compleja y no muy diferente del microcontrolador, excepto por el aumento del precio, el tamaño y la complejidad.

Una tabla de búsqueda basada en ROM es la solución tradicional, utilizando cualquier tecnología de ROM programable que sea más económica y fácil de manejar. Aunque probablemente será más costoso y requerirá más trabajo construir un programador de dispositivos que los microcontroladores modernos. Las pantallas de varios dígitos a menudo se multiplexan; es fácil con un micro, aunque con una ROM podría tener una entrada de dirección de "dígito" de dos bits impulsada por un oscilador y un contador y usarla para buscar alternativamente uno de los tres dígitos durante su turno para se mostrará. De lo contrario, necesitará una ROM bastante amplia.

Su entrada de ejemplo, 100101100, es binario sin formato para 300, no decimal codificado en binario; BCD para 300 sería 0011 0000 0000. Si desea mostrar números que en realidad son BCD, eso es relativamente sencillo. Pero si sus entradas son realmente binarias, es un problema más complejo.

Para pasar de agrupaciones binarias sin procesar a decimales, que serán necesarias para controlar la pantalla, efectivamente debe realizar una conversión de base, lo que implica realizar una división de enteros. Si bien puede lograr esto con circuitos integrados lógicos, se necesitará una gran cantidad de ellos para hacerlo, lo que implica MUCHO cableado, lo que significa muchas oportunidades para la depuración.

A menos que haya una razón de peso para usar circuitos integrados lógicos, esta sería una tarea ideal para un microcontrolador de 8 bits.

No creo que puedas resolver esto fácilmente con 1 IC. Podrías mirar los chips MAX7231, pero parecen viejos y muy caros. Tal vez pueda usar el HEF4511 (o DS8669) si puede encontrar un codificador <> BCD de 10 bits de algún tipo. Además, tendrías dificultades para crearlo de esa manera.

También puede escribir las fórmulas booleanas para el código de 10 bits en 3x una salida BCD. No esperaría que fuera muy simple, porque 10 entradas a 3x4 salidas parece mucho trabajo.

Supongo que estás haciendo esto 'solo por diversión', hacer esto en el mundo de la ingeniería no es muy rentable. Probablemente necesite una señal de 7 segmentos + 3 pantallas y una entrada de 10 bits. Esto es alrededor de 20 E/S. Un simple PIC o AVR con 24 o 28 pines puede manejar eso (o un CLPD si necesita un procesamiento más rápido; sin embargo, las pantallas son para ojos humanos, por lo que no tienen que ser ultrarrápidas).

No es demasiado difícil configurar un CPLD o FPGA para convertir datos binarios desplazados MSB primero en datos decimales. El bloque de construcción central es un módulo con reloj, datos y entradas claras, cuatro pestillos D0-D3 y una salida combinatoria de transporte siguiente. Coloque los bloques en cascada como lo haría con un registro de desplazamiento. Después de cambiar el valor binario, los registros mantendrán el equivalente en BCD.

; Llevar si >= 5
Siguiente Acarreo = D3 | D2 y D1 | D2 y D0

; Será 8 o 9 si la entrada fue 4 o 9
D3 := !D3 & D2 & !D1 & !D0 | D3 y D0

; Será 4-7 si la entrada fue 2-3 o 7-8
D2 := !D3 & !D2 & D1 | !D3 y D2 y D1 y D0 | D3 y !D0

; Será 2-3 o 6-7 si la entrada fue 1, 3, 6 u 8
D1 := !D3 & !D2 & D0 | !D3 y D2 y D1 y !D0 | D3 y !D0

; Será extraño si se establece el carry-in
D0 := Acarreo

Tenga en cuenta que es necesario borrar el registro antes de cada uso; el cambio de ceros NO será suficiente. No se muestra el circuito de limpieza, pero debería ser obvio.

Da la casualidad de que hay un circuito que hace exactamente lo que desea, suponiendo que esté utilizando niveles lógicos TTL y 4 circuitos integrados DIP se ajusten a su requisito de "cualquier circuito integrado". Ese circuito es el 74185 , y la configuración exacta que desea se puede encontrar en la Figura 6 en la página 7. Hay algunos inconvenientes, por supuesto. Para empezar, el 74185 tiene 30 años y definitivamente está obsoleto. Sin embargo, puedes conseguirlos en eBay. Segundo, necesitarás 4 de ellos, y eso te costará más de 20 dólares. Tercero, la potencia total requerida será de 5 voltios a 300 a 400 mA.

Pero aparte de eso, es bastante sencillo. Y por lo que vale, en realidad está en línea con el espíritu de algunas de las otras respuestas. Como indica la hoja de datos, el IC es en realidad una PROM de 32 x 8.

De lo contrario, para las memorias de un solo chip no tendrá suerte. Aunque el lsb no requiere transformación, una salida de 300 necesita 9 salidas IC, y no encontrará (E)(E)PROMS con más de 8 salidas.