Hallo zusammen,
ich hoffe ich bin hier richtig...dies ist mein erstes teilnahme in diesem forum.
ich möchte anhand mehrere 8x8 Led Matrix Module ein Led Dispaly realisieren!
für meine Display benutze ich ein ATmega32 und die Module werden durch Max7219 angesteuert und das ganze mit C geschrieben.
ich habe versucht die datasheet vom max7219 richtig zu studieren und ein klein versuch gestartet! leider geling mir nicht mein Module zum leutchten zu bringen!!
es wäre nett wenn jmd mein code liest und mir meinem Fehler zeigt.
Vielen dank im Voraus .
Max7219 datasheet:
http://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf
ich hoffe ich bin hier richtig...dies ist mein erstes teilnahme in diesem forum.
ich möchte anhand mehrere 8x8 Led Matrix Module ein Led Dispaly realisieren!
für meine Display benutze ich ein ATmega32 und die Module werden durch Max7219 angesteuert und das ganze mit C geschrieben.
ich habe versucht die datasheet vom max7219 richtig zu studieren und ein klein versuch gestartet! leider geling mir nicht mein Module zum leutchten zu bringen!!
es wäre nett wenn jmd mein code liest und mir meinem Fehler zeigt.
Vielen dank im Voraus .
Max7219 datasheet:
http://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf
Code:
/*
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#define PIN_SCK PORTB5
#define PIN_MOSI PORTB7
#define PIN_SS PORTB2
#define ON 1
#define OFF 0
#define MAX7219_LOAD1 PORTB |= (1<<PIN_SS)
#define MAX7219_LOAD0 PORTB &= ~(1<<PIN_SS)
#define MAX7219_MODE_DECODE 0x09
#define MAX7219_MODE_INTENSITY 0x0A
#define MAX7219_MODE_SCAN_LIMIT 0x0B
#define MAX7219_MODE_POWER 0x0C
#define MAX7219_MODE_TEST 0x0F
#define MAX7219_MODE_NOOP 0x00
unsigned char i;
unsigned char j;
static uint8_t disp1[36][8] PROGMEM ={
{0B00111000, 0B01000100, 0B01001100, 0B01010100, 0B01100100, 0B01000100, 0B00111000, 0B00000000}, //0
{0B00010000, 0B00110000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000},//1
{0B00111000, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01111100, 0B00000000}, //2
{0B01111100, 0B00001000, 0B00010000, 0B00001000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //3
{0B00001000, 0B00011000, 0B00101000, 0B01001000, 0B01111100, 0B00001000, 0B00001000, 0B00000000}, //4
{0B01111100, 0B01000000, 0B01111000, 0B00000100, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //5
{0B00011000, 0B00100000, 0B01000000, 0B01111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //6
{0B01111100, 0B01000100, 0B00000100, 0B00001000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //7
{0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //8
{0B00111000, 0B01000100, 0B01000100, 0B00111100, 0B00000100, 0B00001000, 0B00110000, 0B00000000}, //9
{0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B00000000}, //A
{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B00000000}, //B
{0B00111000, 0B01000100, 0B01000000, 0B01000000, 0B01000000, 0B01000100, 0B00111000, 0B00000000}, //C
{0B01110000, 0B01001000, 0B01000100, 0B01000100, 0B01000100, 0B01001000, 0B01110000, 0B00000000}, //D
{0B01111100, 0B01000000, 0B01000000, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //F
{0B00111000, 0B01000100, 0B01000000, 0B01011100, 0B01000100, 0B01000100, 0B00111100, 0B00000000}, //G
{0B01000100, 0B01000100, 0B01000100, 0B01111100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //H
{0B00111000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00111000, 0B00000000}, //I
{0B00011100, 0B00001000, 0B00001000, 0B00001000, 0B00001000, 0B01001000, 0B00110000, 0B00000000}, //J
{0B01000100, 0B01001000, 0B01010000, 0B01100000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //K
{0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01000000, 0B01111100, 0B00000000}, //L
{0B01000100, 0B01101100, 0B01010100, 0B01010100, 0B01000100, 0B01000100, 0B01000100, 0B00000000}, //M
{0B01000100, 0B01000100, 0B01100100, 0B01010100, 0B01001100, 0B01000100, 0B01000100, 0B00000000}, //N
{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //O
{0B01111000, 0B01000100, 0B01000100, 0B01111000, 0B01000000, 0B01000000, 0B01000000, 0B00000000}, //P
{0B00111000, 0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01001000, 0B00110100, 0B00000000}, //Q
{0B00111000, 0B01000100, 0B01000100, 0B01111000, 0B01010000, 0B01001000, 0B01000100, 0B00000000}, //R
{0B00111000, 0B01000100, 0B01000000, 0B00111000, 0B00000100, 0B01000100, 0B00111000, 0B00000000}, //S
{0B01111100, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //T
{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00111000, 0B00000000}, //U
{0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00000000}, //V
{0B01000100, 0B01000100, 0B01000100, 0B01010100, 0B01010100, 0B01010100, 0B00101000, 0B00000000}, //W
{0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00101000, 0B01000100, 0B01000100, 0B00000000}, //X
{0B01000100, 0B01000100, 0B01000100, 0B00101000, 0B00010000, 0B00010000, 0B00010000, 0B00000000}, //Y
{0B01111100, 0B00000100, 0B00001000, 0B00010000, 0B00100000, 0B01000000, 0B01111100, 0B00000000}, //Z*/
};
void spiSendByte (uint8_t databyte)
{
// Daten Kopieren in die SPI-Datenregister
SPDR = databyte;
// Warten bis die Übertragung abgeschlossen ist
while (!(SPSR & (1 << SPIF)));
}
void MAX7219_writeData(uint8_t data_register, uint8_t data)
{
MAX7219_LOAD0;
// Senden an das Register, in dem die Daten gespeichert werden
spiSendByte(data_register);
// Senden die zu speichernden Daten
spiSendByte(data);
MAX7219_LOAD1;
}
//initialisieren 1 chip
void max7219_init1()
{
MAX7219_LOAD0;
MAX7219_writeData(MAX7219_MODE_DECODE, 0x00);
MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, 0x07);
MAX7219_writeData(MAX7219_MODE_INTENSITY, 0x0f);
MAX7219_writeData(MAX7219_MODE_POWER, ON);
MAX7219_writeData(MAX7219_MODE_TEST, 0x00);
MAX7219_LOAD1;
}
int main(void)
{
// SCK MOSI CS/LOAD/SS
DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS);
// SPI aktivieren, Master-Modus
SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);
// Alle 3 Module initialisieren
max7219_init1();
while(1){
for(j=0;j<36;j++)
{
for(i=1;i<9;i++)
MAX7219_writeData(i,disp1[j][i-1]);
_delay_ms(500);
}
}
return 0;
}