MAX7219 7-Segment Using Arduino

About: someone who likes electronics

MAX7219 is an IC that is used to drive 7-segment LEDs (up to 8 digits), block displays (bar displays), and 64 individual LEDs that are comon cathodes. To communicate with a microcontroller, MAX7219 uses the SPI communication system. So to drive 64 LEDs only need 3 ports of the microcontroller.

In this article I will show you how to use a 7-Segement module that uses IC MAX7219 as the driver.

Required components:

Required Library:

  • LedControl

In this tutorial I use Arduino Nano board. If you have never used it. I suggest reading my previous article about "How to Use Arduino Nano".

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Assemble All Components

Connect the Arduino board to the 7-Segment module. See the picture or instruction that I wrote below:

Arduino to 7-Segment

+5V => VCC


D12 => DIN

D11 => CLK

D10 => CS/LOAD

Step 2: Add Library

After the circuit is complete. Add the "LedControl" library to the Arduino IDE.

To add a library to Arduino, you can read it in the article "How to Add an External Library to Arduino" that I made earlier".

Step 3: Additional Functions

After adding the LedControl library. You can use additional functions to control the 7-Segment module.

  • Argument
addr - address of the display
digit - the position of the digit on the display (0..7)\
value - the value to be displayed. (0x00..0x0F)<p>dp    sets the decimal point.</p>
  • Function
setChar(addr,digit,value.dp); //to display the char type value for 7-bit ASCII encoding

setDigit(addr,digit,value,bolean dp); //to display digits and characters in one function<br>
setRow(addr,digit,value,boolean dp); //to display the object in the desired digit

For more details, please read here.

Step 4: Upload Sketch

I have sketched for the trial of this 7-Segment module. You can copy the code below, then paste it in your sketch.

//We always have to include the library
#include "LedControl.h"

/* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */ LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit between updates of the display */ unsigned long delaytime=500;

void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0); }

void hello(){ lc.setChar(0,7,'H',false); lc.setChar(0,6,'E',false); lc.setChar(0,5,'L',false); lc.setChar(0,4,'L',false); lc.setChar(0,3,'0',false); lc.setChar(0,2,'.',false); lc.setChar(0,1,'.',false); lc.setChar(0,0,'.',false); delay(delaytime+1000); lc.clearDisplay(0); delay(delaytime); lc.setDigit(0,7,1,false); delay(delaytime); lc.setDigit(0,6,2,false); delay(delaytime); lc.setDigit(0,5,3,false); delay(delaytime); lc.setDigit(0,4,4,false); delay(delaytime); lc.setDigit(0,3,5,false); delay(delaytime); lc.setDigit(0,2,6,false); delay(delaytime); lc.setDigit(0,1,7,false); delay(delaytime); lc.setDigit(0,0,8,false); delay(1500); lc.clearDisplay(0); delay(delaytime); }

void loop() { hello(); }

Or download the file below:

Step 5: Result

Ejoy the result.

If there are questions just write them in the comments column.

See you in next article.

Be the First to Share


    • CNC Contest

      CNC Contest
    • Make it Move

      Make it Move
    • Teacher Contest

      Teacher Contest