Wyświetlacz graficzny ST7565R – Biblioteka AVR Cz.2

Szukając bibliotek do sterownika ST7565R trafiłem na jeszcze jedną ciekawą bibliotekę. Tym razem jest to naprawde potężne narzędzie. Biblioteka U8glib obsługuje wiele różnych wyświetlaczy graficznych, w tym i te ze sterownikiem ST7565R. Pełny spis kompatybilnych wyświetlaczy dostępny jest tu. Biblioteka dostępna jest w 3 wersjach. Dla Arduino, AVR i ARM. Mnie jak na razie interesuje tylko i wyłącznie wersja dla 8 bitowych mikrokontrolerów AVR.

Instalacja dla Atmel Studio

Instalacja jest bardzo prosta. Nie będę jej tu opisywał ponieważ autor bardzo szczegółowo opisał krok po kroku jak to zrobić na swojej stronie. Instrukcja dostępna jest pod tym adresem.

Podłączenie wyświetlacza

Dla przypomnienie umieszczę jeszcze raz schemat podłączenia wyświetlacza do mikrokontrolera na przykładzie ATmega88.

LCD_schemat
Przykładowy program

Żeby sprawdzić czy biblioteka działa poprawnie napiszmy prosty program wyświetlający jakiś napis.

/*
 *  Na podstawie https://code.google.com/p/u8glib/wiki/thelloworld
 *  Testowane na ATmega16
 *  Autor: Gembcior
 *  https://gembcior.pl
 */

#include "u8g.h"
#include <avr/interrupt.h>
#include <avr/io.h>

u8g_t u8g;

void draw(void)
{
  u8g_SetFont(&u8g, u8g_font_6x10);
  u8g_DrawStr(&u8g, 10, 20, "Hello World!");
}

int main(void)
{
  /*
    CS: PORTB, Bit 4 --> PN(1,4)
    A0: PORTB, Bit 3 --> PN(1,3)
    SCK: PORTB, Bit 7--> PN(1,7)
    MOSI: PORTB, Bit 5 --> PN(1,5)
  */
	u8g_InitSPI(&u8g, &u8g_dev_st7565_dogm128_sw_spi, PN(1, 7), PN(1, 5), PN(1, 4), PN(1, 3), U8G_PIN_NONE);
	u8g_SetContrast(&u8g,55); // Ustawienie kontrastu

	for(;;)
	{
		u8g_FirstPage(&u8g);
		do
		{
			draw();
		} while ( u8g_NextPage(&u8g) );
		u8g_Delay(100);
	}
}

Zwróćmy uwagę na linijkę:


u8g_InitSPI(&u8g, &u8g_dev_st7565_dogm128_sw_spi, PN(1, 7), PN(1, 5), PN(1, 4), PN(1, 3), U8G_PIN_NONE);

Jest to funkcja konfigurująca interfejs SPI. Należy ją odpowiednio zmienić do naszego mikrokontrolera.
Często zdarza się, że wszystko dobrze podłączyliśmy, wgraliśmy program ale dalej na wyświetlaczu nic się nie pojawia. Warto sprawdzić wtedy czy dobrze ustawiliśmy kontrast. Funkcja:


u8g_SetContrast(&u8g,55); // Ustawienie kontrastu

odpowiada za ustawienie kontrastu. Najczęściej w  programie po prostu nigdzie nie ma wywołania tej funkcji lub jest podana za mała lub za duża wartość.
Na koniec odsyłam do dokumentacji https://code.google.com/p/u8glib/wiki/userreference i zachęcam do zabawy z wyświetlaczami.

LCD4
LCD5

Wyświetlacz graficzny ST7565R – Biblioteka AVR Cz.2
Ocena: 5 (3 głosów)

3 komentarze

  • Rafi9919
    28 kwietnia 2014 o 22:13

    To jest to czego szukałem!!!! po wielu nieudanych próbach z biblioteką dogm128 może w końcu napiszę space impact na avr :D!!! Mam nadzieję że skompiluje się bez problemów pod eclipsem (avr studio to porażka- moja opinia po przejściu na eclipsa z pluginem avr)!!!

  • Rafi9919
    28 kwietnia 2014 o 23:34

    A może szanowny autor spróbował by ‘odpalić’ tą bibliotekę pod
    eclipsem…? 😀 było by miło 🙂

Dodaj komentarz

*

*

Ile jest * Time limit is exhausted. Please reload CAPTCHA.

banner

Korzystając z tej strony wyrażasz zgodę na korzystanie z plików cookie. Zobacz szczegóły

Wykorzystujemy pliki cookie do spersonalizowania treści i reklam, aby oferować funkcje społecznościowe i analizować ruch w naszej witrynie. Informacje o tym, jak korzystasz z naszej witryny, udostępniamy partnerom społecznościowym, reklamowym i analitycznym. Więcej informacji znajdziesz na Jak Google wykorzystuje dane gromadzone podczas korzystania z witryn i aplikacji naszych partnerów.

Zamknij