MCU and Mux/Demux CD4067B

Thread Starter

rgohn1

Joined Mar 1, 2013
2
Hey everyone,

I'm looking to find out how to configure the CD4067B Multiplexer/Demultiplexer
IC as just a demultiplexer. I want to be able to output from one of my Microcontroller's output pins to to 16 different devices. (I will be using a shift register to control the selector pins (address lines) of many different multiplexer IC's and demultiplexer IC's.

The datasheet: http://www.ti.com/lit/ds/symlink/cd4067b.pdf

Could anyone point me in the direction of where to find out how to do this?

Thanks very much,
rgohn1
 

AnalogKid

Joined Aug 1, 2013
11,044
This is an analog mux with no address latch. It will do what you want, but you will have to manage it. Unlike a digital 4 line to 16 line decoder such as a 74154, this part is bidirectional. Also, it doesn't buffer or regenerate the signal going through it. And because the address is not latched, any changes at the address pins instantly affects the output.

This part usually is driven by five lines out of a uC i/o port, or a 4-bit counter; something that presents nice, clean transitions from one address to another.

ak
 

Thread Starter

rgohn1

Joined Mar 1, 2013
2
So it turns out to use the 4067 as a demux as well as a mux, you just connect the COMMON OUT/IN pin (pin1 on the datasheet I posted) to a microcontroller pin capable of reading and writing analog voltages.




The 4067 can be used as a demultiplexer to write an analog voltage by setting COMMON OUT/IN to any voltage up to a maximum value stated on the datasheet, and by using the corresponding selector pins A,B,C,D to select whichever of the 16 inputs you'd like to write an analog voltage to. A command to write the voltage present on the pin is needed (i.e. analog_write(pin1, 0xFF))

Additionally, the 4067 can also be used as a multiplexer to read an analog voltage by setting COMMON OUT/IN to 0v, and by using the selector pins A,B,C,D to select whichever of the 16 inputs you'd like to read an analog voltage from. A command to read the voltage present on the pin is needed (i.e. analog_read(pin1))



Thanks for the help,
Rob
 
Top