IC decimales codificados en binario

5

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

    
pregunta hisker

7 respuestas

7

Puedo pensar en tres maneras de hacer esto. Empezaré desde lo más costoso y complicado y trabajaré hacia abajo.

  1. Todos los circuitos integrados de lógica: utilice un contador binario ascendente / descendente de 9 bits de carga en paralelo (como 3x 74hc190) y un contador BCD reajustable de 3 dígitos (3x 74hc163). Cargue el contador binario con su número de 9 bits y borre el contador BCD a 0. Mire 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.
    • Pros:
      • Cumple con el requisito de usar solo circuitos integrados de lógica estándar
      • No requiere programación
    • Contras:
      • Caro (las fichas de fichas cuestan alrededor de $ 1-2 cada una)
      • propenso a fallar el cableado
      • Requiere una señal de reloj de 31kHz para una actualización de 60Hz
      • Requiere 8-12 CI de lógica (dibujaré un esquema más adelante)

  2. Tabla de consulta de ROM: utilice una pequeña memoria FLASH asíncrona paralela (como this one) para tomar todas las entradas de datos como una dirección, y luego programar la ROM para generar salidas BCD para 2 dígitos. Introduzca el resultado en un decodificador de BCD a 7seg. Alternativamente, use una ROM para generar un solo dígito decimal decodificado en pines de 7 segmentos.
    • Pros:
      • Precio por dígito bastante barato
      • Escala mejor
      • Rápido (pero la velocidad no importa)
      • Simple de cablear / diseño
    • Contras:
      • Cada ROM requiere una programación diferente
      • Necesito comprar una ROM mucho más grande de lo que se necesita
      • 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 en Digikey seleccionó este PIC ) multiplexará los dígitos de salida. Es posible que necesite transistores para conducir el ánodo / cátodo común de sus pantallas de 7 segmentos, pero estos pueden ser transistores baratos.
    • Pros:
      • La solución más barata en $ 1.50 - $ 2.00 en total
      • Cableado simple
      • Facilidad de implementación del algoritmo Binary- > BCD en el software
      • Fácil de agregar más funcionalidad
      • Sistema menos costoso para manejar la pantalla
    • Contras:
      • Se requiere un programador de chips
      • Necesita escribir software (no solo un problema de hardware)
      • La solución más barata requiere multiplexación de dígitos, que es más complicada que la unidad directa.

Dibujaré algunos esquemas más adelante

    
respondido por el W5VO
4

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 de 'dividir 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.

    
respondido por el BarsMonster
3

Quizás la forma más fácil sería hacer una tabla de conversión y colocarla 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 algo de HDL para esto).

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

    
respondido por el Jaroslav Cmunt
2

Su entrada de ejemplo, 100101100, es un binario sin formato para 300, no un 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 obtener de las agrupaciones binarias a decimales sin procesar, que serán necesarias para controlar la visualización, debe realizar una conversión básica, lo que implica realizar cierta división de enteros. Si bien puede lograr esto con los circuitos integrados lógicos, se necesitará una carga de barcos para hacerlo, lo que implica MUCHO cableado, lo que significa muchas oportunidades de depuración.

A menos que haya una razón convincente para usar IC de lógica, esta sería una tarea ideal para un microcontrolador de 8 bits.

    
respondido por el JustJeff
1

No creo que puedas resolver esto fácilmente con 1 IC. Puedes mirar los chips MAX7231, pero parecen viejos y muy caros. Quizás pueda usar el HEF4511 (o DS8669) si puede encontrar un < > Codificador BCD de algún tipo. Además, te resultaría difícil crearlo de esa manera.

También puede escribir las fórmulas booleanas para el código de 10 bits a 3 veces una salida BCD. No espero que sea muy simple, porque 10 entradas a salidas de 3x4 parecen 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 I / O. Un PIC o AVR simple 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 ultra rápidas).

    
respondido por el Hans
1

No es difícil configurar un CPLD o FPGA para convertir los datos binarios desplazados primero en MSB a datos decimales. El bloque de creación central es un módulo con reloj, datos y entradas claras, cuatro pestillos D0-D3 y una salida combinatoria de próximo acarreo. Cascada de los bloques como se haría un registro de desplazamiento. Una vez que se cambia el valor binario, los registros mantendrán el equivalente en BCD.

; Carry if >= 5
NextCarry = D3 | D2 & D1 | D2 & D0

; Will be 8 or 9 iff input was 4 or 9
D3 := !D3 & D2 & !D1 & !D0 | D3 & D0

; Will be 4-7 iff input was 2-3 or 7-8
D2 := !D3 & !D2 & D1 | !D3 & D2 & D1 & D0 | D3 & !D0

; Will be 2-3 or 6-7 iff input was 1, 3, 6, or 8
D1 := !D3 & !D2 & D0 | !D3 & D2 & D1 & !D0 | D3 & !D0

; Will be odd iff carry-in is set
D0 := CarryIn

Tenga en cuenta que es necesario borrar el registro antes de cada uso; el cambio en ceros NO será suficiente. Los circuitos de compensación no se muestran, pero deberían ser obvios.

    
respondido por el supercat
0

A medida que sucede, hay un circuito que hace exactamente lo que usted quiere, asumiendo que está utilizando niveles lógicos TTL y que 4 IC de DIP se ajustan a su requisito de "cualquier IC". Ese circuito es el 74185 , y la configuración exacta que desea puede encontrarse en la Figura 6 en la página 7. Hay algunos inconvenientes, por supuesto. Para empezar, el 74185 tiene 30 años y está definitivamente obsoleto. Sin embargo, puedes conseguirlos en eBay. Segundo, necesitarás 4 de ellos, y eso te costará más de 20 dólares. En tercer lugar, la potencia total requerida será de 5 voltios a 300 a 400 mA.

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

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

    
respondido por el WhatRoughBeast

Lea otras preguntas en las etiquetas