#include "MAX7219_Matrix.h"
sbit CLC at ODR13_GPIOB_ODR_bit;
sbit CS at ODR0_GPIOB_ODR_bit;
sbit DIN at ODR1_GPIOB_ODR_bit;
unsigned short Matrix_Buffer[][8 ] = {
{0x00 , 0x00 , 0x00 , 0x00 , 0x00 },// (space)
{0x00 , 0x00 , 0x5F , 0x00 , 0x00 },// !
{0x00 , 0x07 , 0x00 , 0x07 , 0x00 },// "
{0x14 , 0x7F , 0x14 , 0x7F , 0x14 },// #
{0x24 , 0x2A , 0x7F , 0x2A , 0x12 },// $
{0x23 , 0x13 , 0x08 , 0x64 , 0x62 },// %
{0x36 , 0x49 , 0x55 , 0x22 , 0x50 },// &
{0x00 , 0x05 , 0x03 , 0x00 , 0x00 },// '
{0x00 , 0x1C , 0x22 , 0x41 , 0x00 },// (
{0x00 , 0x41 , 0x22 , 0x1C , 0x00 },// )
{0x08 , 0x2A , 0x1C , 0x2A , 0x08 },// *
{0x08 , 0x08 , 0x3E , 0x08 , 0x08 },// +
{0x00 , 0x50 , 0x30 , 0x00 , 0x00 },// ,
{0x08 , 0x08 , 0x08 , 0x08 , 0x08 },// -
{0x00 , 0x30 , 0x30 , 0x00 , 0x00 },// .
{0x20 , 0x10 , 0x08 , 0x04 , 0x02 },// /
{0x3E , 0x51 , 0x49 , 0x45 , 0x3E },// 0
{0x00 , 0x42 , 0x7F , 0x40 , 0x00 },// 1
{0x42 , 0x61 , 0x51 , 0x49 , 0x46 },// 2
{0x21 , 0x41 , 0x45 , 0x4B , 0x31 },// 3
{0x18 , 0x14 , 0x12 , 0x7F , 0x10 },// 4
{0x27 , 0x45 , 0x45 , 0x45 , 0x39 },// 5
{0x3C , 0x4A , 0x49 , 0x49 , 0x30 },// 6
{0x01 , 0x71 , 0x09 , 0x05 , 0x03 },// 7
{0x36 , 0x49 , 0x49 , 0x49 , 0x36 },// 8
{0x06 , 0x49 , 0x49 , 0x29 , 0x1E },// 9
{0x00 , 0x36 , 0x36 , 0x00 , 0x00 },// :
{0x00 , 0x56 , 0x36 , 0x00 , 0x00 },// ;
{0x00 , 0x08 , 0x14 , 0x22 , 0x41 },// <
{0x14 , 0x14 , 0x14 , 0x14 , 0x14 },// =
{0x41 , 0x22 , 0x14 , 0x08 , 0x00 },// >
{0x02 , 0x01 , 0x51 , 0x09 , 0x06 },// ?
{0x32 , 0x49 , 0x79 , 0x41 , 0x3E },// @
{0x7E , 0x11 , 0x11 , 0x11 , 0x7E },// A
{0x7F , 0x49 , 0x49 , 0x49 , 0x36 },// B
{0x3E , 0x41 , 0x41 , 0x41 , 0x22 },// C
{0x7F , 0x41 , 0x41 , 0x22 , 0x1C },// D
{0x7F , 0x49 , 0x49 , 0x49 , 0x41 },// E
{0x7F , 0x09 , 0x09 , 0x01 , 0x01 },// F
{0x3E , 0x41 , 0x41 , 0x51 , 0x32 },// G
{0x7F , 0x08 , 0x08 , 0x08 , 0x7F },// H
{0x00 , 0x41 , 0x7F , 0x41 , 0x00 },// I
{0x20 , 0x40 , 0x41 , 0x3F , 0x01 },// J
{0x7F , 0x08 , 0x14 , 0x22 , 0x41 },// K
{0x7F , 0x40 , 0x40 , 0x40 , 0x40 },// L
{0x7F , 0x02 , 0x04 , 0x02 , 0x7F },// M
{0x7F , 0x04 , 0x08 , 0x10 , 0x7F },// N
{0x3E , 0x41 , 0x41 , 0x41 , 0x3E },// O
{0x7F , 0x09 , 0x09 , 0x09 , 0x06 },// P
{0x3E , 0x41 , 0x51 , 0x21 , 0x5E },// Q
{0x7F , 0x09 , 0x19 , 0x29 , 0x46 },// R
{0x46 , 0x49 , 0x49 , 0x49 , 0x31 },// S
{0x01 , 0x01 , 0x7F , 0x01 , 0x01 },// T
{0x3F , 0x40 , 0x40 , 0x40 , 0x3F },// U
{0x1F , 0x20 , 0x40 , 0x20 , 0x1F },// V
{0x7F , 0x20 , 0x18 , 0x20 , 0x7F },// W
{0x63 , 0x14 , 0x08 , 0x14 , 0x63 },// X
{0x03 , 0x04 , 0x78 , 0x04 , 0x03 },// Y
{0x61 , 0x51 , 0x49 , 0x45 , 0x43 },// Z
{0x00 , 0x00 , 0x7F , 0x41 , 0x41 },// [
{0x02 , 0x04 , 0x08 , 0x10 , 0x20 },// "\"
{0x41 , 0x41 , 0x7F , 0x00 , 0x00 },// ]
{0x04 , 0x02 , 0x01 , 0x02 , 0x04 },// ^
{0x40 , 0x40 , 0x40 , 0x40 , 0x40 },// _
{0x00 , 0x01 , 0x02 , 0x04 , 0x00 },// `
{0x20 , 0x54 , 0x54 , 0x54 , 0x78 },// a
{0x7F , 0x48 , 0x44 , 0x44 , 0x38 },// b
{0x38 , 0x44 , 0x44 , 0x44 , 0x20 },// c
{0x38 , 0x44 , 0x44 , 0x48 , 0x7F },// d
{0x38 , 0x54 , 0x54 , 0x54 , 0x18 },// e
{0x08 , 0x7E , 0x09 , 0x01 , 0x02 },// f
{0x08 , 0x14 , 0x54 , 0x54 , 0x3C },// g
{0x7F , 0x08 , 0x04 , 0x04 , 0x78 },// h
{0x00 , 0x44 , 0x7D , 0x40 , 0x00 },// i
{0x20 , 0x40 , 0x44 , 0x3D , 0x00 },// j
{0x00 , 0x7F , 0x10 , 0x28 , 0x44 },// k
{0x00 , 0x41 , 0x7F , 0x40 , 0x00 },// l
{0x7C , 0x04 , 0x18 , 0x04 , 0x78 },// m
{0x7C , 0x08 , 0x04 , 0x04 , 0x78 },// n
{0x38 , 0x44 , 0x44 , 0x44 , 0x38 },// o
{0x7C , 0x14 , 0x14 , 0x14 , 0x08 },// p
{0x08 , 0x14 , 0x14 , 0x18 , 0x7C },// q
{0x7C , 0x08 , 0x04 , 0x04 , 0x08 },// r
{0x48 , 0x54 , 0x54 , 0x54 , 0x20 },// s
{0x04 , 0x3F , 0x44 , 0x40 , 0x20 },// t
{0x3C , 0x40 , 0x40 , 0x20 , 0x7C },// u
{0x1C , 0x20 , 0x40 , 0x20 , 0x1C },// v
{0x3C , 0x40 , 0x30 , 0x40 , 0x3C },// w
{0x44 , 0x28 , 0x10 , 0x28 , 0x44 },// x
{0x0C , 0x50 , 0x50 , 0x50 , 0x3C },// y
{0x44 , 0x64 , 0x54 , 0x4C , 0x44 },// z
{0x00 , 0x08 , 0x36 , 0x41 , 0x00 },// {
{0x00 , 0x00 , 0x7F , 0x00 , 0x00 },// |
{0x00 , 0x41 , 0x36 , 0x08 , 0x00 },// }
{0x02 , 0x01 , 0x02 , 0x04 , 0x02 },// ~
{0x08 , 0x1C , 0x2A , 0x08 , 0x08 } // <-
};
void Serial_16(uint8_t REG,uint8_t DAT){
int i;
CS=0 ;
for (i=0 ;i<8 ;i++){
if (REG & 0x0080 ){DIN=1 ;}
CLC=1 ;
Delay_US(1 );
CLC=0 ;
DIN=0 ;
REG = REG << 1 ;
}
for (i=0 ;i<8 ;i++){
if (DAT & 0x0080 ){DIN=1 ;}
CLC=1 ;
Delay_US(1 );
CLC=0 ;
DIN=0 ;
DAT = DAT << 1 ;
}
CS=1 ;
}
void MAX7219_Init(){ //инициализация MAX7219
CS=1 ; Delay_US(1 );
Serial_16(0x0C ,0x01 ); //Гашение индикатора
Serial_16(0x0A ,0x01 ); // Яркость минимум
Serial_16(0x0B ,0x07 ); // Используется вся матрица
Serial_16(0x09 ,0x00 ); // Отключение декодирования
}
void MAX7219_test(){ //Тест матрицы
Serial_16(0x0F ,0x01 ); //Включение всей матрицы на 0.2 секунды
Delay_ms(200 );
Serial_16(0x0F ,0x00 );
}
void MAX7219_Brightness(uint8_t Brightness){ //Установка яркости (0-15)
if (Brightness<16 ){Serial_16(0x0A ,Brightness);}
}
void MAX7219_draw8x8(uint8_t *buffer){ //Вывод на экран
uint8_t x;
for (x=1 ; x<9 ; x++){
Serial_16(x,buffer[x-1 ]);
}
}