Moin, ich arbeite auch mit dem MAX7221/7219, allerdings mit nem Microcontroller. Da der allerdings in C programmiert ist, kann dir das vielleicht weiterhelfen:
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.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 }
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?







Zitieren

Lesezeichen