8 * 8 LED Module

Overview

The internal structure and appearance of the lattice are as follows.

The 8X8 lattice is composed of 64 LEDS, and each LED is placed at the intersection of the row line and the column line. When the corresponding row is set to level 1 and a column is set to level 0, the corresponding diode will light up.If you want to turn the first dot on, then 9 pins to high level 13 pins to low level, then the first dot will be on;If the first row is to be lit, the 9th pin is to be high, and (13, 3, 4, 10, 6, 11, 15, 16) these pins are to be low, then the first row is to be lit;If the first column is lit, the 13th pin is low, and (9, 14, 8, 12, 1, 7, 2, 5) is high, then the first column is lit.

Component Required:

  • 1 x Arduino Uno R3

  • 1 x 8*8 lattice model (LED Module)

  • 1 x 830 tie-points breadboard

  • 1 x tie-points breadboard( 82mmx53mm)

  • 22 x M-M wires (Male to Male jumper wires)

  • Potentiometer (220R)

Component Introduction

LED generally adopts scanning display, which can be divided into three ways in practical application

(1) Point scanning

(2) Line scanning

16 × 64=1024Hz, the period is less than 1ms.If the second and third methods are used, the frequency must be greater than 16 × 8=128Hz and the period less than 7.8ms to meet the visual retention requirements.In addition, when driving one column or one row (8 leds) at a time, additional driving circuit is needed to increase the current, otherwise the LED brightness will be insufficient.

Therefore, the column codes formed are 00H, 00H, 3EH, 41H, 41H, 3EH, 00H, 00H;As long as these codes are sent to the corresponding column line in turn, the number of "0" can be achieved.

Schematic of an 8 by 8 lattice

Physical wiring diagram:

Code:

unsigned char Text[] = {0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c};
void Draw_point(unsigned char x, unsigned char y)
{
  clear_();
  digitalWrite(x + 2, HIGH);
  digitalWrite(y + 10, LOW);
  delay(1);
}
void show_num(void)//
{
  unsigned char i, j, data;
  for (i = 0; i < 8; i++)
  {
    data = Text[i];
    for (j = 0; j < 8; j++)
    {
      if (data & 0x01)Draw_point(j, i);
      data >>= 1;
    }
  }
}
void setup() {
  int i = 0 ;
  for (i = 2; i < 18; i++)
  {
    pinMode(i, OUTPUT);
  }
  clear_();
}
void loop()
{
  show_num();
}
void clear_(void)//clear screen
{
  for (int i = 2; i < 10; i++)
    digitalWrite(i, LOW);
  for (int i = 0; i < 8; i++)
    digitalWrite(i + 10, HIGH);
}

Last updated