¿Cómo uso varios interruptores BCD como una sola entrada binaria?

1

Estoy tratando de convertir un número de 4 dígitos (decimal) a binario. Mi entrada es un interruptor BCD ( éste ). He estado buscando para ver si puedo encontrar un circuito basado en lógica o un decodificador IC específico para convertir los valores de la matriz de conmutación en un solo número binario. Aunque no parece que tenga mucha suerte. ¿Hay una buena manera de hacer esto marchitarse con algún tipo de convertidor o con lógica? Apreciaría tus pensamientos. Gracias!

    

3 respuestas

3

Dado que es muy poco probable que encuentre un chip comercial que resuelva un problema específico (pero no muy común), es probable que tenga que construir algo. La conversión del BCD a binario es una tarea simple pero repetitiva y se adapta a un microcontrolador pequeño, pero el número de pines de entrada / salida requerido es bastante grande, por lo que la conversión del código a un flujo en serie con un registro de desplazamiento externo - paralelo en / La salida en serie para leer los interruptores BCD y una entrada en serie / salida en paralelo para el número binario de salida ayudarán. Debe poder controlar todo con no más de 6 pines de E / S en el controlador (modo de funcionamiento fijo con una resistencia de subida / bajada)

Necesitará 14 bits para mostrar el valor máximo del bcd (9999). El uC puede ser cualquier cosa. Ingrese a través del registro de cambios 74F676 16-Bit Serial / Parallel-In, Serial-Out y emita a través del registro de cambios 74F675A 16-Serial-In, Serial / Parallel-Out

La expansión de la cantidad de interruptores BCD implica agregar registros de turnos adicionales y un pequeño cambio en el programa.

    
respondido por el JIm Dearden
2

Puedes hacerlo con chips lógicos, pero no va a ser divertido. Si los dígitos son A, B, C y D, deberá calcular A + 10 * B + 100 * C + 1000 * D. Esto se puede expandir a A + 2 * B + 8 * B + 4 * C + 32 * C + 64 * C + 8 * D + 32 * D + 64 * D + 128 * D + 256 * D + 512 * D . La potencia de 2 múltiplos constantes son solo cambios de bits, por lo que todo lo que necesita es un montón de sumadores. O un CPLD / FPGA / uC / etc.

    
respondido por el alex.forencich
1

Sería posible realizar la conversión utilizando una lógica discreta lista para usar, pero probablemente requeriría entre 6 y 12 chips. También se podría usar fácilmente un par de chips ROM de 32Kx8 (o un 32Kx16), observando que el LSB del valor de entrada no participa en el resultado; La única ventaja de eso sobre un microcontrolador es que su salida representaría los valores del interruptor en "tiempo real" sin necesidad de temporización. También sería posible usar algún tipo de lógica programable, aunque creo que cualquier solución eficiente en el espacio tendría que ser secuencial, lo que implica que también se podría usar un microcontrolador.

Si uno quiere implementar un diseño que use componentes comerciales, puede ser más fácil construir un circuito basado en un contador BCD, un contador binario, un par de comparadores de 8 bits, pestillos de 8 bits y Un poco de lógica del pegamento. Básicamente, cuente de 0000 a 9999 (BCD) repetidamente; cuando el conteo finaliza, reinicie el contador binario, y cuando el conteo BCD coincida con la entrada del interruptor, cierre el valor del contador binario. Otros enfoques secuenciales pueden ser más rápidos, pero el enfoque mencionado debería ser simple. Una alternativa sería algunos latches, multiplexores y ALU, de modo que el circuito multiplique iterativamente un acumulador por 10 y agregue la siguiente entrada de interruptor. Ese enfoque probablemente podría producir una nueva salida cada 8 ciclos aproximadamente, pero no creo que haya una necesidad real de algo tan rápido.

    
respondido por el supercat

Lea otras preguntas en las etiquetas