I need to drive a common anode 3 digit 7 segment LED from a microcontroller. The device has one common anode per digit. I will be writing the multiplexing code to control.
I don't want to consume 11 pins on the microcontroller so the obvious choice is some sort of IO expander. I see products using shift registers but I'd like try and use the I2C interface available on the microcontroller.
I'm considering using a single MCP23017 to drive 3 small PNP MOSFETs for the common anode pins and then directly drive the 8 LED segments via current limiting resistors.
I don't see any other way around using the PNP MOSFETs as the MCP23017 has a max 25mA rating per I/O pin sinking or sourcing.
If I ran the LED segments at 5mA each I would be sourcing 45mA on the anode pins (12,9,8 below). I'm not even sure if I could source current from one MCP23017 pin and then sink it into another.
If I used a shift registers such as the 8-bit TPIC6B595 I would need 2 for 11 pins on the display.
I realise there may be LED driver IC's also but liked the idea of I2C control of these little displays.
I don't want to consume 11 pins on the microcontroller so the obvious choice is some sort of IO expander. I see products using shift registers but I'd like try and use the I2C interface available on the microcontroller.
I'm considering using a single MCP23017 to drive 3 small PNP MOSFETs for the common anode pins and then directly drive the 8 LED segments via current limiting resistors.
I don't see any other way around using the PNP MOSFETs as the MCP23017 has a max 25mA rating per I/O pin sinking or sourcing.
If I ran the LED segments at 5mA each I would be sourcing 45mA on the anode pins (12,9,8 below). I'm not even sure if I could source current from one MCP23017 pin and then sink it into another.
If I used a shift registers such as the 8-bit TPIC6B595 I would need 2 for 11 pins on the display.
I realise there may be LED driver IC's also but liked the idea of I2C control of these little displays.