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

Problem z alfanumerycznym wyświetlaczem lcd

Elektryk0 27 Lut 2009 17:09 1305 3
REKLAMA
  • #1 6212776
    Elektryk0
    Poziom 10  
    Witam ostatnio wpadł mi w ręce wyświetlacz LCD alfanumeryczny 2x16 więc spróbowałem go zaprogramować.
    Najpierw ponieważ nie wiedziałem czy jest sprawny pobrałem program
    test napisany w C z neta. Jednak pomimo tego że wszystko dokładnie podłączyłem a program miał wypisać na LCD napis Hello World
    efekt działania był taki że zamiast jednej czarnej linii która pojawiała się normalnie po włączeniu zasilania dostałem 2 czarne linie.
    Pomyślałem więc że może z tym programem coś nie tak. Postanowiłem napisać swój tym razem w assemblerze program miał za zadanie tylko i wyłącznie komendą Clear Display 00000001 wyczyścić ekran.
    Jednak LCD ani drgną. Zamieszczam więc program napisany
    przez mnie w asmie i bardzo proszę sprawdzić czy to ja popełniłem
    błąd i źle napisałem program czy jednak z LCD jest coś nie tak.
    Z wyświetlaczem komunikuje się 8-bitami przez linie PD0..PD7
    numery pinów odpowiadają numerom szyny danych. Aby lepiej czytało się listing i szło odgadnąć moje intencje załączyłem komentarze.
    Ostatnia rzecz o która chce zapytać to to czy jeżeli nóżka LCD Vo
    musi być podpięta do GND żeby kontrast był w miarę dobry ( przy regulowaniu potencjometrem nie widać nic ) to wyświetlacz ma ujemne napięcie dla kontrastu. Jeśli tak to czy może to być powodem nie działania
    LCD.

    ;Rs = PB.0
    ;E = PB.1
    ;Linia R/W podłączona do GND
    .include "m8def.inc"
    .cseg
    .org 0x00 rjmp Reset
    
    Wait_ms:
    W0:
    ldi r17, 250
    W1:
    nop
    dec r17
    brne W1
    dec r16
    brne W0
    ret
    
    Reset:
    ldi r16, low(RAMEND)
    ldi r17, high(RAMEND)
    out SPL, r16
    out SPH, r17
    
    ldi r16, 0xff			;Ustawienie 		
    out DDRD, r16			;jako wyjść D
    sbi DDRB, 0				;Ustawienie RS
    sbi DDRB, 1		    	;i RS jako wyjść
    ldi r16, 0x00			;E i RS
    out PORTB, r16			;w stanie niskim
    ldi r16, 0x01			;instrukcja Clear Display
    out PORTD, r16			;Na 8 bitów Danych
    ldi r16, 1
    rcall Wait_ms			;Odczekanie 1ms
    ldi r16, 0x02			;Ustawienie E
    out PORTB, r16			;w stan wysoki
    ldi r16, 1				
    rcall Wait_ms			;Odczekanie 1 ms
    cbi PORTB, 1			;Ustawienie E w stan niski
    						
    Petla:
    rjmp Petla
  • REKLAMA
  • #2 6214761
    MAREK74
    Poziom 20  
    a gdzie inicjacja wyświetlacza?
    on musi wiedzieć w jakim trybie ma pracować 4 lub 8 bit i jeszcze pare pierdół :)
  • REKLAMA
  • #3 6215253
    piegzik
    Poziom 13  
    Witam.
    Nie wglebiajac sie zbytnio w listing Twojego programu, choc przedmowca dobrze zasugerowal, mysle ze to moze byc wina zle ustawionego kontrastu, co sugerowaloby dwie czarne linie na wyswietlaczu z programem z internetu. Aby ustawic dobry kontrast musisz wyregulowac na nozke 3 wyswietlacza napiecie gdzie zakres regulacij wynosi od -5V do +5V. Tak wiec przy zasilaniu pojedynczym napieciem, nieodzownym moze sie stac podlaczenie ukladziku ICL7660.
    Pozdrawiam
  • #4 6215517
    Elektryk0
    Poziom 10  
    Problem się rozwiązał okazała się że jeden z kabelków
    łączących LCD z ATmegą był niedokładnie przylutowany a że była
    to akurat linia E to powstały problemy. W każdym razie wszystko teraz działa a co do inicjacji muszę się tu nie zgodzić jeśli napięcie
    wyświetlacza prawidłowo stabilizuje się na 4,5V w czasie 0.1..10ms
    to wyświetlacz sam inicjalizuje się. A wtedy min. domyślnie szyna danych ustawiona jest na 8 bitową. Chodź oczywiście w normalnym programie
    należy zainicjować LCD aby być pewnym że wszystko zadziała
    a ten mój w asmie to był tylko test.

    A jeśli chodzi o ten kontrast to nie wiem co jest z tym grane bo
    widać wszystko dobrze ale tylko przy podłączeniu Vo do masy.
    Może to mieć ujemnie napięcie do regulacji kontrastu ale wtedy wydaje mi się że nie było by nic widać przy podłączeniu do GND.
REKLAMA