My Project, I need Help!!!!!!

Thread Starter

mnunez021

Joined Feb 27, 2009
18
I need some help with a project. The project wants me to create a 7-Segment display using standard logic gates, AND, OR, NOT, NAND, NOR, XOR, and XNOR. Any suggestions? The last 6 inputs on the table will be a period as the output. Help please!!!
 

SgtWookie

Joined Jul 17, 2007
22,230
Since this is an assignment, we can't do it for you - but we can offer suggestions.

Thingmaker3's suggestion to develop a truth table is an excellent one.

It may help you to examine a datasheet for an existing commercial device that performs a similar, though not exactly the same function.

A TTL 74x47 IC is a 7-segment display driver. Here is a link to Texas Instruments' datasheet for that device:
http://focus.ti.com/lit/ds/symlink/sn7447a.pdf

As you can see, these types of devices are not exactly simple; however with enough thought your goal is achieveable. Just don't panic. :)

Note that for your non-BCD values (1010 thru 1111), you can test for input D being high AND (C or B) high - then outputs a thru g should be high (display off) but the decimal point lit.
 

SgtWookie

Joined Jul 17, 2007
22,230
OK - so the decimal point isn't lighting at all?

That bottom OR gate sure has a lot of inputs. Isn't that the input for the decimal point?

Your MSB is I3, right?

Remember what I was suggesting earlier about detecting invalid BCD input?

In this case, if I3 is high, AND (I2 OR I1) are high, the decimal point should light up.

I'm also seeing a lot of "floating" inputs (ie: not connected to anything). This can cause big problems in real-world circuits, particularly with CMOS devices. I even see a 3-input AND gate with only one wired input!
 
Last edited:

SgtWookie

Joined Jul 17, 2007
22,230
That still doesn't make sense.

Take another look at the possible inputs
Bin Dec
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
All of the decimal numbers from 0 to 9 can be displayed in a single digit.
But, 10 thru 15 require two digits - so the decimal point should then be lit.
Notice in the table that it doesn't matter what the LSB is; only if the MSB (I3) is '1', and either of I2 or I1 are also '1' should the decimal point be lit.
 

SgtWookie

Joined Jul 17, 2007
22,230
I'd never used Logisim before, but it seems like a good tool for teaching logic.

Here's a tip: instead of using the "input pins" labeled I0, I1, I2, I3...
Use the Clock component in the Base library.
For I0, use 1 tick low, 1 tick high.
For I1, use 2 ticks low, 2 ticks high
For I2, use 4 ticks low, 4 ticks high
For I3, use 8 ticks low, 8 ticks high.
Use Ctrl+T to tick your way through the simulation.
 

mik3

Joined Feb 4, 2008
4,843
Why are you using NOT gates on the inputs of some gates and connect them to the inverting line of the input signal?

You could connect the inputs of those gates directly to the non inverting line of the input signal.
 

mik3

Joined Feb 4, 2008
4,843
First make a truth table with all inputs and outputs. Note all the possible combination for the input signals and then put what value you want each output to have for each combination. Then use sum of products or product of sums to derive the boolean equation for each output and then build your circuit. If you know how to simplify it have a go as to minimize the hardware size.
 

SgtWookie

Joined Jul 17, 2007
22,230
OK, so if the input is 1010 through 1111, the decimal point should be ON (input high), and everything else should be OFF (all other inputs to the 7-segment display low).

You already have a truth table as far as all of the inputs, and what should be displayed.

Now you need to work up what inputs to the 7-segment display should be lit for each input.

For each 7-segment "bar", if the I3-I0 input is less than 1010, then SOMEthing should be lit up. You say you already have that part working.

Except when the decimal point is supposed to turn on. Then everything else is supposed to be off.

Why don't you try to implement the function:
DecimalPoint = I3 AND (I2 OR I1)
and go from there?
 
Top