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

Nie działający lcd 2x16. Dolna linia w LCD ma kwadraty.

mikmas 05 Mar 2007 09:37 3189 23
REKLAMA
  • #1 3644879
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Wiem, że temat taki był, ale ja sprawdziłem wszystko co było tam mówione i nie działa nadal. Otóż dolna linia w lcd ma kwadraty. Pojawiają się i znikają jak ruszam potencjometrem (47k). Piszę pod picbasiciem (coś ala bascom) na kodzie, który kiedyś mi normalnie działał. Nie wiem już co może być źle. Połączenia sprawdzałem 10 razy zgodnie ze schematem, który kiedyś mi ładnie trybił. 1 do masy, 2 do +, 3 do potencjometra, 4 do uc, 5 do masy, 6 do uc, 4 piny przerwy i 4 piny do uC. Co może być nie tak? Pytałem się kumpli - też już nie wiedzą co jest
  • REKLAMA
  • #2 3644908
    pubus
    Poziom 30  
    Posty: 1289
    Pomógł: 139
    Ocena: 32
    No pojawiają się i znikają bo to regulacja kontrastu...
    To, że są cały czas na ekranie to oznacza, że wyświetlacz nie jest inicjowany po starcie...
    Jeżeli jesteś pewny programu to może być coś nie tak z samym lcd...
    Ja jednak sprawdził bym program, spróbował z innym...
    Są lcd które wymagają wiekszych opóźnień przy inicjalizacji...
  • #3 3644917
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Sprawdzałem na 4 lcd i żaden nie działał, a zanim dam cokolwiek na lcd to czekam około 5sek
  • #4 3644926
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    Pokaż kod inicjacji jaki strerownik ma LCD.
    Skoro mówisz ze w 2 lini masz kwadraty to może zainicjowałeś go tylko na 1 linie.
    Jeszcze pytanie zainicjowałes go na 4-bitowe przesyłanie danych.
  • #5 3644931
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Użyłem kodu, który kiedyś mi na pewno działał:
    DEVICE 16F84A
    DECLARE LCD_TYPE=0
    CLS
    HIGH PORTA.0
    DELAYMS 1000
    HIGH PORTA.1
    DELAYMS 1000
    LOW PORTA.0
    DELAYMS 1000
    LOW PORTA.1
    LOOP:
    	  HIGH PORTA.0
    	  HIGH PORTA.1
    	  PRINT "Powered by..."
    	  CURSOR 2,3
    	  PRINT "MIKMAS :-)"
    	  DELAYMS 1000
    	  LOW PORTA.0
    	  LOW PORTA.1
    	  DELAYMS 1000
    GOTO LOOP
    END
  • #6 3645003
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    Wyswietlacz ma być tak podłączony patrząc od góry (widzimy wyświetlacz)
    16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    o o o o o o o o o o o o o o o o
    GND VCC D7 D6 D5 D4 D3 D2 D1 D0 E R/W RS VLC VCC GND


    VLC - do potencjometru

    Nie znam Bascoma i nie mam zamiaru znać ale napiszę ci jak powinna wyglądać inicjacja LCD

    1.Po włączeniu zasilania czekamy 15 ms
    2. RS r/w D7 D6 D5 D4
    0 0 0 0 1 1
    3. Czekaj ok5 ms
    4. RS R/W D7 D6 D5 D4
    0 0 0 0 1 1
    5.Czekaj min. 100 us
    6. RS R/W D7 D6 D5 D4
    0 0 0 0 1 1
    7. Czekaj 1ms
    8. RS R/W D7 D6 D5 D4
    0 0 0 0 1 0

    9. 0 0 0 0 1 0
    0 0 1 0 0 0

    10. 0 0 0 0 0 0
    0 0 1 0 0 0

    11. 0 0 0 0 0 0
    0 0 0 0 0 1

    12. 0 0 0 0 0 0
    0 0 1 1 0 0


    Między punktami 8,9 9,10 10,11 11,12 warto jeszcze wprowadzić opoznienie o 2ms

    Tak wygląda cała inicjacja wyswietlacza 2*16 bus 4-bits
  • REKLAMA
  • #7 3645037
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Podłączenie na 100% tak mam. Że to wina programu nie sądzę, bo to działało, ale jak wrócę ze szkoły to i to zobaczę (będę o 17)
  • REKLAMA
  • #9 3645340
    Dave_SG
    Poziom 12  
    Posty: 19
    Pomógł: 3
    Wyswietlacz masz nowy, czy uzywasz starego? Miałem kiedyś przypadek że wyświetlacz poleżał 0,5 roku w szafie i już nie chciał się uruchomić, pomimo że uzywłaem tego samego kodu i zastosowałem takie same połączenia. Poprostu zepsuł sie....
  • #10 3646012
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Próbowałem na kilku LCD
    Kompilator jest firmy crownhill i podobny do picbasic, ale jednak różnice są. Nic nie zmienia jednak faktu, że soft działał, a hardware to kilka kabelków na krzyż i nie da się rypnąć, dlatego nie wiem co jest :/:/:/
  • #11 3648099
    august_
    Poziom 27  
    Posty: 1081
    Pomógł: 70
    Ocena: 47
    mikmas napisał:
    hardware to kilka kabelków na krzyż i nie da się rypnąć,


    ..to mało widziałeś :)

    Sprawdź czy masz połączenia ze wszystkimi pinami.
    Sprawdź konfigurację pinów - czy nie są ustawione na wejścia.
    Sprawdź również w nocie katalogowej czy piny do których się podłączasz mogą być wyjściami.
    Sprawdź to wszystko 20 razy.

    Podłącz diody do pinów i sprawdź czy możesz nimi sterować.
    Sprawdź oscylator i jego ustawienie.
  • REKLAMA
  • #12 3648123
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Procek chodzi, a w momencie nadania textu na oscyloskopie mam takie bujnięcie, także coś tam mieli. Robiłem to na podstawie schematu, gdzie jest wyraźnie model procka taki sam jak mój. Zresztą ja już robiłem układy na lcd i wszystko trybiło
  • #13 3648458
    august_
    Poziom 27  
    Posty: 1081
    Pomógł: 70
    Ocena: 47
    mikmas napisał:
    Zresztą ja już robiłem układy na lcd i wszystko trybiło


    Czyli mniej więcej wiesz co i jak.
    Skoro działało, a nie działa - to musisz mieć błąd - musisz posiedzieć do bólu - innej drogi nie ma.
  • #14 3649445
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    No będę musiał, chociaż już kompletnie nie mam pomysłów, co jest źle :(
  • #15 3649810
    marqa
    Poziom 12  
    Posty: 13
    Pomógł: 3
    Mogę się tylko przyłączyć do kolegi monsinior. Poczytaj o programowej inicjalizacji. Teoretycznie LCD powinien działać bez niej, pod warunkiem, że napięcie zasilania narasta dostatecznie szybko (z tego co pamiętam wymagany czas jest <100us - czy coś koło tego). To mogłoby np tłumaczyć dlaczego układ działał wcześniej a teraz nie chce - minimalna zmiana parametrów np kondensatorów czy długości przewodów (jeśli zmontowane na pająku) może mieć wpływ.
  • #16 3649929
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Zasilane jest z komputerowego zasilacza, ale zaraz sprawdzę na tym, na którym tamte sprawdzałem
  • #17 3651861
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    Jak jest zasilane z zasilacza komputerowego to napewno musisz przeprowadzic inicjacje tym bardziej ze masz kwadraty w jednej lini na wyswietlaczu.

    Ja też czasem biorę zasilanie z zasilacza komputerowego i bez inicjacji nie da rady. Wiec radze byś wrócił wyżej do linku poczytał trochę zainicjował wyswietlacz a jak wtedy nie odpali to dopiero wróc do tematu.
  • #18 3653039
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Nadal nic :(. Tak napisałem kod inicjacji:
    DELAYMS 15
    HIGH PORTB.4
    HIGH PORTB.5
    DELAYMS 5
    DELAYUS 200
    DELAYMS 1
    LOW PORTB.4
    DELAYMS 2
    HIGH PORTB.7
    LOW PORTB.5
    DELAYMS 2
    LOW PORTB
    HIGH PORTB.7
    DELAYMS 2
    LOW PORTB
    HIGH PORTB.7
    DELAYMS 2
    LOW PORTB
    HIGH PORTB.4
    DELAYMS 2
    LOW PORTB
    HIGH PORTB.6
    HIGH PORTB.7
    DELAYMS 2

    Jakieś fatum nad tymi lcd chyba jest :(
  • #19 3653443
    august_
    Poziom 27  
    Posty: 1081
    Pomógł: 70
    Ocena: 47
    Zmień zasilacz na klasyczny.
    Dołóż kondensator blokujący na zasilanie lcd.
  • #20 3653444
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    To pozostaje krok po kroku (instrukcja po instrukcji) prześledzić w symulatorze jak program komunikuje się z LCD.
  • #21 3653494
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    A jaki polecasz?
  • #22 3655784
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Przetestowałem na symulatorze i trybi normalnie. No nic... dzisiaj kupie jakiś nowy lcd... 30zł w tył :(
  • #23 3657472
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    I oczywiście nie działa. Kod po tysiąckroć sprawdzany, w hardware już też straciłem rachubę :(. Na symulatorze normalnie działa. Mógłby ktoś dać swój sprawdzony kod w asmie? Chociaż już straciłem wiarę, że to cokolwiek pomoże
  • #24 3657525
    august_
    Poziom 27  
    Posty: 1081
    Pomógł: 70
    Ocena: 47
    Na elektrodzie jest kod dla 16f84 - bardzo fajnie zrobiony - na subprocedurach.
    Nie mogę go w tej chwili znaleźć, ale jest i działa.

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy wyświetlacza LCD 2x16, gdzie dolna linia pokazuje kwadraty, które pojawiają się i znikają przy regulacji potencjometrem kontrastu. Użytkownik stosuje mikrokontroler PIC16F84A i kod podobny do Bascoma, który wcześniej działał poprawnie. Połączenia są zgodne ze schematem, jednak wyświetlacz nie inicjuje się prawidłowo, co sugeruje brak poprawnej inicjalizacji LCD. Dyskusja wskazuje na konieczność dokładnej inicjalizacji wyświetlacza, zwłaszcza przy zasilaniu z zasilacza komputerowego, który może wymagać dodatkowego kondensatora filtrującego. Zalecane jest sprawdzenie konfiguracji pinów, poprawności sygnałów sterujących (RS, R/W, E), trybu 4-bitowego przesyłania danych oraz opóźnień inicjalizacyjnych. Próby z różnymi wyświetlaczami LCD nie przyniosły efektu, co może wskazywać na problem sprzętowy lub błędy w oprogramowaniu. Symulacje kodu wykazały poprawne działanie, jednak w praktyce problem nadal występuje. Sugerowane jest testowanie z klasycznym zasilaczem, dokładne śledzenie komunikacji w symulatorze oraz ewentualne użycie sprawdzonych kodów inicjalizacyjnych dostępnych na forach i w dokumentacji.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA