7 segment Display

dl324

Joined Mar 30, 2015
18,333
Design and implement a digital circuit which can display the students first or last name with
delay of 3 sec on 6 seven segment displays.
Description is lacking. Are you allowed to use commercial counter IC's? Or are you supposed to design a counter using flip flops. The name you want to display has 7 characters.
 

dl324

Joined Mar 30, 2015
18,333
Counter using flip flop
Were you told what type of flip flop you need to use?

How are you going to display your name on 6/7 different displays? Since there's a 3 second delay between the display of the letters, I think you made a mistake in the instructions. This is a common homework problem and the problem is to display the letters sequentially on a single 7 segment display.
 

MrChips

Joined Oct 2, 2009
34,820
I think the task is rather unreasonable. We gave a similar exercise to our students every year, except they were tasked with displaying their student number.
 

djsfantasi

Joined Apr 11, 2010
9,237
I think the task is rather unreasonable. We gave a similar exercise to our students every year, except they were tasked with displaying their student number.
Not so unreasonable. There looks to be a maximum of 7-8 output states in the truth table, possibly less even a maximum of 6. Using a counter and the concept of multiplexors, it becomes a trivial exercise.
 

MrAl

Joined Jun 17, 2014
13,707
Design and implement a digital circuit which can display the students first or last name with
delay of 3 sec on 6 seven segment displays. Implement the prototype first using Proteus and
then translate it to the hardware.
Hi,

Since you can only use six 7-segment displays, does that mean you have to be able to display a banner as well?
A banner would display part of the name and then scroll to the left to show the rest of the name. That would however allow displaying names with any number of characters as well as full sentences.

You might be able to use your 7447 decoder IC for the numbers, then switch the outputs off and use pure logic for the letters.
If you are allowed to use an EPROM, you can program it for all the functions for numbers and letters alike. That would mean maybe 6 or 7 bits ASCII in, and 7 lines out or 8 including the decimal point. That would require an 8 bit EPROM with at least 64 bytes of program space (typical). The beauty of this method, if you can use it, is that would be the only chip required to do all the decoding.
 

Thread Starter

Orionyx

Joined Jan 19, 2024
25
Hi,

Since you can only use six 7-segment displays, does that mean you have to be able to display a banner as well?
A banner would display part of the name and then scroll to the left to show the rest of the name. That would however allow displaying names with any number of characters as well as full sentences.

You might be able to use your 7447 decoder IC for the numbers, then switch the outputs off and use pure logic for the letters.
If you are allowed to use an EPROM, you can program it for all the functions for numbers and letters alike. That would mean maybe 6 or 7 bits ASCII in, and 7 lines out or 8 including the decimal point. That would require an 8 bit EPROM with at least 64 bytes of program space (typical). The beauty of this method, if you can use it, is that would be the only chip required to do all the decoding.
I am not allowed to use EPROM.
I will be thankful to you if you could make rough sketch of the circuit.
 

MrAl

Joined Jun 17, 2014
13,707
I am not allowed to use EPROM.
I will be thankful to you if you could make rough sketch of the circuit.
Hello again,

Ha, well it's not going to be simple. One way I can envision this is to use or rather create gates that have multiple inputs so you can logically control every one of the 7 segments.

Just to provide a rough idea how this would work, since we have 26 letters in the English alphabet and 10 numbers 0 to 9, that means we have at least 36 output states. The least number of input bits would be 6, so you have to create a circuit that takes 6 binary inputs and outputs 7 bits that would drive the segments.
We could label the input bits in binary where the LSB is on the right 000001 and the MSB is on the left 100000 and the output segments as 'a' through 'g'. Then, we create a circuit that turns those inputs into the right outputs.
If we have to stay true to ASCII though, we'd need 7 input bits. That means we have to turn 7 input bits into 7 output bits for the segments.
For the number '1' for example, the ASCII code is 0x31 which in binary is 0011 0001, and limiting to ASCII we would have just 011 0001, so we have to detect when those bits that are '1' are high and when those bits that are '0 are low. In simplest terms, that would require a 7 input gate like an AND gate, NAND gate, OR gate, or NOR gate. To keep this simple I'll use positive logic and a 7 input AND gate and some inverters. For every '0' we would add an inverter on that input line, and for every '1' we would run that straight into the AND gate. Now when the code 011 0001 comes onto the input lines, the output of the AND gate goes high, and that's the only combination that will make the output high. We could then use diodes (or more logic) to turn on the two segments 'a' and 'b'.
That's the long way of doing it, but easy to envision.

The shorter way is to write the Boolean expressions for every output line for every combination of inputs. For example, when the code 011 0001 comes up we know we want the segment 'a' to turn on, so for that output line one of the expressions would be:
a=A and not B and not C and not D and E and F and not G
where A is the LSB and G is the MSB of the inputs.
LSB=least significant bit, MSB=most significant bit.
After we write out all the expressions for output 'a', we try to reduce it to a simpler expression.
For example, when the code 011 0010 comes up we know we also want the 'a' output to turn on, so the expression for that is:
a=not A and B and not C and not D and E and F and not G
Now if we assume that those were the only two numbers we had to decode, we would combine the expressions:
a=(A and not B and not C and not D and E and F and not G) OR (not A and B and not C and not D and E and F and not G)
We would then seek to reduce this to a simpler expression.
If we notice that for one expression we need "A" and the other we need "not A", that means that we could reduce this to:
a=xor (A,B) AND (not C and not D and E and F and not G)
The 'xor' gate came about because we needed A and not B, or B and not A, which is an exclusive OR operation. We still needed the rest so we had to AND that with the rest.
There might be a way to reduce it further, but you'd have to look into reducing Boolean expressions, and remember this is for a circuit were we only have to detect the codes for ASCII '1' and '2'.
There will be a lot of expressions, so it would help to use math software to try to reduce them. If they do not reduce (unlikely) then we would end up using thirty six 7 input AND (or other) gates with a host of inverters. The beauty of this method is the expressions are all very easy to write out which means less chance of getting it wrong.
Also, if we used a 7 input NAND gate then the only difference would be the output goes low when all the input conditions are met rather than going high like with the AND gate.

One trick to reduce the expressions right away would be to create a decoder on the front end, that decodes the 7 bit ASCII codes into shorter 6 bit codes. That way the expressions only have to have 6 terms in them rather than 7. This can be used as is, or combined into the final simplified expression if in fact it simplifies because of that.

This is why I would do it with an EPROM, and you could generate the programing pattern from the expressions, although I realize that you can't use that now. In the past I actually had to do this for a special kind of high power switch that had to detect various input conditions and switch automatically to a backup power source.
 
Last edited:

Thread Starter

Orionyx

Joined Jan 19, 2024
25
Hello again,

Ha, well it's not going to be simple. One way I can envision this is to use or rather create gates that have multiple inputs so you can logically control every one of the 7 segments.

Just to provide a rough idea how this would work, since we have 26 letters in the English alphabet and 10 numbers 0 to 9, that means we have at least 36 output states. The least number of input bits would be 6, so you have to create a circuit that takes 6 binary inputs and outputs 7 bits that would drive the segments.
We could label the input bits in binary where the LSB is on the right 000001 and the MSB is on the left 100000 and the output segments as 'a' through 'g'. Then, we create a circuit that turns those inputs into the right outputs.
If we have to stay true to ASCII though, we'd need 7 input bits. That means we have to turn 7 input bits into 7 output bits for the segments.
For the number '1' for example, the ASCII code is 0x31 which in binary is 0011 0001, and limiting to ASCII we would have just 011 0001, so we have to detect when those bits that are '1' are high and when those bits that are '0 are low. In simplest terms, that would require a 7 input gate like an AND gate, NAND gate, OR gate, or NOR gate. To keep this simple I'll use positive logic and a 7 input AND gate and some inverters. For every '0' we would add an inverter on that input line, and for every '1' we would run that straight into the AND gate. Now when the code 011 0001 comes onto the input lines, the output of the AND gate goes high, and that's the only combination that will make the output high. We could then use diodes (or more logic) to turn on the two segments 'a' and 'b'.
That's the long way of doing it, but easy to envision.

The shorter way is to write the Boolean expressions for every output line for every combination of inputs. For example, when the code 011 0001 comes up we know we want the segment 'a' to turn on, so for that output line one of the expressions would be:
a=A and not B and not C and not D and E and F and not G
where A is the LSB and G is the MSB of the inputs.
LSB=least significant bit, MSB=most significant bit.
After we write out all the expressions for output 'a', we try to reduce it to a simpler expression.
For example, when the code 011 0010 comes up we know we also want the 'a' output to turn on, so the expression for that is:
a=not A and B and not C and not D and E and F and not G
Now if we assume that those were the only two numbers we had to decode, we would combine the expressions:
a=(A and not B and not C and not D and E and F and not G) OR (not A and B and not C and not D and E and F and not G)
We would then seek to reduce this to a simpler expression.
If we notice that for one expression we need "A" and the other we need "not A", that means that we could reduce this to:
a=xor (A,B) AND (not C and not D and E and F and not G)
The 'xor' gate came about because we needed A and not B, or B and not A, which is an exclusive OR operation. We still needed the rest so we had to AND that with the rest.
There might be a way to reduce it further, but you'd have to look into reducing Boolean expressions, and remember this is for a circuit were we only have to detect the codes for ASCII '1' and '2'.
There will be a lot of expressions, so it would help to use math software to try to reduce them. If they do not reduce (unlikely) then we would end up using thirty six 7 input AND (or other) gates with a host of inverters. The beauty of this method is the expressions are all very easy to write out which means less chance of getting it wrong.
Also, if we used a 7 input NAND gate then the only difference would be the output goes low when all the input conditions are met rather than going high like with the AND gate.

One trick to reduce the expressions right away would be to create a decoder on the front end, that decodes the 7 bit ASCII codes into shorter 6 bit codes. That way the expressions only have to have 6 terms in them rather than 7. This can be used as is, or combined into the final simplified expression if in fact it simplifies because of that.

This is why I would do it with an EPROM, and you could generate the programing pattern from the expressions, although I realize that you can't use that now. In the past I actually had to do this for a special kind of high power switch that had to detect various input conditions and switch automatically to a backup power source.
So,I need to design my own decoder to implement this.
 

BobTPH

Joined Jun 5, 2013
11,521
So,I need to design my own decoder to implement this.
Not necessarily, the suggestion of using multiplexers would not need a decoder as such.

I would get clarification about the display on 6 digits though, does the prof really expect a name longer than 6 characters to scroll while those with shorter names get off easy?

You said can you cannot use EEPROM, what else can you not use?
 

Thread Starter

Orionyx

Joined Jan 19, 2024
25
Not necessarily, the suggestion of using multiplexers would not need a decoder as such.

I would get clarification about the display on 6 digits though, does the prof really expect a name longer than 6 characters to scroll while those with shorter names get off easy?

You said can you cannot use EEPROM, what else can you not use?
Yes we can use names less than 7 digit but not less than 5 digits.
We can only use gates that we have worked with in the lab, such as mux, demux, flip-flops, and other basic gates
 

MrChips

Joined Oct 2, 2009
34,820
Design and implement a digital circuit which can display the students first or last name with
delay of 3 sec on 6 seven segment displays. Implement the prototype first using Proteus and
then translate it to the hardware.
This is an ill-conceived assignment.
Why 6 seven segment displays? What happens if the name has more than 6 letters?
Where does the delay of 3 sec come into play?

Go back to the professor and ask for clarification.

In our assignment, we would ask students to display their student number on a single 7-segment display.
(Compare and contrast the different requirements of the two assignments.)
 

Thread Starter

Orionyx

Joined Jan 19, 2024
25
This is an ill-conceived assignment.
Why 6 seven segment displays? What happens if the name has more than 6 letters?
Where does the delay of 3 sec come into play?

Go back to the professor and ask for clarification.

In our assignment, we would ask students to display their student number on a single 7-segment display.
(Compare and contrast the different requirements of the two assignments.)
Yes sir you are right.
How can we display if we ignore 3 sec delay and number of 7 segment display.
 

MrChips

Joined Oct 2, 2009
34,820
Yes sir you are right.
How can we display if we ignore 3 sec delay and number of 7 segment display.
If you were allowed only one 7-segment display then it would make sense to display each character for x seconds and perhaps have the display go blank for y seconds in between characters.
 

Thread Starter

Orionyx

Joined Jan 19, 2024
25
If you were allowed only one 7-segment display then it would make sense to display each character for x seconds and perhaps have the display go blank for y seconds in between characters.
ok then how can we display letters separately on different 7 segment display?
 
Top