Si desea hacerlo con interruptores momentáneos, puede hacerlo con un par de paquetes de IC (flip-flops o compuertas de acoplamiento cruzado) para tener un pestillo SR de 3 bits, y luego activar y desactivar los pestillos con diodos o compuertas tales que al presionar cualquier interruptor forzará la salida de 3 bits al estado deseado.
Necesitaría 6 resistencias en total y 3 diodos por interruptor, para un total de 24 diodos, o podría usar 6 compuertas NAND de 8 entradas cruzadas y 8 resistencias (y no diodos).
Por ejemplo. (aproximadamente 1/3 del circuito parcialmente mostrado)
La solución más fácil: use un interruptor SPDT en cada una de las entradas seleccionadas (A, B, C). Esto le permitirá seleccionar el canal manualmente, pero tendrá que hacer la selección utilizando una combinación de los 3 interruptores en lugar de un botón por canal.
Solución más difícil: agregue un codificador de prioridad 8 a 3 como SN74HC148 . Si usa 8 interruptores SPDT como entradas, siempre que solo encienda uno a la vez, debería hacer lo que quiera. Sin embargo, es un poco más engorroso que simplemente presionar un botón, ya que tiene que encender el interruptor que desea y apagar el que no hace.
La solución más difícil: agregue un flip flop a cada entrada. Esta celda de memoria le permite usar un botón instantáneo presionando para "configurar" uno de los 8 flip flops. Puede usar un 74HC574 . Si las 8 entradas son normalmente bajas, y al presionar el botón la entrada es alta, todo lo que necesita es una señal de "reloj" que traba los estados de los 8 botones. Por lo tanto, digamos que usa una puerta O de 8 vías entre los 8 botones para generar el reloj? Luego, cada vez que se presiona cualquier botón, se obtiene un borde de reloj ascendente, que se engancha en el nuevo estado del botón. Si el retardo en la propagación de la compuerta OR es más largo que el tiempo de configuración para el flip flop, el tiempo debería funcionar bien. Es posible que tenga problemas de rebote del conmutador y necesite un circuito de rebote analógico en cada botón, pero creo que de alguna manera rebotará la señal.
Utilice un codificador de prioridad como 74xx148
OsiprefieresCMOSa
Solouninterruptordebeestaractivoalavez,porloquefuncionómejorconlosinterruptoresengrupo,yaseaconbotonescomoelqueestádebajoounorotativodevariasposiciones.
Pero, de nuevo, uno tiene que preguntarse si tiene todos esos conmutadores, ¿por qué necesita el CD4051?
No sé cuántas líneas de E / S tiene que trabajar con su micro. Pero he hecho esto antes de usar un teclado de control remoto. Los interruptores están cableados en una matriz.
Si no puede programar pull ups como puede hacerlo con el MSP430, tendría que agregarlos. La belleza de esto es doble. No necesitas un dispositivo externo. Y no tiene que escanear si no se presiona una tecla. Mantenga todas sus salidas bajas y establezca interrupciones en sus entradas. Deje que un disparador bajo en las entradas inicie un escaneo. Primer interruptor detectado cerrado, gana. Puede detener el escaneo y dejar que se produzca un alto nivel de interrupción provocada que le avise cuando se suelta el interruptor.
Lea otras preguntas en las etiquetas multiplexer