krypton logo as loader
Be Patient!

Interfacing Dot Matrix Display With Arduino

A display system is an essential component to convey information quickly. Let's understand how to interface a Dot Matrix Display with arduino.
Interfacing Dot Matrix Display With Arduino

In any institute, organization or public displays play a crucial role to communicate information. The information may be related to current situations, updates, or can be advertisements about the products. People are presently adapting to the idea of the world having information at their fingertips.A Dot-Matrix Display is made up of LEDs arranged or wired in the form of a matrix. Symbol, Graphics, Characters, Alphabets, and Numbers can be displayed with a Dot Matrix Display.

Dot Matrix Display

A Dot-Matrix Display is made up of light-emitting diodes arranged or wired in the form of a matrix. Symbols, Graphics, Characters, Alphabets, and Numbers are displayed in applications by using Dot-Matrix Display and can be displayed together in constant as well as scrolling motion. Variable dimensions in which Dot Matrix Display is manufactured are such as 5x7, 8x8, 16x8, 128x16, 128x32 and 128x64 where the first number shows LEDs in rows and the second number shows LEDs in columns, respectively. Displays are available and can be manufactured in different colours such as Red, Green, Yellow, Blue, Orange, and White and multicolour.

In DMD, If we powered different LEDs separately we need different I/O pins physically which is not reliable In an 8×8 matrix, the LED's would need 64 I/O pins, one for each LED pixel. in order to minimize the number of pins required to drive them many LEDs are wired together in rows and columns therefore By wiring all the anodes together in rows (R1 through R8), and cathodes in columns (C1 through C8), the required number of I/O pins is reduced to 16. Each LED is addressed by its row and column number. You may manufacture it can be as common cathode or common anode .The matrix pattern is made either in row anode-column cathode or row cathode-column anode pattern. In row anode-column cathode pattern, the entire row is anode while all columns serve as cathode which is shown below and it is vice-versa in row cathode-column anode pattern. If we want to display any character or number then according to that number we have to pull down or high the pins of matrixFor example, we have to enable row and the column pins as per the table given below to display a character M where the on LED is denoted by red dot.

How to display M character on Dot matrix display?

Chart for displaying character M on Dot matrix Display
Chart for displaying character M on Dot matrix Display

System Design and Circuit Diagram

The following fig shows the interfacing diagram of Dot Matrix Display With arduino.

Circuit diagram of dot matrix display interfaced with arduino
Circuit diagram of dot matrix display interfaced with arduino

Above fig shows hardware interconnection between ARDUINO nano (ATMEGA328P), HUB(pins) of Dot matrix display(DMD 16*96)

Pin configuration of DMD

  • Pin no. 1: It is a (N0E) enable pin used to enable our main element of the project which is a dot matrix display
  • Pin no. 2: Digital communication pin A is connected to pin no 9 which is the D6 pin that is the digital out pin of ARDUINO
  • Pin no. 3, 5, 7, 9, 11, 13, 15: are connected to pin no. 4 which is the ground pin of Arduino
  • Pin no. 4: digital communication pin B is connected to pin no 10 which is a D7 pin which is also a digital out pin
  • Pin no. 6: Data line C for communication
  • Pin no. 8: this is the CLK pin connected to pin no 16 which is the D13 pin of ARDUINO
  • Pin no. 10: this is a system clock pin connected to pin 11 of ARDUINO, which is the D8 pin
  • Pin no. 12: which is system ready check is connected to pin no 14 of the ARDUINO which is a D14 pin

Scrolling Text On DMD Display

The coding part

#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include "SystemFont5x7.h"
#include "Arial_Black_16_ISO_8859_1.h"



void ScanDMD() {

void setup() {
  Timer1.initialize( 3000 );
  Timer1.attachInterrupt( ScanDMD );
  dmd.clearScreen( true );

void loop() {
  dmd.clearScreen( true );
  dmd.drawMarquee(MSG, strlen(MSG), (30 * DISPLAYS_ACROSS) - 1, 0);
  long start = millis();
  long timer = start;

  while(1) {
    if ((timer + 39.9) < millis()) {
      dmd.stepMarquee(-1, 0);
      timer = millis();


The prototype of the Arduino-based display toolkit was effectively designed. This prototype has to be facilities to be integrated with the display board it can solve the problem of instant information transfer on the campus, and it is the best replacement for regular flex boards, In future, we can add an IR sensor to detect human motion where the display is mounted and the output of that sensor given to primary of the relay by means if IR sensor detects human around display then its output is given to display and the NO of the relay get closed, and the display will display our message for some programmed time if there is no action around display then it will undergo standby mode and reduced power consumption.

Prev article Interfacing 16x2 LCD display with 8051 (AT89S51/AT89S52 )Next article Secarmy CTF 2.0 junior walkthrough

Vedprakash Aamale

Say Hello

Thank you for visiting my site. If you have any questions, inquiries, or just want to say hello, please feel free to reach out to me, I'll try my best to get back to you ASAP.