Skocz do zawartości

Max7219 sterowanie matrycą 8 na 8


Kinino

Pomocna odpowiedź

Witam, staram się obecnie zrealizować projekt na płytce evbavr05 (assembler) i napisać program który obsłuży Max7219 i będzie sterował matrycą 8 na 8 niestety nie mam pojęcia jak się za to zabrać. Przeczytałem już dokumentację, jestem jednak słaby z elektroniki, bardzo proszę o jakieś wskazówki, pomoc jak zrealizować to zadanie.

Link do komentarza
Share on other sites

Dlaczego wyważasz otwarte drzwi? Dlaczego asembler? Trochę trudno pomagać nie będąc przekonanym do samych założeń projektu. W C są do tego gotowe biblioteki.

A jeśli już w asemblerze to napisz dokładniej z czym konkretnie masz problem, bo jeśli w ogarnięciu listy instrukcji, generalnie planowaniu i pisaniu programów w tym języku to zacznij od jakiegoś podręcznika asemblera AVR. Nic tu po nas.

Link do komentarza
Share on other sites

Marek1707 muszę zrobić to w asemblerze bo takie mam polecenie, nie ukrywam że nie znam się na asemblerze, lecz jeżeli wiesz może jak to powinno wyglądać, bądź wiesz gdzie mogę znaleźć jakiś przykład takiego programu w asemblerze to napisz proszę bo już z 3 dni szukam po internecie i nic nie mogę znaleźć, wszystko wyłącznie w arduino 🙁

Link do komentarza
Share on other sites

Wiem jak to zrobić, ale nie wiem gdzie możesz znaleźć gotowca. A Ty napisz jak dobrze znasz procesory AVR "od środka" np. czy panujesz nad działaniem SPI, czy rozumiesz organizację ich pamięci RAM i rejestrów I/O oraz czy chcesz zrobić tę pracę samodzielnie przy okazji ucząc się asemblera czy jednak będziesz próbował pójść na skróty. Napisz po prostu konkretnie jakiej pomocy oczekujesz.

Raczej nie będzie tu kursu programowania w asemblerze AVR więc powinieneś zacząć od kupienia odpowiedniej książki. Na pewno jest coś po polsku. Sam układ MAX7219 jest prosty a schematów podłączenia go do AVR z jednej strony i do matrycy 8x8 z drugiej - znajdziesz bez liku. Możesz więc w międzyczasie zacząć budować układ bo to żadna magia, lub kupić gotowca - są takie moduły z tym scalakiem i matrycą LED 8x8.

Co chcesz tam wyświetlać? Jakieś wzorki, przesuwające się napisy (choć 8x8 to trochę małe okienko), game-of-life czy jeden statyczny obrazek?

W sumie główny problem sprowadza się do stworzenie prostej funkcji wysyłającej 64 bity z pamięci RAM do MAXa. Reszta to ustawienie stanu początkowego drivera i odpowiednia organizacja danych by wyświetlało się to co chcesz i kiedy chcesz.

Jeżeli zrobisz sobie jeszcze prostszą funkcję wysyłania bajtów przez SPI (a to w asemblerze jest nawet w opisie samego procesora) to dalej możesz kopiować algrytmy z biblioteki Arduino przepisując kolejne wywołania z C na asembler.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Marek w asemblerze wiem jak załączać diody, jak sprawić aby mrugały to praktycznie tyle. Nie ukrywam że liczę na przykład gotowca lecz nie po to aby go oddac lecz zrozumieć i poprawić (dodać własne wstawki 🙂 ) W tym projekcie ma być wyświetlane cokolwiek byle by działało.

Link do komentarza
Share on other sites

Jeżeli już to umiesz, to dalej jest już łatwo. Zacznijmy jednak od sprzętu: czym dysponujesz? Czy masz już jakiś hardware? Masz płytkę procesora? Jakieś Arduino itp? Czy masz MAXa? Na gotowej płytce z matrycą czy będziesz budował coś własnego? Dowiedz albo zastanów się (na podstawie danych katalogowych) jak się ten driver podłącza do procesora. Jaki interfejs w procku wybierzesz do przekazywania informacji do MAXa? Tylko jeden jest rozwiązaniem oczywistym. Potem znajdź rozdział w opisie procesora dot. tego interfejsu, przeczytaj go i postaraj się zrozumieć jak on działa. Wtedy możesz napisać prostą funkcję wysyłającą jeden bajt.

Przed zmontowaniem sprzętu pokaż schemat.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Ok. Mogę ten projekt zrobić w arduino 😉 , robię na płytce arduino uno R3 oraz na max7219 8x8. Mam już część kodu i bibliotekę. Poniżej kod:

#include <LedControl.h>

int DIN = 12;
int CS =  11;
int CLK = 10;

byte e[8]=     {0x7C,0x7C,0x60,0x7C,0x7C,0x60,0x7C,0x7C};
byte d[8]=     {0x78,0x7C,0x66,0x66,0x66,0x66,0x7C,0x78};
byte u[8]=     {0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E};
byte c[8]=     {0x7E,0x7E,0x60,0x60,0x60,0x60,0x7E,0x7E};
byte eight[8]= {0x7E,0x7E,0x66,0x7E,0x7E,0x66,0x7E,0x7E};
byte s[8]=     {0x7E,0x7C,0x60,0x7C,0x3E,0x06,0x3E,0x7E};
byte dot[8]=   {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18};
byte o[8]=     {0x7E,0x7E,0x66,0x66,0x66,0x66,0x7E,0x7E};
byte m[8]=     {0xE7,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0xC3};

LedControl lc=LedControl(DIN,CLK,CS,0);

void setup(){
lc.shutdown(0,false);      
lc.setIntensity(0,15);     
lc.clearDisplay(0);        
}


void printEduc8s()
{
 printByte(e);
 delay(1000);
 printByte(d);
 delay(1000);
 printByte(u);
 delay(1000);
 printByte(c);
 delay(1000);
 printByte(eight);
 delay(1000);
 printByte(s);
 delay(1000);
 printByte(dot);
 delay(1000);
 printByte(c);
 delay(1000);
 printByte(o);
 delay(1000);
 printByte(m);
 delay(1000);
}

void printByte(byte character [])
{
 int i = 0;
 for(i=0;i<8;i++)
 {
   lc.setRow(0,i,character[i]);
 }
}

Nie wiem jednak gdzie mogę znaleźć pozostałe litery i cyfry bo tu mam tylko e d u s c o oraz 8 jak ktoś ma linka z góry dzięki.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.