Generally, you can see the digital displays which display the score when buttons are pressed on scoreboards. The main heart of this scoreboard is 2 digits up-down counter circuit. The 2 digits are displayed on two 7 segment displays.

In this project, I will show you how to build a 2 digit up-down counter circuit using both 8051 Microcontroller and ATmega8 Microcontroller.

2 Digit Up Down Counter Circuit Principle

The main principle of the 2 Digit Up Down Counter circuit is to increment the values on seven segment displays by pressing the button. When button 1 is pressed, the value on the display is incremented by one and when the other button is pressed, the value on the display is decremented by one.

The value on the display can be incremented and decremented from 0-99 as it uses only 2 displays. If you want to display 3 digits, three displays should be used i.e. three 7-Segment Displays. There are many circuits available for 2 digits up/down counter but using a microcontroller reduces components and space on the board but simple programming is required.

Two Digit Up Down Counter Circuit Diagram

Circuit 1: Using 8051 Microcontroller

2 Digit Up Down Counter Circuit Diagram 8051

Components Required

  • AT89C51 (8051 Microcontroller)
  • 2 X 7-Segment Displays (Common Anode)
  • 2 X 2N2222 NPN Transistors
  • 3 X Push Buttons
  • 2 X 10KΩ Resistors
  • 2 X 470Ω Resistors
  • 8 X 100Ω Resistors
  • 11.0592 MHz Crystal
  • 2 X 33pF Capacitor
  • 10μF/16V Capacitor
  • 1KΩ X 8 Resistor Pack
  • Mini Breadboard
  • 5V Power Supply
  • 8051 Programmer

Circuit 2: Using ATmega8 Microcontroller

2 Digit Up Down Counter Circuit Diagram ATmega8

Components Required

  • ATmega8 Microcontroller
  • 2 X 7-Segment Displays (Common Anode)
  • 2 X 10KΩ Resistors
  • 2 X 330Ω Resistors
  • 2 X Push Buttons

Circuit Design of 2 Digit 7-Segment Up Down Counter 

The 2digit Up/Down counter consists of two seven segment displays connected to ATMEGA8 microcontroller. The seven segment display consists of 8 pins and one common pin.

There are mainly two types of seven segment displays 1) common cathode 2) common anode. The display here used is a common cathode display. Generally, for common cathode displays, the common pin should be grounded and for a common anode, it should be connected to VCC.

In Seven segment display, there are seven segments and they are similar to seven LEDs. Seven pins belong to these seven segments whereas the last pin is a dot at the corner of the display. For the common cathode, display assigning logic1 to the segment pin glows particular segment. In the case of common anode, the segment pin should be assigned logic0 in order to glow the segment. Each segment is given one name starting from ‘a ‘and last segment dot is ‘h’.

In our circuit, seven segment display is connected to the microcontroller through a current limiting resistor of 330 ohms. Two buttons in pull-down mode are also connected.

The necessity of connecting the buttons in pull-down mode is to avoid floating state of the button i.e. unknown state. If the button is connected in pull-down mode, this ensures that the button is initially in logic0 state.

How to Operate 2 Digit Up Down Counter Circuit?

  1. Initially, power the circuit.
  2. The values displaying on seven segments is ‘00’.
  3. Press button 1 in the circuit. The value on the seven segments is incremented to ‘01’.
  4. Again press button 1. The value on the displays is ’02’.
  5. Now, press the second button. You can see the value decrementing to 01.
  6. The value on the displays can be incremented up to 99, after 99 if button 1 is pressed it starts incrementing from ‘01’. If the second button is pressed after decrementing to ‘00’, it displays ‘00’. This value can be changed only after incrementing the value atleast to ‘01’.

Algorithm for Programming

  1. Declare the corresponding PORTS of the microcontrollers as input or output.
  2. Declare an array with the seven segment codes i.e, if number one is to be displayed, then the binary value that should be passed is as follows:

dp  g  f   e   d   c   b  a
1     1  1   1   1   0   0  1

This is because b and c segments should be assigned with logic 0 to display ‘1’, I am using a Common Anode 7-Segment Display. So, the binary value 0b11111001 or the hexadecimal value 0xf9 is assigned to the particular port on which ‘1’ is to be displayed. The array should consist of 0-9 binary or hexa values.

  1. Check the status of the buttons using if else loop.
  2. If button 1 is pressed for the first time, first seven segments (on the left) should display 0 and the other should display 1. So the output is ‘01’.
  3. If button 1 is pressed for the second time, the value on the second button should be incremented by one.
  4. If the second button is pressed, the value on the first segment should be decremented by one value.

2 Digit Up Down Counter Circuit Applications

  1. This circuit can be used in scoreboards.
  2. Up/down counter is used for counting the number of objects passed through a point.
  3. It is used to count the number of persons entering a room.

Limitations of this Circuit

This particular Up/Down Counter circuit is limited to 2 digits i.e. 0-99. If more than 3 digits are required, one should use another display which requires more pins from the controller.


Please enter your comment!
Please enter your name here