Obsługa układu MAX7219
Masz problem? Zapytaj na forum elektroda.pl
From: "Haban" <haban_at_nospam_fides.swiebodzin.pl>
Subject: Obsługa układu MAX7219
Date: Mon, 27 Jan 2003 23:35:03 +0100
Poszukuje przykładowego programiku w jezyku C obsługi sterownika
wyswietlaczy 7-seg. LED MAX7219, lub może jakiejś instrukcji (może po polsku
-))
Pozdrawiam
Haban
From: "Jacek Bogusz" <jacek.bogusz_at_nospam_wp.pl>
Subject: Re: Obsługa układu MAX7219
Date: Mon, 27 Jan 2003 23:50:58 +0100
Poszukuje przykładowego programiku w jezyku C obsługi sterownika
wyswietlaczy 7-seg. LED MAX7219, lub może jakiejś instrukcji (może po
polsku
-))
Pozdrawiam
Haban
Niestety po angielsku (ale za to namiętnie stosowany jest tam MAX7219)
http://www.specs.de/~danni/
Jacek
From: "Marek" <neticus_at_nospam_wp.pl>
Subject: Re: Obsługa układu MAX7219
Date: Sat, 1 Feb 2003 12:51:15 +0100
Tyle mogę dać za darmo ;-)
void shift_LED(U8 nr_maxa, U16 value)
{ // Przesłanie polecenia do kontrolera MAX7219
// ja akurat miałem dwa na płytce, stąd numer maxa jako parametr
U8 cnt;
LED_CLOCK = 0; // Stan początkowy linii wyświetlacza
LED_LOAD1 = 0;
LED_LOAD2 = 0;
for ( cnt = 1; cnt <= 16; cnt++ )
{ LED_DATA = value & 0x8000;
LED_CLOCK = 1;
LED_CLOCK = 0;
value <<= 1;
}
if ( nr_maxa == 1 )
{ LED_LOAD1 = 1;
LED_LOAD1 = 0;
}
else
{ LED_LOAD2 = 1;
LED_LOAD2 = 0;
}
}
void clear_LED()
{ // Wygaszenie wszystkich wyświetlaczy LED
U8 i;
for ( i = 1; i <= 7; i++ )
{ shift_LED(1,256*i + 0x0F);
shift_LED(2,256*i + 0x0F);
}
}
void init_LED()
{ // Ustawienie początkowe wyświetlaczy LED
shift_LED(1,0x09FF); // <Display 1> Decode Mode: Code B
shift_LED(2,0x09FF); // <Display 2> Decode Mode: Code B
shift_LED(1,0x0A0C); // <Display 1> Intensity Control: 25/32
shift_LED(2,0x0A0C); // <Display 2> Intensity Control: 25/32
shift_LED(1,0x0B06); // <Display 1> Scan Limit: 7 LEDs
shift_LED(2,0x0B06); // <Display 2> Scan Limit: 7 LEDs
shift_LED(1,0x0C01); // <Display 1> Shutdown/Normal: normal
shift_LED(2,0x0C01); // <Display 2> Shutdown/Normal: normal
shift_LED(1,0x0F00); // <Display 1> Normal/DisplayTest: normal
shift_LED(2,0x0F00); // <Display 2> Normal/DisplayTest: normal
clear_LED();
}
a potem to już prosto: '123' na wyświetlacz ...
shift_LED( max_1, 0x100*0 + '1' ); // High digit
shift_LED( max_1, 0x100*1 + '2' ); // middle
shift_LED( max_1, 0x100*2 + '3' ); // low digit
Pzdr,
Marek