Moin, ich arbeite auch mit dem MAX7221/7219, allerdings mit nem Microcontroller. Da der allerdings in C programmiert ist, kann dir das vielleicht weiterhelfen:
Code:
// MAX7221 LED-Treiber-IC
//MAX7221.h
#define CLK PIN_B1
#define CS PIN_B2
#define DATA PIN_B3
#define NOOP 0
#define DIG0 1
#define DIG1 2
#define DIG2 3
#define DIG3 4
#define DIG4 5
#define DIG5 6
#define DIG6 7
#define DIG7 8
#define DECODE 9
#define INTENSITY 10
#define SCANLIMIT 11
#define SHUTDOWN 12
#define TEST_REG 15
void max_ausgabe(int adresse,int wert);
void init_max (int Digits, int Brightness);
void max_ausgabe(int adresse,int wert)
{
int i;
adresse&=0x0F; //higher nibble =0
OUTPUT_LOW(CLK);
OUTPUT_LOW(DATA);
OUTPUT_LOW(CS);
for (i=8;i>0;i--)
{
OUTPUT_LOW(CLK);
OUTPUT_BIT(DATA, BIT_TEST(adresse,i-1));
OUTPUT_HIGH(CLK);
}
for (i=8;i>0;i--)
{
OUTPUT_LOW(CLK);
OUTPUT_BIT(DATA, BIT_TEST(wert,i-1));
OUTPUT_HIGH(CLK);
}
OUTPUT_HIGH(CS);
OUTPUT_LOW(CLK);
OUTPUT_LOW(DATA);
}
void init_max (int Digits, int Brightness)
{
int i;
max_ausgabe(SHUTDOWN,0); //Shutdown on
max_ausgabe(TEST_REG,0); //Testmode off
max_ausgabe(SCANLIMIT,Digits-1); //Number of Digits
max_ausgabe(INTENSITY,Brightness-1); //Set Brightness
max_ausgabe(DECODE,0); //No Decode-Mode
for(i=1;i<9;i++) //All Digits to Zero
{
max_ausgabe(i,0);
}
max_ausgabe(SHUTDOWN,1); //Shutdown off
}
Ausserdem findest du auf unter http://www.hanf-elektrotechnik.de/ bei den Projekten einen Weihnachtsstern, der ebenfalls mit dem MAX7219/7221 und einem µC aufgebaut wurde.
Ich bin mir nicht sicher, ob der Parallelport nur OpenCollector Ausgänge hat, wenn ja, brauchst du die Widerstände, wenn nicht würde ich das Timing vom PC mal genauer ansehen oder die Zustandsänderungen am Port einzeln machen und mit vielen Pausen zupflaster und sowas auszuschließen.
Hast du mal die Spannungen der Low und High Pegel am 7221 gemessen?
Lesezeichen