¿Cómo crear un decodificador de salida activa múltiple, no solo una salida activa?

0

Tengo un proyecto para controlar la lámpara en el armario. hay varios boton bien, imaginemos que hay 8 botones. cuando hago clic en el primer botón, se enciende la lámpara 1, cuando hago clic en el botón 2, la lámpara 2 está encendida. Uso arduino y lo proceso con decodificador de 3 a 8 bit decodificador (ic 74138), pero no es lo que quiero, cuando hago clic en el botón 1, la lámpara 1 está encendida, cuando hago clic en el botón 2, la lámpara 2 está encendida pero la lámpara 1 está ¿Desactivado antes de hacer clic en el botón? estudio cómo funciona el decodificador, y luego el decodificador solo puede activar una salida, mientras que otra salida está desactivada. la pregunta es, ¿cómo puedo administrar el decodificador, para que la salida activa sea más de una? cuando hago clic en el botón 1, la lámpara 1 está encendida, cuando hago clic en el botón 2, la lámpara 2 está encendida, y la lámpara 1 también está encendida. y así. Necesito ayuda: '(gracias

adjunto la condición de mi lámpara ahora basada en el decodificador

    
pregunta Mac TheAnd

2 respuestas

1

Volcar el decodificador. No es el componente para su escenario operativo deseado.

Si desea admitir 8 interruptores y (extrapolando aquí) 8 LED, simplemente necesita una forma de generar 8 bits de puerto GPIO separados para controlar cada LED individualmente. Esos 8 GPIO podrían ser pines de puerto directo de su microcontrolador o podrían provenir de algún tipo de circuito de expansión controlado por software.

Un tipo de circuito de expansión podría ser un simple registro de desplazamiento paralelo a paralelo de 8 bits. El software pulsaría dos pines de puerto con niveles de datos y un "reloj" para desplazar los 8 bits al registro de desplazamiento.

Otro enfoque sería utilizar un chip de puerto de E / S I 2 . El más simple de estos utiliza los dos pines del puerto en el microcontrolador para admitir los protocolos SCL y SDA del bus I 2 C, donde se envían comandos al dispositivo externo para programar sus registros. A su vez, estos registros seleccionan si las patillas son entradas o salidas, estado de entrada, estado de salida o si se ha detectado una interrupción de cambio de estado para una entrada.

    
respondido por el Michael Karas
0

A partir de la información limitada que proporcionó, parece que desea un llamado Código de termómetro (llamado así por la aparición de un termómetro de mercurio en vidrio donde se encuentra la longitud del mercurio). El capilar aumenta con la temperatura). También llamado un binario para el decodificador unary (he usado una definición ligeramente diferente a la página de Wiki: secuencia 0, 1, 11, 111, 1111, ...)

Esta no es una función estándar; no hay un IC estándar que pueda imaginar que realice esta función sin ningún tipo de programación.

Puede escribir fácilmente el código C para hacer esto, o usar una tabla de búsqueda. Por ejemplo, si n es el número que desea decodificar a unario e i y n son int:

for (i=0;i<n;i++) ans = ans << 1 | 1; 

Si ans no tiene firma int, puedes mantener 16 bits en un Arduino, si no tiene firma por mucho tiempo, puedes tener 32 salidas. Eso significa que el valor máximo que tiene sentido para n es 0x10 o 0x20 respectivamente, y el mínimo es 0- todo desactivado.

Luego, el problema se reduce a generar los bits que necesita, lo que se puede hacer directamente a los pines del puerto (si tiene suficientes) o a algo como a 74HC595 cadena de registro de cambios. En este último caso, puede crear el número único en el registro de desplazamiento directamente (antes de alternar el reloj de transferencia), pero estará restringido a cablear las salidas en un orden particular.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas