logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega16L][C]HD44780 1x16

mcm 28 Lut 2009 18:30 2144 6
REKLAMA
  • #1 6217906
    mcm
    Poziom 12  
    Przejrzałem google, ale nie znalazłem rozwiązania. Mam wyświetlacz LCD ze sterownikiem HD44780, 1x16 znaków, znak 5x8, bez podświetlenia. Korzystam z biblioteki stąd. Zmieniłem TWO_LINES na ONE_LINE, przedefiniowałem PINY w nagłówku na takie pod które mam podlutowane linie z wyświetlacza (zgodnie ze schematem z tamtej strony). Regulacja kontrastu działa, oznaczenia na chipie to 1C1 HD44780A00. Procesor to atmega16L z wewnętrznym kwarcem 8Mhz (dodefiniowałem F_CPU 8000000L). Wywołuję to tak (dodałem spore opóźnienia):
    int main(void)    //Program główny
    {
    _delay_ms(100);
    LCD_Initalize();  //Inicjalizacja wyświetlacza
    _delay_ms(15);
    LCD_Clear(); 
    _delay_ms(15);
    LCD_WriteText("Hello!");
    while(1) {}
    return (0);            //Powrót do początku programu
    } 
    Na lcd pali się na czarno 8 pierwszych segmentów (wyczytałem że to standardowy objaw źle zainicjowanego wyświetlacza), gdzie robię błąd?
  • REKLAMA
  • #2 6217995
    xysio_
    Poziom 18  
    z tego co mi sie wydaje to może być jeszcze sprawa kontrastu ustawianego bodajrze na 3 wyprowadzeniu wyświetlacza(ale pewny nie jestem)
  • REKLAMA
  • #3 6221547
    mcm
    Poziom 12  
    Przecież napisałem, że regulacja kontrastu działa i jest zrobiona zgodnie ze schematem z tamtej strony.
  • REKLAMA
  • #4 6221893
    dawid512
    Poziom 32  
    Na pewno masz te 8MHz? W czym to piszesz avrstudio? Wybrałeś odpowiedni uc w programie lub w make'u?
  • REKLAMA
  • #5 6222446
    Ravender
    Poziom 20  
    Sam korzystam z tej biblioteki (lekko przeze mnie zmienionej) i wszystko działa jak powinno. Nie musisz dawać tych opóźnień między funkcjami.

    Sprawdź, czy nie pomyliłeś któryś przewodów i czy nie walnąłeś się w nagłówku. Natomiast od razu mówię, że nie zmieniałem nigdy żadnych "TWO_LINES na ONE_LINE".

    Sprawdź może jeszcze wszystko z moją stroną:
    http://wkretak.pl/readarticle.php?article_id=16
  • Pomocny post
    #6 6222500
    Freddie Chopin
    Specjalista - Mikrokontrolery
    mcm napisał:
    Procesor to atmega16L z wewnętrznym kwarcem 8Mhz (dodefiniowałem F_CPU 8000000L).

    bardzo ciekawe to co napisales, bo domyslnie ta atmega ma ustawiony oscylator 1MHz, a nie 8.

    do tego na porcie C ma cos takiego co sie zwie JTAG, co wypadaloby najpierw wylaczyc, jesli tego uzywasz.

    nie mam ochoty na wiecej zgadywanek, bo ani nie dalej schematu, ani calosci kodu (opis ze 'tu cos zmienilem, tam cos wstawilem' jest nic nie warty).

    4\/3!!
  • #7 6223345
    mcm
    Poziom 12  
    Domyślnie chodzi, ale wyłączyłem dzielnik częstotliwości przez zmianę fusebitów. Całego kodu nie załączam bo jest go za dużo, a schemat jest identyczny jak na tamtej stronie. Problemem okazał się JTAG, nie wiedziałem że te piny są na coś zarezerwowane, po wyłączeniu go poprzez
    MCUCSR |= (1<<JTD);
    MCUCSR |= (1<<JTD);
    wyświetlacz działa. Dzięki za pomoc, temat zamykam.
REKLAMA