Hallo Marco,
hier mal ein kleines Demo, ist getestet.
Wenn Dein zweiter MAX immer noch spinnt, dann ist er wohl hinüber.
Das Demo benutzt den normal mode für Anzeigen.
Wenn man Zahlen anzeigen wil ist der BCD mode günstiger, siehe Datenblatt.
Hinweis: Die Versorgungsspannung der MAX sollte mit Kondensatoren geblockt werden.
Gruß Manfred
www.malo-web.de
Code:'***************************************************************************************************************** ' Bascom AVR Compiler 1.11.8.7 ' ATMega8 Applikation ' ' Manfred Look ' webmaster@malo-web.de ' http://www.malo-web.de ' ' Demo 2x MAX7219 (8x 7_Segment LED Treiber IC) ' sollte auch mit MAX7221 funktionieren ' ' 10/2007 ' V1.00 ' ' Takt getestet mit: ' intern 1MHz ' extern 16MHz (Fuses entsprechend setzen) ' ' Schaltplan siehe Datenblatt MAX7219 Seite 13 Figure 3 ' '***************************************************************************************************************** ' '--compiler directives-------------------------------------------------------------------------------------------- ' $regfile = "m8def.dat" 'Chip auswaehlen: ATMega8 $crystal = 16000000 'Taktfrequenz (Hz) festlegen $hwstack = 32 'Hardware Stack $swstack = 8 'Software Stack $framesize = 20 'Framsize ' '--variable------------------------------------------------------------------------------------------------------- ' Dim Send_max1 As Word '16Bit Variable MAX1 die seriel ausgegeben wird Dim Send_max2 As Word '16Bit Variable MAX2 die seriel ausgegeben wird ' '--alias---------------------------------------------------------------------------------------------------------- ' _data Alias Portd.2 'data MAX7219 _load Alias Portd.3 'chip Enable MAX7219 _clk Alias Portd.4 'clock MAX7219 ' '--init program--------------------------------------------------------------------------------------------------- ' 'Initialisierung Ports Ddrd = &B00011100 'Port D, 1=Ausgang ' Loop: ' 'Initialisierung MAX7219 Send_max2 = &B0000111100000001 'Display Test ein Send_max1 = &B0000111100000001 'Display Test ein Gosub _ser_output Wait 1 '1 Sekunde Test ' Send_max2 = &B0000111100000000 'Test aus Send_max1 = &B0000111100000000 'Test aus Gosub _ser_output ' Send_max2 = &B0000110000000001 'normal mode Send_max1 = &B0000110000000001 'normal mode Gosub _ser_output ' Send_max2 = &B0000101100000111 'scan limit: 8 Send_max1 = &B0000101100000111 'scan limit: 8 Gosub _ser_output ' Send_max2 = &B0000101000001000 'intensity: 17/32 (heller) Send_max1 = &B0000101000000010 'intensity: 5/32 (dunkler) Gosub _ser_output ' 'Initialisierung Ausgaben ' xxxx PABCDEFG Send_max2 = &B0000000101111001 'Digit 0 Anzeige: 3 Send_max1 = &B0000000101101101 'Digit 0 Anzeige: 2 Gosub _ser_output ' xxxx PABCDEFG Send_max2 = &B0000001000110000 'Digit 1 Anzeige: 1 Send_max1 = &B0000001001011111 'Digit 1 Anzeige: 2 Gosub _ser_output 'usw. Wait 2 '2 Sekunden Anzeige Goto Loop 'Demo startet neu ' End ' 'Serielle Schnittstelle _ser_output: Reset _load 'bereit Shiftout _data , _clk , Send_max2 , 1 '16Bit senden, MSB zuerst, Takt steigende Flanke Shiftout _data , _clk , Send_max1 , 1 '16Bit senden, MSB zuerst, Takt steigende Flanke Set _load 'fertig Return







Zitieren

Lesezeichen