How to display ADC output on to 3 digit 7 segment?

Thread Starter

agnimusayoti

Joined Apr 26, 2021
14
Hi. Currently I am designing temperature sensor instrumentation. The result must be displayed with 7 segment. My circuit block diagram is: measure temperature; amplify; convert to binary; display result. I tried to start from display the ADC output. Since the output is ranging between 0 to 255, so I need 3 digit seven segment. Could you please help me to interfacing the ADC with BCD decoder and 7 segment? I couldn't understand how to differentiate which one take place as hundred, tens, and units. Thanks. Below I attached my ADC diagram, done with Proteus.
 

Attachments

dl324

Joined Mar 30, 2015
16,845
Welcome to AAC!

Thank you for not posting the typical screen captures with that awful grid and background Proteus uses.

Is this school work?

Cropped image of the relevant circuitry.
adcClip.jpg
 

Thread Starter

agnimusayoti

Joined Apr 26, 2021
14
Wuah thanks for the image. Actually Yes, this is my semester project. Suppose the output is 124 (in decimal), how i print this result on 7 segments? I think I must print 1 in hundreds, 2 in tens, and 4 in units. How could I do that?
 

Irving

Joined Jan 30, 2016
3,843
As you surmised, you need to translate from binary to Binary-coded decimal (BCD). Have you tried Googling for approaches to do that?
 

BobaMosfet

Joined Jul 1, 2009
2,110
Do the BCD conversion in software- it's trivial, and then drive the displays with 595 shift registers so you conserve pins on the MCU.
 

MrChips

Joined Oct 2, 2009
30,712
If you want to go the MCU route you don't even need an MCU with ADC.
Use a thermistor and a capacitor on a GPIO pin. Multiplex three 7-segment displays with the MCU. No additional ICs required besides the MCU.
 

crutschow

Joined Mar 14, 2008
34,283
Binary to BCD conversion is not simple with available discrete parts (since it can't readily be done with combinatorial logic), so I suggest either use an MCU to do the conversion, or a BCD output A/D converter such as suggested in post #6.
 

Irving

Joined Jan 30, 2016
3,843
A very common and relatively easy solution is a 256 x 16 eeprom programmed to map the 8-bit address to 3 groups of 4 outputs. this can be done with a parallel device (or 2off 256 x 8) or a serial device with 8bit parallel in/serial out and 16bitserial in/parallel out registers
 

Thread Starter

agnimusayoti

Joined Apr 26, 2021
14
Have you studied how to do binary to BCD conversion?
I think I have learnt BCD decoder using IC 7447 then using 7segment as a display. When I studied 7 segment display, I just taught to use IC 7447 as the decoder and then interface it with 7 segment.

No i haven't searching at Google because I don't know before 7447 i have to convert binary output from ADC to BDC before send it through 7447.

The constraint of my project is no microcontroller at all.

well, from my searching on Google, I'm sure I haven't taught convert binary to BCD before using 7447. Do i have to design a binary to BCD converter before using 7447 and 7segment? thanks

what is the difference between 7107 and EPROM? could someonethe explain that?
 

Irving

Joined Jan 30, 2016
3,843
The constraint of my project is no microcontroller at all.
I did wonder if that this might be the case... & I'm glad to hear it. I'm all for microcontrollers and software approaches, but its important to learn how to do it in other ways to broaden experience and to better understand how underlying systems might work, their limitations & benefits, etc.

Which leaves you with a redesign using a ADC with 3.5 digit 7-seg outputs (eg the venerable 7107 posted earlier) or the Binary/BCD conversion with EEPROMs
 

Irving

Joined Jan 30, 2016
3,843
what is the difference between 7107 and EPROM? could someonethe explain that?
The 7107 is a 2000mV 3.5digit ADC that drives 7-seg displays directly; its the heart of many old multimeters and voltmeter/ammeter displays on older bench PSUs.

The EEPROM simply encodes a binary address to 3 BCD values (effectively a lookup table).
 

Irving

Joined Jan 30, 2016
3,843
what do you mean by 3.5 digit? should be the number of digit is integer? I'm sorry for my dumb question
No question is dumb, how else do you learn?

"3.5" is short-form for a display showing "1.999". The '1' is half a 7-seg display! (originally). Now it means any display where the MS digit is not full range.

e.g a 4000 count multimeter is still 3.5 digits as the MS digit is 0 - 3 for a reading of "3.999"
 

Thread Starter

agnimusayoti

Joined Apr 26, 2021
14
Oh i see, so 7107 can do the binary to BCD conversion and BCD decoder, but can't display in full range. So, is it better to use EPROM? Or is there as simple as adding the new digit to display full range of 4000 mV?
 

Irving

Joined Jan 30, 2016
3,843
Your existing design is able to display 0 - 255 so where's the issue with 0 - 1999? 7107 is already 1 digit bigger than your current solution.
 

Thread Starter

agnimusayoti

Joined Apr 26, 2021
14
Ups sorry, it's a lite bit out of topic because from your explanation, I remember the case of my friend's project on digital voltmeter that can't display the full range ...
 

Irving

Joined Jan 30, 2016
3,843
Ah OK. No you can't easily add another digit to 7107, but its an old chip - I have four in my c1995 Bench PSU monitoring volts/current on 2 channels.

There are later chips but these generally drive LCD and are for a full multimeter rather than just a mV meter...

Maxim do a MAX1499 which is a 4.5digit 1.9999v with LED 7-seg output.
 
Last edited:
Top