#define SCK PB5
#define MISO PB4
#define MOSI PB3
#define CS PB2
#define DDR_SPI DDRB
#define DD_MISO DDB4
#define DD_MOSI DDB3
#define DD_SCK DDB2
volatile uint8_t j = 1;
volatile uint8_t i;
unsigned int ascii_characters[][8] = {
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000}, // space
{0b00000000,0b00000000,0b01001111,0b00000000,0b00000000}, // !
{0b00000000,0b00000111,0b00000000,0b00000111,0b00000000}, // "
{0b00010100,0b01111111,0b00010100,0b01111111,0b00010100}, // #
{0b00100100,0b00101010,0b01111111,0b00101010,0b00010010}, // $
{0b00100011,0b00010011,0b00001000,0b01100100,0b01100010}, // %
{0b00110110,0b01001001,0b01010101,0b00100010,0b01010000}, // &
{0b00000000,0b00000101,0b00000011,0b00000000,0b00000000}, // '
{0b00000000,0b00011100,0b00100010,0b01000001,0b00000000}, // (
{0b00000000,0b01000001,0b00100010,0b00011100,0b00000000}, // )
{0b00010100,0b00001000,0b00111110,0b00001000,0b00010100}, // *
{0b00001000,0b00001000,0b00111110,0b00001000,0b00001000}, // +
{0b00000000,0b01010000,0b00110000,0b00000000,0b00000000}, // ,
{0b00001000,0b00001000,0b00001000,0b00001000,0b00001000}, // -
{0b00000000,0b01100000,0b01100000,0b00000000,0b00000000}, // .
{0b00100000,0b00010000,0b00001000,0b00000100,0b00000010}, // /
{0b00111110,0b01010001,0b01001001,0b01000101,0b00111110}, // 0
{0b00000000,0b01000010,0b01111111,0b01000000,0b00000000}, // 1
{0b01000010,0b01100001,0b01010001,0b01001001,0b01000110}, // 2
{0b00100001,0b01000001,0b01000101,0b01001011,0b00110001}, // 3
{0b00011000,0b00010100,0b00010010,0b01111111,0b00010000}, // 4
{0b00100111,0b01000101,0b01000101,0b01000101,0b00111001}, // 5
{0b00111100,0b01001010,0b01001001,0b01001001,0b00110000}, // 6
{0b00000011,0b01110001,0b00001001,0b00000101,0b00000011}, // 7
{0b00110110,0b01001001,0b01001001,0b01001001,0b00110110}, // 8
{0b00000110,0b01001001,0b01001001,0b00101001,0b00011110}, // 9
{0b00000000,0b01101100,0b01101100,0b00000000,0b00000000}, // :
{0b00000000,0b01010110,0b00110110,0b00000000,0b00000000}, // ;
{0b00001000,0b00010100,0b00100010,0b01000001,0b00000000}, // <
{0b00010100,0b00010100,0b00010100,0b00010100,0b00010100}, // =
{0b00000000,0b01000001,0b00100010,0b00010100,0b00001000}, // >
{0b00000010,0b00000001,0b01010001,0b00001001,0b00000110}, // ?
{0b00110010,0b01001001,0b01111001,0b01000001,0b00111110}, // @
{0b01111110,0b00010001,0b00010001,0b00010001,0b01111110}, // A
{0b01111111,0b01001001,0b01001001,0b01001001,0b00111110}, // B
{0b00111110,0b01000001,0b01000001,0b01000001,0b00100010}, // C
{0b01111111,0b01000001,0b01000001,0b01000001,0b00111110}, // D
{0b01111111,0b01001001,0b01001001,0b01001001,0b01001001}, // E
{0b01111111,0b00001001,0b00001001,0b00001001,0b00000001}, // F
{0b00111110,0b01000001,0b01001001,0b01001001,0b00111010}, // G
{0b01111111,0b00001000,0b00001000,0b00001000,0b01111111}, // H
{0b01000001,0b01000001,0b01111111,0b01000001,0b01000001}, // I
{0b00110000,0b01000001,0b01000001,0b00111111,0b00000001}, // J
{0b01111111,0b00001000,0b00010100,0b00100010,0b01000001}, // K
{0b01111111,0b01000000,0b01000000,0b01000000,0b01000000}, // L
{0b01111111,0b00000010,0b00001100,0b00000010,0b01111111}, // M
{0b01111111,0b00000100,0b00001000,0b00010000,0b01111111}, // N
{0b00111110,0b01000001,0b01000001,0b01000001,0b00111110}, // O
{0b01111111,0b00001001,0b00001001,0b00001001,0b00000110}, // P
{0b00111110,0b01000001,0b01010001,0b00100001,0b01011110}, // Q
{0b01111111,0b00001001,0b00001001,0b00011001,0b01100110}, // R
{0b01000110,0b01001001,0b01001001,0b01001001,0b00110001}, // S
{0b00000001,0b00000001,0b01111111,0b00000001,0b00000001}, // T
{0b00111111,0b01000000,0b01000000,0b01000000,0b00111111}, // U
{0b00001111,0b00110000,0b01000000,0b00110000,0b00001111}, // V
{0b00111111,0b01000000,0b00111000,0b01000000,0b00111111}, // W
{0b01100011,0b00010100,0b00001000,0b00010100,0b01100011}, // X
{0b00000011,0b00000100,0b01111000,0b00000100,0b00000011}, // Y
{0b01100001,0b01010001,0b01001001,0b01000101,0b01000011}, // Z
{0b01111111,0b01000001,0b01000001,0b00000000,0b00000000}, // [
{0b00000010,0b00000100,0b00001000,0b00010000,0b00100000}, // '\'
{0b00000000,0b00000000,0b01000001,0b01000001,0b01111111}, // ]
{0b00000100,0b00000010,0b00000001,0b00000010,0b00000100}, // ^
{0b01000000,0b01000000,0b01000000,0b01000000,0b01000000}, // _
{0b00000000,0b00000001,0b00000010,0b00000100,0b00000000}, // `
{0b00100000,0b01010100,0b01010100,0b01010100,0b01111000}, // a
{0b01111111,0b01001000,0b01000100,0b01000100,0b00111000}, // 0b
{0b00111000,0b01000100,0b01000100,0b01000100,0b00100000}, // c
{0b00111000,0b01000100,0b01000100,0b01001000,0b01111111}, // d
{0b00111000,0b01010100,0b01010100,0b01010100,0b00011000}, // e
{0b00001000,0b01111110,0b00001001,0b00000001,0b00000010}, // f
{0b00001100,0b01010010,0b01010010,0b01010010,0b00111110}, // g
{0b01111111,0b00001000,0b00000100,0b00000100,0b01111000}, // h
{0b00000000,0b01000100,0b01111101,0b01000000,0b00000000}, // i
{0b00100000,0b01000000,0b01000100,0b00111101,0b00000000}, // j
{0b01111111,0b00010000,0b00101000,0b01000100,0b00000000}, // k
{0b00000000,0b01000001,0b01111111,0b01000000,0b00000000}, // l
{0b01111000,0b00000100,0b00001000,0b00000100,0b01111000}, // m
{0b01111100,0b00001000,0b00000100,0b00000100,0b01111000}, // n
{0b00111000,0b01000100,0b01000100,0b01000100,0b00111000}, // o
{0b01111100,0b00010100,0b00010100,0b00010100,0b00001000}, // p
{0b00001000,0b00010100,0b00010100,0b01111100,0b00000000}, // q
{0b01111100,0b00001000,0b00000100,0b00000100,0b00001000}, // r
{0b01001000,0b01010100,0b01010100,0b01010100,0b00100000}, // s
{0b00000100,0b00111111,0b01000100,0b01000000,0b00100000}, // t
{0b00111100,0b01000000,0b01000000,0b00100000,0b01111100}, // u
{0b00011100,0b00100000,0b01000000,0b00100000,0b00011100}, // v
{0b00111100,0b01000000,0b00110000,0b01000000,0b00111100}, // w
{0b01000100,0b00101000,0b00010000,0b00101000,0b01000100}, // x
{0b00001100,0b01010000,0b01010000,0b01010000,0b00111100}, // y
{0b01000100,0b01100100,0b01010100,0b01001100,0b01000100}, // z
{0b00000000,0b00001000,0b00110110,0b01000001,0b00000000}, // {
{0b00000000,0b00000000,0b01111111,0b00000000,0b00000000}, // |
{0b00000000,0b01000001,0b00110110,0b00001000,0b00000000}, // }
{0b00001000,0b00000100,0b00000100,0b00001000,0b00000100} // ~
}; // characters[95]
char numbers[][8] = {
{0b00001000, 0b00001100, 0b00001010, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b11111111}, // number 1
{0b00001110, 0b00010010, 0b00010000, 0b00011000, 0b00000100, 0b00000100, 0b00001000, 0b11111111}, // number 2
{0b00011100, 0b00100010, 0b00100001, 0b00010000, 0b00100000, 0b01000000, 0b00100000, 0b00011100}, // number 3
{0b01000010, 0b01000010, 0b01000010, 0b01111110, 0b01000000, 0b01000000, 0b01000000, 0b01000000}, // number 4
{0b11111000, 0b00001000, 0b00001000, 0b00011000, 0b00100000, 0b01000000, 0b00100000, 0b00011110} // number 5
};
char number_2[8] = {
0b00000000,
0b01000100,
0b00000000,
0b00000000,
0b10000010,
0b01111100,
0b00000000,
0b00000000
};
// unsigned int angryface_B[] = {0x00, 0x00, 0x66, 0x66, 0x00, 0x18, 0x24, 0x42, 0x00};
int main(void)
{
Serial.begin(115200);
SPI_MasterInit();
// Serial.println(1);
// SPI_MasterInit();
PORTD |= (1 << MISO);
sei();
while (1)
{
if (Serial.available())
{
char symb = Serial.read();
Serial.println(symb, DEC);
for (int l = 0; l < 8; l++)
{
DisplayCharacter(symb - 32, l);
_delay_ms(100);
}
// DisplayCharacter(symb - 32);
}
_delay_ms (500);
// for (int char_index = 0; char_index < 128; char_index++)
// {
// if (Serial.available())
// {
// char symb=Serial.read();
// Serial.println(symb, DEC);
// Serial.read();
// }
// DisplayCharacter (char_index);
// _delay_ms (500);
// }
}
}
void DisplayCharacter(int char_index, int shift)
{
for (int k = 0; k < 8; k++)
{
Send_7219(k + 0, (ascii_characters [char_index][7 - k] << shift));
// _delay_ms(500);
}
}
void SPI_MasterInit(void)
{
DDR_SPI = (1 << DD_MOSI) | (1 << DD_SCK);
SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
}
void SPI_MasterTransmit(char cData)
{
SPDR = cData;
while (!(SPSR & (1 << SPIF)));
}
void Send_7219(char rg, char dt)
{
PORTB &= ~(1 << CS);
SPI_MasterTransmit(rg);
_delay_ms(10);
SPI_MasterTransmit(dt);
PORTB |= (1 << CS);
}