Skocz do zawartości
Komentator

Kurs STM32 F1 HAL - #10 - wyświetlacz graficzny na SPI

Pomocna odpowiedź

html_mig_img
W poprzedniej części kursu poznaliśmy działanie interfejsu SPI. W praktyce wykorzystaliśmy go do komunikacji z ekspanderem portów MCP23S08.Teraz zajmiemy się ciekawszym tematem, czyli wyświetlaczem graficznym z telefonu Nokia 5110. Jest to tani i popularny moduł, który może ułatwić interakcję z budowanym urządzeniem.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Udostępnij ten post


Link to post
Share on other sites

Dzień doberek (a raczej wieczór). Mam pytanie odnośnie funkcji lcd_clear(). Ponieważ jest ona wywołana w głównej pętli programu bez dodatkowego polecenia lcd_copy():

 lcd_setup();
 
 lcd_draw_bitmap(forbot_logo);
 lcd_copy();
 delay_ms(1000);
 
 lcd_clear();
 for (i = 0; i < 5; i++)
 lcd_draw_text(i, i * 8, "Forbot!");
 lcd_copy();

Powoduje to fakt, że zostanie wyczyszczony tylko bufor w pamięci ram Nucleo, ale nie w LCD (na dobrą sprawę nie trzeba czyścić bufora w wyświetlaczu i ta wersja jest bardziej optymalna, ale w przypadku gdy np. chcemy wyczyścić ekran, to trzeba pamiętać za każdym razem o skopiowaniu bufora do wyświetlacza). Ja dla uproszczenia do każdego polecenia które wysyłane dane do wyświetlacza, dopisałem lcd_copy(), dzięki czemu nie muszę wywoływać nigdzie jawnie funkcji lcd_copy() w programie głównym.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Mając wyświetlacz od starej dobrej Nokii musiałem napisać grę w węże 🙂 Poniżej rezultat:

 

 

 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

@MR1979 ale ładna grafika 🐍 Super projekt!

Udostępnij ten post


Link to post
Share on other sites

Dzięki!

Jak tylko wymyślę jak sterować głośnikiem (obsługa DAC) to dodam loop z Dr Dre - "The Next Episode" do zwycięskiej planszy 🙂
Przy kodowaniu PCM 8bit/8kHz dla 5s wyjdzie jakieś dodatkowe 40kB.

Udostępnij ten post


Link to post
Share on other sites

Daj lepiej 5 bitów dla 11025, albo (trochę więcej wyjdzie) 16k. Ewentualnie jednobitowy przetwornik delta-sigma.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Ustawilem narazie BL na GPIO_output i tak jak w kursie ustawilem na stan wysoki, czyli napiecie 3V. Obrazek jednak nadal jest tak niewyrazny ze trudno bylo mi go dostrzec. Rozumiem ze za pomocą PWM mozna tylko zmniejszyc jasnosc ustawiajac na nizsze napiecie. Czy jest wiec jakas mozliwosc poprawienia obrazu?

Edytowano przez danielbr3

Udostępnij ten post


Link to post
Share on other sites
6 godzin temu, danielbr3 napisał:

Ustawilem narazie BL na GPIO_output i tak jak w kursie ustawilem na stan wysoki, czyli napiecie 3V. Obrazek jednak nadal jest tak niewyrazny ze trudno bylo mi go dostrzec. Rozumiem ze za pomocą PWM mozna tylko zmniejszyc jasnosc ustawiajac na nizsze napiecie. Czy jest wiec jakas mozliwosc poprawienia obrazu?

Wyrazistość obrazu nie zależy od siły podświetlania. Poeksperymentuj z kontrastem.

Poszukaj linijki:

lcd_cmd(0x80 | 0x2f); //Ustawienie kontrastu

i zmień 0x2f na inna wartość, np:

lcd_cmd(0x80 | 0x3f); //Ustawienia kontrastu

Pozdrawiam,
Marek

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
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!

Gość
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...