Store Byte arrays in flash memory

Hello, I apologize if this has already been covered or if this is too simple of a question, but I am fairly new to arduino. I am generating a series of byte arrays to send to an 8X8 LED matrix, but unfortunately this consumes a significant amount of memory. I have attempted to save the byte arrays to the flash (Using PROGMEM) as there is a large amount of open space there, but I am not getting very far. Any help would be greatly appreciated.

#include <LedControl.h>
#include <avr/pgmspace.h>

int DIN = 12;
int CS =  11;
int CLK = 10;
int time = 50;

byte Aone[8]=        {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Atwo[8]=        {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Athree[8]=      {0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Afour[8]=       {0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Afive[8]=       {0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Asix[8]=        {0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Aseven[8]=      {0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Aeight[8]=      {0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte Anine[8]=        {0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00};
byte Aten[8]=         {0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00};
byte Aeleven[8]=      {0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00};
byte Atwelve[8]=      {0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00};
byte Athirteen[8]=    {0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00};
byte Afourteen[8]=    {0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00};
byte Afifteen[8]=     {0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00};
byte Asixteen[8]=     {0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};
byte Aseventeen[8]=    {0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00};
byte Aeighteen[8]=     {0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00};
byte Anineteen[8]=     {0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00};
byte Atwenty[8]=       {0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00};
byte Atwentyone[8]=    {0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00};
byte Atwentytwo[8]=    {0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00};
byte Atwentythree[8]=  {0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00};
byte Atwentyfour[8]=   {0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00};
byte Atwentyfive[8]=    {0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00};
byte Atwentysix[8]=     {0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00};
byte Atwentyseven[8]=   {0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00};
byte Atwentyeight[8]=   {0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00};
byte Atwentynine[8]=    {0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00};
byte Athirty[8]=        {0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00};
byte Athirtyone[8]=     {0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00};
byte Athirtytwo[8]=     {0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00};
byte Athirtythree[8]=    {0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00};
byte Athirtyfour[8]=     {0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00};
byte Athirtyfive[8]=     {0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00};
byte Athirtysix[8]=      {0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00};
byte Athirtyseven[8]=    {0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00};
byte Athirtyeight[8]=    {0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00};
byte Athirtynine[8]=     {0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00};
byte Afourty[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00};
byte Afourtyone[8]=       {0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00};
byte Afourtytwo[8]=       {0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00};
byte Afourtythree[8]=     {0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00};
byte Afourtyfour[8]=      {0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00};
byte Afourtyfive[8]=      {0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00};
byte Afourtysix[8]=       {0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00};
byte Afourtyseven[8]=     {0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00};
byte Afourtyeight[8]=     {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00};
byte Afourtynine[8]=       {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00};
byte Afifty[8]=            {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00};
byte Afiftyone[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00};
byte Afiftytwo[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00};
byte Afiftythree[8]=       {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00};
byte Afiftyfour[8]=        {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00};
byte Afiftyfive[8]=        {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00};
byte Afiftysix[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00};
byte Afiftyseven[8]=        {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01};
byte Afiftyeight[8]=        {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03};
byte Afiftynine[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07};
byte Asixty[8]=             {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F};
byte Asixtyone[8]=          {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F};
byte Asixtytwo[8]=          {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F};
byte Asixtythree[8]=        {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F};
byte Asixtyfour[8]=         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};






LedControl lc=LedControl(DIN,CLK,CS,0);

void setup(){
 lc.shutdown(0,false);       //The MAX72XX is in power-saving mode on startup
 lc.setIntensity(0,15);      // Set the brightness to maximum value
 lc.clearDisplay(0);         // and clear the display
}

void loop(){ 
  
  printByte(Aone);
  delay(time);
  printByte(Atwo);
  delay(time);
  printByte(Athree);
  delay(time);
  printByte(Afour);
  delay(time);
  printByte(Afive);
  delay(time);
  printByte(Asix);
  delay(time);
  printByte(Aseven);
  delay(time);
  printByte(Aeight);
  delay(time);
  printByte(Anine);
  delay(time);
  printByte(Aten);
  delay(time);
  printByte(Aeleven);
  delay(time);
  printByte(Atwelve);
  delay(time);
  printByte(Athirteen);
  delay(time);
  printByte(Afourteen);
  delay(time);
  printByte(Afifteen);
  delay(time);
  printByte(Asixteen);
  delay(time);
  printByte(Aseventeen);
  delay(time);
  printByte(Aeighteen);
  delay(time);
  printByte(Anineteen);
  delay(time);
  printByte(Atwenty);
  delay(time);
  printByte(Atwentyone);
  delay(time);
  printByte(Atwentytwo);
  delay(time);
  printByte(Atwentythree);
  delay(time);
  printByte(Atwentyfour);
  delay(time);
  printByte(Atwentyfive);
  delay(time);
  printByte(Atwentysix);
  delay(time);
  printByte(Atwentyseven);
  delay(time);
  printByte(Atwentyeight);
  delay(time);
  printByte(Atwentynine);
  delay(time);
  printByte(Athirty);
  delay(time);
  printByte(Athirtyone);
  delay(time);
  printByte(Athirtytwo);
  delay(time);
  printByte(Athirtythree);
  delay(time);
  printByte(Athirtyfour);
  delay(time);
  printByte(Athirtyfive);
  delay(time);
  printByte(Athirtysix);
  delay(time);
  printByte(Athirtyseven);
  delay(time);
  printByte(Athirtyeight);
  delay(time);
  printByte(Athirtynine);
  delay(time);
  printByte(Afourty);
  delay(time);
  printByte(Afourtyone);
  delay(time);
  printByte(Afourtytwo);
  delay(time);
  printByte(Afourtythree);
  delay(time);
  printByte(Afourtyfour);
  delay(time);
  printByte(Afourtyfive);
  delay(time);
  printByte(Afourtysix);
  delay(time);
  printByte(Afourtyseven);
  delay(time);
  printByte(Afourtyeight);
  delay(time);
  printByte(Afourtynine);
  delay(time);
  printByte(Afifty);
  delay(time);
  printByte(Afiftyone);
  delay(time);
  printByte(Afiftytwo);
  delay(time);
  printByte(Afiftythree);
  delay(time);
  printByte(Afiftyfour);
  delay(time);
  printByte(Afiftyfive);
  delay(time);
  printByte(Afiftysix);
  delay(time);
  printByte(Afiftyseven);
  delay(time);
  printByte(Afiftyeight);
  delay(time);
  printByte(Afiftynine);
  delay(time);
  printByte(Asixty);
  delay(time);
  printByte(Asixtyone);
  delay(time);
  printByte(Asixtytwo);
  delay(time);
  printByte(Asixtythree);
  delay(time);
  printByte(Asixtyfour);
  delay(time);
  
  
  

}

void printByte(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(0,i,character[i]);
  }
}

Thanks!

Syntax is something like this: const byte PROGMEM Aone[8] = { ...... };

http://www.gammon.com.au/progmem

I appreciate your responses very much!
I must be doing something wrong as I am still getting errors when I attempt to verify. I have shortened the code for simplicity in posting.

#include <LedControl.h>
#include <avr/pgmspace.h>

int DIN = 12;
int CS =  11;
int CLK = 10;
int time = 50;
int k = 1;

const byte PROGMEM Aone[8]=        {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
const byte PROGMEM Atwo[8]=        {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


LedControl lc=LedControl(DIN,CLK,CS,0);

void setup(){
 lc.shutdown(0,false);       //The MAX72XX is in power-saving mode on startup
 lc.setIntensity(0,15);      // Set the brightness to maximum value
 lc.clearDisplay(0);         // and clear the display
}

void loop(){ 
  
  if (k == 1)
  {
  printByte(pgm_read_byte(&(Aone)));
  delay(time);
  printByte(pgm_read_byte(&(Atwo)));
  delay(time);
}
}

void printByte(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(0,i,character[i]);
  }
}

Here is the Error Message:

"ino: In function ‘void loop()’:

ino:26:13: error: invalid conversion from ‘uint8_t {aka unsigned char}’ to ‘byte* {aka unsigned char*}’ [-fpermissive]

ino:7:6: error: initializing argument 1 of ‘void printByte(byte*)’ [-fpermissive]

In file included from C:\Program Files (x86)\Arduino\libraries\LedControl\src/LedControl.h:30:0,

from My_LED_Matrix_7-11-2015_N4.ino:1:

ino:28:13: error: invalid conversion from ‘uint8_t {aka unsigned char}’ to ‘byte* {aka unsigned char*}’ [-fpermissive]
ino:7:6: error: initializing argument 1 of ‘void printByte(byte*)’ [-fpermissive]

"

    printByte(pgm_read_byte(Aone));

The extra bracket and "&" are not needed. However "pgm_read_byte" reads one byte, not an array. You can't pass that to:

void printByte(byte character [])

Look at my example on my linked page:

// Print a string from Program Memory directly to save RAM 
void printProgStr (const char * str)
{
  char c;
  if (!str) 
    return;
  while ((c = pgm_read_byte(str++)))
    Serial.print (c);
} // end of printProgStr

That's how you read a bunch of bytes.