12-Pin 7 Segment Display Wiring Tutorial

About: Software Engineer at Digilent Inc.

The 12-pin 7 segment display seemed quite difficult to find tutorials or a good data sheet for when I first started working with it. Thus, I decided that an instructable on how to wire it up and some basics on how to code it in MPIDE (also will work in the Arduino IDE) would be a great resource.

The LabVIEW Interaction Parts Kit includes a 12-pin 7 segment display. In the near future, once you have it wired up, you will be able to use LabVIEW MakerHub LINX with some custom firmware to control your 7 segment display easily with LabVIEW. I'll create an instructable on how to set that up once the new version of LINX comes out so stay tuned!

Step 1: Materials

1. A microcontroller (such as a chipKIT WF32)

2. A breadboard (found in the LabVIEW Interaction Parts Kit)

3. 4 digit 12-pin 7 segment display (pictured above and found in the LabVIEW Interaction Parts Kit)

4. 4x 240 ohm resistors (found in the LabVIEW Interaction Parts Kit)

5. Wires

6. A USB A to mini B cable

Step 2: A Brief Overview

Seven segment displays have, like the name suggests, seven segments. These segments are usually labeled A-G and some seven segment displays even have a decimal point that you can light up. For multiple digit displays, usually only one digit is shown at once by writing a specific digital line high or low.

To display a number that is more than one digit (ie 271), your code must set the segments to display a "1" and then light up that digit. Then your code will "erase" the segments and then set the segments to display a "7" and then light up the digit to the left of the first one. The same is done to display the 2.

If your code switches between displaying each of the individual digits fast enough, it will appear as if all of the digits are being displayed at once! This trickery is called persistence of vision and is accomplished using multiplexing (the technique described above).

In order to wire up the seven segment display, we'll need digital lines for the 7 segments (and another for the decimal point) and then 4 more digital lines to select which digit to display. This gives a total of 12 pins!

Step 3: Wiring

Alright now that we have an understanding of how it works, let's wire it up. Refer to the picture above so you know which segment corresponds to which letter we describe it with! Also check out the picture with the labeled pins. Anodes 1-4 are used to determine which digit is on.

For each anode line, you'll need to connect a 240 ohm resistor between the pin and the digital channel you'll be connecting it to.

Connect segments A, B, C, D, E, F, G, and DP to pins 5, 3, 32, 30, 29, 4, 33, and 31 respectively. Connect Anode1 to pin 9 and Anodes2-4 to pins 11-13 respectively.

Step 4: Example Code

Writing the digital channel that the segment is connected to LOW will turn that segment on. The "anode" channels determine which digit is displayed. Only one anode channel is high at a time to display the corresponding digit. To display the first digit, you'd write Anode1 HIGH and Anodes2-4 LOW.

Here is some (admittedly poorly written) example code that I created. If you open the serial monitor at 9600 baud, you can send the value that you want the 7 segment to display. If you're using the Arduino IDE, you can just copy paste the code and it will work.

Stay tuned for a wiring tutorial for a LED matrix (without a driver) and the custom LINX firmware so you can easily control the 7 segment display with LabVIEW!

Share

    Recommendations

    • Arduino Contest 2019

      Arduino Contest 2019
    • Trash to Treasure

      Trash to Treasure
    • Tape Contest

      Tape Contest

    Discussions

    0
    None
    albnar

    Question 7 months ago on Introduction

    Hi, I hope you get this question.

    Your video

    12-Pin 7 Segment Display Wiring Tutorial

    was very useful for me. I integrated your code with some modifications to show a value obtained from a H7X711. I have problems with the readings. I get only one digit: the left most. If reading is tree digit long, for example 125 I get 1 at right place. With a reading of two digits, for example 35, I get just 3 at the right place, and with one digit for example 5 only 5 at the right most position.

    I suspect it have to do with the length of string.

    I do not understand in your code the way you build the variable "value" for example: value.concat(a-48) . Why -48?

    Could you help me?

    If you need I can upload my code . How can I do it?

    Best regards

    Alberto