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

Ekran LCD 16x2 nie dziala

arikadiusz 22 Lip 2009 02:05 4754 9
  • #1 6807868
    arikadiusz
    Poziom 12  
    Witam, mam maly problem z wyswietlaczem lcd. Moj atmega polaczony jest z lcd w taki sposob:
    Ekran LCD 16x2 nie dziala
    Ekran LCD 16x2 nie dziala

    do obslugi tego chcialem uzyc biblioteki napisanej przez tego Pana
    Link
    ktora jak sie okazuje powinna dzialac bez zadnych przerobek (tez ustawial na porcie A). Niestety po wrzuceniu tego programu na procka
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include "lcd.h"
    
    int main(void)
    {
    lcd_init(LCD_DISP_ON); 				/* initialize display, cursor off */
    while (1) 							/* loop forever */
    {
    lcd_clrscr(); 						/* clear the screen*/
    lcd_puts("test program"); 			/* displays the string on lcd*/
    _delay_ms(50);
    }
    } 
    

    Nic sie nie dzieje :/. Na swoja obrone dodam ze dopiero zaczelem zabawe z uC i korzystam z gotowcow zeby zrozumiec dzialanie.
    Z gory dziekuje za pomoc.

    Dodano po 2 [godziny] 53 [minuty]:

    dziala mi rozwiazanie ktore ktos tutaj na elektrodzie dal
    https://www.elektroda.pl/rtvforum/topic331234.html

    nie mniej jednak chcialbym wiedziec dlaczego te gotowe biblioteki nie chca wspolpracowac (sa bardziej rozbudowane), wiec nie zamykam tematu i licze na wasza pomoc ;)
  • Pomocny post
    #2 6807997
    flapo213
    Poziom 21  
    Witaj kolego.

    No cóż na skróty się nie da pewnych rzeczy zrobić. Jeżeli zaczynasz przygodę z uP i chciałbyś sobie odpalić ten wyświetlacz to zacznij tak na mój gust:

    1. Najpierw zamrugaj sobie diodą.
    2. Utwórz program w którym jeden pin będzie wejściem i podłącz tam jakiś przycisk ustaw pin na wejście i przy naciśniętym zaświeć diodę.
    3. Powyższe 2 punkty miały na celu opanowanie GPIO input i output mode potrzebne do sterowania tym wyświetlaczem.
    4. Gdy opanujesz już obydwa punkty 1 i 2 możesz przystąpić do pisania procedury sterującej tym wyświetlaczem.
    5. Otwórz sobie dokumentację do HD44780 i poczytaj jak to się tym steruje. Jak sobie nie dasz rady to Ci podeślę algorytm co i jak tam śmiga i dlaczego tak a nie inaczej.
    6. Jak zorzumiesz działanie tego wyświetlacza to kod w "C" napiszesz w ciągu 1 godziny gwarantuje Ci to - nawet jeśli jeszcze nie masz super wprawy w C.
    7. Takie odpalenie wyświetlacza z czyjegoś tam kiedyś zrobionego projektu to jest bez sensu, miałbyś z tego minimalną satysfakcję.

    Porada - pamiętaj iż wszystko nim stanie się proste jest na początku ekstremalnie trudne.

    Gdybyś jednak nie dał rady to ja Cię mogę poprowadzić za rękę co i jak i podesłać gotowe procedury które na pewno zadziałają.

    Pozdrawiam
  • #3 6808222
    arikadiusz
    Poziom 12  
    Dziekuje za zainteresowanie tematem. Mruganie diodami, jakies tam przerwania i 7 seg wyswietlacz mam juz mniej wiecej opanowane. Z ta dokumentacja to mnie zaskoczyl kolega, nie myslalem ze takie cos jak wyswietlacz moze miec datasheet... Przegladajac go rzeczywiscie widze ze wszystko jest ladnie opisane, ale brak tam przykladowych kodow w C. Jesli kolega moze to prosze o podeslanie tych przykladowych programow i algorytmow na moja skrzynke: ***. Na pewno ulatwi mi to sporo przy nauce. A co do tych bibliotek ktore nie chcialy mi dzialac juz je rozgryzlem wiec jak by ktos kiedys potrzebowal to niech pisze ;).

    To co chcialbym sie dowiedziec teraz to jak zrobic w C z tym wyswietlaczem wysylanie na niego pojedynczych "kropek", oraz odczyt z tabeli kodow znakowych znaku ktory sobie upatrze. To czekam na przyklady od kolegi i biore sie do nauki :)
  • Pomocny post
    #4 6810162
    flapo213
    Poziom 21  
    Czy możesz dokładnie napisać co dokładnie chcesz zrobić. Podejrzewam, że chcesz stworzyć z kropek polskie znaki diakrytyczne. Dorzucam plik z algorytmami obsługi podstawowych funkcji wyświetlacza. Niebawem jak znajdę chwilkę czasu to dorzucę kody w ANSI C i VHDL-u. Chwilowo obie procedury testuję więc nie są zamieszczone w pdf-ie ale jak znajdę chwilę czasu aby to skończyć to zrobię to, może komuś się jeszcze przyda kiedyś to do czegoś. Postaram się również zamieścić algorytmy kolorowych wyświetlaczy tft ale to w innym wątku może. Pozdrawiam
  • #5 6810785
    arikadiusz
    Poziom 12  
    O to mi wlasnie chodzilo :), dzieki serdeczne. Mam pytanie. Sa te tabele kodow znakowych sterownika LCD HD44870 (wersja snadardowa i europejska). Jak sie do nich dostac?
  • Pomocny post
    #6 6811442
    flapo213
    Poziom 21  
    Jest tak jak chcesz wyświetlić znak to albo podajesz kod ascii czyli np 0x65 to literka 'A' lub podajesz spod którego adresu wyświetlić mozaikę. Teraz tak jakbyś chciał wyświetlić powiedzmy 32stC to powienieneś zrobić tak wywoływać pokolei z autoinkrementacją 3 poźniej 2 później np twój stworzony znak stopnia np spod adresu 0x00 i na końcu C. Gdybyś stworzył sobie funkcyjkę automatycznie pobierającą stringa np "32stC" po np w Gcc robi się to tak o ile pamiętam "32x00C" ale tu się mogę myliś musisz sprawdzić gdzieś na googlach jak wplatywać różne znaki w różnych systemach w stringu w C. Spróbuję poszukać jakieś stare moje funkcyjki. Co do znaków chiński czy japoński to mi się nie udało ale wszystkie pozostałe bez problemu. Teraz nie mam źródełek przy sobie jak będę miał to zamieszczę. Pozdrawiam

    Dodano po 10 [minuty]:

    mała poprawka jeśli chodzi o stringa powinno być tak np:

    char *str_1[] "Jasno\x98\x86 = ";

    zamiast x98 to Ty możesz mieć np 0x00 a zamiast x86 0x08 itd. Popróbuj powinno Ci się udać. Tak apropo w jakim środowisku pracujesz pod Avrkami. Podejrzewam że używasz avrstudio i ewentualnie winavr. Na początek to jest super. Ale jak wejdziesz głębiej w temat proponuję Eclipse + plugin. Wszystko śmiga jak trzeba. Ps. nie próbowałem w eclipsie z pluginem symulacji ale czytałem że da się to bez problemów wykonać. W Eclipsie świetnie się pisze kod w C jest super czytelny i możesz wszystko sobie ustaiwć + bardzo dobre opcje przeszukiwania itd. Pozdrawiam
  • #7 6815462
    arikadiusz
    Poziom 12  
    Tak uzywam AVRstudio.
    Ma kolega flapo213 moze jakies dobre algorytmy do przesowania tekstu albo jakies przykladowe animacje na lcd?

    btw. udalo mi sie dostac do tej tabeli, znalazlem na google stronke a konwerterem bin->ASCII i zalatwilo sprawem :)
  • #8 6815651
    flapo213
    Poziom 21  
    Animacje na takim lcd-ku to ciężko by było raczej. Kiedyś tam zrobiłem jakiś skroling napisu na tym i tyle jeśli chodzi o "animacje". Chłopaki z keila zrobili na swoje płytki bazowe ewaluacyjne np do stm32 i str912 takie programiki startowe które pobierały wartość z adc i wyświetlały na tym wyświetlaczu taki progress bar. Ja osobiście nie widziałem żadnych skomplikowanych animacji. Ale inwencja twórcza ludzi jest dosyć spora dopóki ktoś nie udowodni że się nie do to znaczy że można to zrobić. Pozdrawiam
  • #9 6821028
    Maciek4141
    Poziom 22  
    Flapo, a jak zainicjalizować wyświetlacz do trybu pracy 16x4?
  • #10 6821053
    arikadiusz
    Poziom 12  
    alternatywnie mozesz odpalic biblioteki ktore podalem w pierwszym linku i poprostu zmienic w nich 2 parametry:
    
    #define LCD_LINES           2     /**< number of visible lines of the display */
    #define LCD_DISP_LENGTH    16     /**< visibles characters per line of the display */
    

    Lamerski sposob ale jak ci bardzo potrzeba odpalic ten wyswietlacz to lepsze to niz nic ;P
REKLAMA