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

8051 Assembler: Problem z 4-bitową obsługą LCD 2x16 na HD44780, AT89S52

biedak15 26 Kwi 2014 17:48 3315 2
REKLAMA
  • #1 13544876
    biedak15
    Poziom 9  
    Witam, uczę się assemblera 8051 by wykonać projekt do szkoły. Zabrałem się za obsługę LCD 2x16 na sterowniku hd44780, na początku poprzez 8 bitów danych. Wszystko było ok, więc zabrałem się za obsługę poprzez 4-bity. I tutaj pojawia się problem, bo na wyświetlaczu w pierwszej linii wyświetla się fragment tekstu mającego się znaleźć w drugiej, a dokładniej bez 4 lub 5 pierwszych znaków. Przykładowo chcąc w drugiej linii wyświetlić "TESTOWY TEKST", w pierwszej linii ujrzymy "TOWY TEKST" lub "OWY TEKST". Proszę o pomoc, używam kości AT89S52. Poniżej zamieszczam kod programu.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 13559814
    PDT
    Poziom 24  
    Przyczyną takiego zachowania jest brak odczytu drugiej połówki statusu HD44780. Wówczas przy nawrocie do LCD_BUSY zamiast bitu BUSY kontrolera, dostaniemy A3 adresu kursora, czyli '0'.
    Propozycja 'łaty':
    LCD_BUSY:
    	CLR	RS
    	SETB	RW
    	ORL	D_PORT,	#11110000b
    	SETB	ENABLED
    	MOV	C, D7
    	CLR	ENABLED
    	MOV	B.7, C
            SETB      ENABLED               ; Odczyt również młodszych 4 bitów statusu
            CLR         ENABLED               ; Konieczne dla HD44780 w trybie 4-bit
    	JB	B.7,	LCD_BUSY
    LCD_WR:


    Pzdr
  • #3 13562274
    biedak15
    Poziom 9  
    Wielkie dzięki, rzeczywiście jest tak jak mówisz, na razie odpuściłem sobie zabawę z 8051 bo okazało się, że jest jeszcze inna ważna rzecz którą muszę się zająć, w każdym razie, póki co nie wykorzystywałem odczytu adresu z DDRAM lub CGRAM i pewnie dlatego to opuściłem. Jeszcze raz dzięki bo myślałem, że już nikt nie pomoże :) Pozdrawiam
REKLAMA