Go Down

Topic: 2 digit LED display using only 3 wires (Read 1 time) previous topic - next topic

nouse4anick

Jan 08, 2010, 03:46 am Last Edit: Jan 08, 2010, 03:47 am by nouse4anick Reason: 1
I'm currently building a project that required the use of multiple 7 segment LED displays. I had an LCD already attached and needed a couple of pins for other things (like switches and buttons), so using some sort of traditional hookup to the 7 segment display was out of the question (it would require 14 pins!), and the idea of using 8 pins (2 sets of BCD numbers) was less appealing as I wanted to eventually use these in 'remotes'.

Hence after reading the tutorial on the 3 wire LCD in the playground I came up with a way to use an 8 bit shift register, 2 BCD to 7 segment decoders and a 2 digit LED (and a bunch of resistors) to come up with a breakout board (pics to come)

The code for this is fairly straight forward as well:
Code: [Select]

void BCDoutput(int Number, int dataPin, int clockPin, int latchPin){
 int digit1 = Number / 10; // get the ten's digit
 int digit2 = Number % 10; // get the one's digit
 int pattern = digit1 << 4; // shift and store the ten's digit for the display
 pattern = pattern | digit2; // bitwise or the ten's digit and ones digit
 shiftOut(dataPin, clockPin, MSBFIRST, (byte) pattern); // shift the pattern to the register
 digitalWrite(latchPin, 1); // flick the latch to put the data on the output pins
 delay(1);
 digitalWrite(latchPin, 0);
}


The parts list includes the following:
  • 1 anode common 2 digit LED display (mine was HP's HDSP-K511)
  • 14 resistors (I had a bunch of 1.1k, but using a different value might work better)
  • 2 7447 BCD to 7 segment decoders
  • 1 4094 8 stage shift and store register
  • 3 16 pin DIP sockets
  • 1 24 pin wide DIP socket (cut off the last 3 pins on both sides to make it fit, it was an old wire wrap socket i had laying around)

After a bit of trial and error (smallest work I have EVER done) I finally got it working!

The really neat thing is with a bit of modification you can add in as many displays as you want by connecting the Q output of one shift and store register to the data on another one.

If anyone has any suggestions let me know =)

nouse4anick

Here are some pics:
Startup:
http://www.flickr.com/photos/23761805@N00/4254878079/

It really does work =)
http://www.flickr.com/photos/23761805@N00/4254878011/

The schematic (my first time with Eagle):
http://www.flickr.com/photos/23761805@N00/4254934077/

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy