# BCD to 7 Segment Decoder

Cuthbert Nyack
A decoder using NAND gates which can be used to drive 7 segment displays from a BCD input is illustrated below. BCD input consists of A, B, C and D with A being the LSB and D the MSB. States of A, B, C and D can be changed by clicking on the appropriate tab. The circuit will display something with inputs from 10 to 15. These are don't care states and in a real system these inputs will not occur. Blue corresponds to LOW and red to HI.

Table of BCD inputs for different segments
Decimal D C B A f(a) f(b) f(c) f(d) f(e) f(f) f(g)
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1

Karnaugh Map for f(a)
!A A A !A
!B 1 0 1 0 !D
B 1 1 1 1 !D
B x x x x D
!B 1 1 x x D
!C !C C C
f(a) = !A!C + AC + B + D

Decimal 10(1010) to 15(1111) are marked as x for don't care states.
Using squares with orange letters and light blue background gives f(a) = !A!C + AC + B + D.
Similar analysis for the other segments using Karnaugh maps gives:-

## f(b) = !C + AB + !A!B f(c) = A + !B + C f(d) = !A!C + B!C + D + !AB + A!BC f(e) = !A!C + !AB f(f) = D +!AC + !A!B + !BC f(g) = !AC + !BC + D + B!C

These functions are implemented in the applet below.