Help driving a 3 digit, 7 segment display!

I hope somebody can help...I have done a lot of research and searching but can't quite figure out how to go about doing this. (Also, take it easy on the jargon.....i've only just started to learn about electronics!)

I am have a 3 character, Common Anode 7 segment display that I want to display the current temperature on the first 2 digits, with the last displaying a C or F.

So far, I have my Arduino Duemilanove -> 74HC595 Shift Register -> 74LS47 BCD driver -> 7seg display. The BCD driver is sinking the display cathodes, with the power being sourced from NPN transistors off the shift register. Multiplexing is handled in software. This part works great.

For the life of me I can't figure out how to display the C or F.

Since I can't input anything into the BCD to achieve the C or F, I have been trying to come up with other things....that...are not quite working.

Little help here?

The data sheet that I'm looking at right now for a fairchild BCD tells me that the F character is unavailable, but the c character is.

Your BCD inputs should be as follows to get a c

a3 a2 a1 a0 H L H L

If this doesn't work, then tell us what you see.

If it does work, then remember that the data sheet should always be your first source for info.

Once you get this working, we can talk about bypassing the BCD and driving the 7seg directly from the shift register to create custom characters.

Thanks for the help.

I should have been more clear - trying to get a capital C and a capital F.

My guess right now is that I need to somehow interupt the current on it’s way to being sunk to the BCD with a switch, but my initial test using NPN transistors didn’t work :frowning:

Since you responded I’ve daisy-chained in a second shift register to try some stuff, but no luck yet.

I checked the datasheet and google, but couldn’t find if the 595 can sink current…can it? If so, could I eliminate the BCD decoder all together and work entirely off the shift register, doing the binary counting on the arduino?

The data sheet of the 74LS47 shows quite clearly that it does not output a bit pattern that looks like a C or F. The clue is in the name it is a BCD to 7 segment display encoder. BCD is Binary Coded Decimal, it is only supposed to go up to 9.

If you want other patterns you have to remove this chip and control the segments directly with the outputs of your shift register.

Roger that.

So I can sink the current from the 7seg into the 595? This is the data I could not find.

So I can sink the current from the 7seg into the 595?

Depends on the sort of 595. There is a high current version but most versions won't. Use a ULN2803A to boost the current.

Much thanks.

I found some data on saying the 74HC series can sink and source about 20mA. Based on that I wired it up and uplaoded a test program to the arduino....Success! Thanks again for your help.

A 74ls47 is a BCD to t-segment decoder. BCD means Binary coded DECIMAL.. so anything above 9 (1001) is basicly ignored.. In this case the chip has some 'special' characters if you feed it some +9 numbers... Just use a MC14495, it's a HEX to 7-segment decoder and is does exactly that. 0000 - 1111 -> 0 - F. The datasheet is here: It even has a nice latch so you can get your data ready and display (latch) it whenever you please..