eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaNT7603 i ustawianie adresu DDRAMRe: NT7603 i ustawianie adresu DDRAM
  • Data: 2009-06-04 06:10:50
    Temat: Re: NT7603 i ustawianie adresu DDRAM
    Od: "adsp" <a...@g...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]


    Użytkownik "Adam Wysocki" <g...@n...invalid> napisał w
    wiadomości news:gophi.pme.1244070502@news.chmurka.net...
    >
    > Problem: Każde ustawienie adresu DDRAM powyżej 40 i poniżej 48 (np. 43)
    > ustawia go na 40, czyli znak pojawia się na początku drugiej linijki.
    > Powyżej 48 w ogóle się nie pojawia. Dla pierwszej linijki wszystko jest
    > w porządku.
    > Dzieje się tak tylko przy ustawianiu poleceniem 0x80. Inkrementacja
    > przez wyświetlacz przy zapisie do DDRAM działa ok.

    podlaczyles inny, dobry LCD - taki sam efekt?

    >
    >
    > Co ważniejsze funkcje (przejrzałem je kilka razy, ale może coś
    > przeoczyłem?).
    >
    > void lcd_goto(uint8_t x, uint8_t y)
    > {
    > send_byte(RS_C, 0x80 + ((y == 1) ? 40 : 0) + x);
    > }
    >

    jestes pewien, ze ta funkcja dziala dobrze??

    1) SET DDRAM - na bicie 7 ma być zawsze 1 - pole bitowe z ustawionymi bitami
    lepiej maskowac niz dodawac
    2) adresy DDRAM dla LCD 2-wierszowego: 1 linia 0x00..0x27, 2 linia
    0x40..0x67
    3) w kodzie jak operujesz na hex, to uzywaj stalych tylko hex - latwo mozna
    cos przeoczyc (0x80 i 40)
    4) sprawdzaj zakresy argumentow

    Ja bym ta funkcje napisal tak (dla LCD 2x16 znakowego):
    CursorX - kolumny 0..15
    CursorY - wiersze 0..1

    #define LCD_CURSOR_X_MAX 15
    #define LCD_LINE0 0
    #define LCD_LINE1 1
    #define LCD_OFFSET_LINE0 0x00
    #define LCD_OFFSET_LINE1 0x40
    #define LCD_SET_DDRAM_CMD 0x80

    void LcdGotoXY(u8 CursorX, u8 CursorY)
    {
    if (CursorX > LCD_CURSOR_X_MAX)
    CursorX = LCD_CURSOR_X_MAX;
    u8 Cmd;
    Offset = LCD_OFFSET_LINE0;
    if (CursorY == LCD_LINE1)
    Cmd = LCD_OFFSET_LINE1;
    Cmd |= LCD_SET_DDRAM_CMD | CursorX;
    LcdSendByte(Cmd);
    }

    latwo przerobisz kod dla wiekszych LCD.

    http://home.iae.nl/users/pouweha/lcd/lcd0.shtml

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: