problem z LCD

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
elektronik
-
Posty: 11
Rejestracja: 22 sie 2004, 17:56

problem z LCD

Post autor: elektronik » 29 sie 2004, 14:24

Mam prosbe, czy ktos moglby wgrac ten poznizszy program do swojego wyswietlacza i powiedziec mi co sie u niego dzieje (czy w ogole inicjuje sie wyswietlacz). Powinien sie zainicjowac i wypisac napis. U mnie nic sie nie dzieje niestety.Wyswietlacz mam znakowy 2*16. Ponizszy program jest na sterownik hittachi.

DANE EQU P3 ;linia D0...D7, 8- bit
E EQU P1.5 ;Enable
RW EQU P1.4 ;Read/Write
RS EQU P1.3 ;RegisterSelect

CHECK_BUSY:
MOV DANE,#0FFh
SETB RW
CLR RS
REPLAY:
SETB E
MOV A,DANE
CLR E
JB ACC.7,REPLAY
RET

DELAY_MS:
DJNZ DPL,DELAY_MS
DJNZ DPH,DELAY_MS
RET

ZAPIS_KOMENDY:
CLR RW
CLR RS
SETB E
CLR E
RET

WRITE_TEXT:
CLR RW
SETB RS
SETB E
CLR E
LCALL CHECK_BUSY
RET

INIT_LCD:
CLR E

MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

MOV DANE,#030h ;110000
LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms,nie moze byc spr. BF
LCALL DELAY_MS


MOV DANE,#38h ;8-bit interface, LCD 2*16
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#08h ;display off
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#01h ;display clear
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#06h ;autoinkrementacj polozenia kursora
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#0Fh ;display On
LCALL ZAPIS_KOMENDY

RET


;**************************
LCALL INIT_LCD
MOV DANE,#'H'
LCALL WRITE_TEXT
MOV DANE,#'E'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'0'
LCALL WRITE_TEXT
MOV DANE,#' '
LCALL WRITE_TEXT
MOV DANE,#'W'
LCALL WRITE_TEXT
MOV DANE,#'O'
LCALL WRITE_TEXT
MOV DANE,#'R'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'D'
LCALL WRITE_TEXT
END

elektronik
-
Posty: 11
Rejestracja: 22 sie 2004, 17:56

Post autor: elektronik » 29 sie 2004, 14:49

Oczywiscie to ma byc tak:

DANE EQU P3 ;linia D0...D7, 8- bit
E EQU P1.5 ;Enable
RW EQU P1.4 ;Read/Write
RS EQU P1.3 ;RegisterSelect

;**************************
LCALL INIT_LCD
MOV DANE,#'H'
LCALL WRITE_TEXT
MOV DANE,#'E'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'0'
LCALL WRITE_TEXT
MOV DANE,#' '
LCALL WRITE_TEXT
MOV DANE,#'W'
LCALL WRITE_TEXT
MOV DANE,#'O'
LCALL WRITE_TEXT
MOV DANE,#'R'
LCALL WRITE_TEXT
MOV DANE,#'L'
LCALL WRITE_TEXT
MOV DANE,#'D'
LCALL WRITE_TEXT
;*************************

CHECK_BUSY:
MOV DANE,#0FFh
SETB RW
CLR RS
REPLAY:
SETB E
MOV A,DANE
CLR E
JB ACC.7,REPLAY
RET

DELAY_MS:
DJNZ DPL,DELAY_MS
DJNZ DPH,DELAY_MS
RET

ZAPIS_KOMENDY:
CLR RW
CLR RS
SETB E
CLR E
RET

WRITE_TEXT:
CLR RW
SETB RS
SETB E
CLR E
LCALL CHECK_BUSY
RET

INIT_LCD:
CLR E

MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

MOV DANE,#030h ;110000
LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms, nie moze byc spr. BF
LCALL DELAY_MS

LCALL ZAPIS_KOMENDY
MOV DPTR,#0FFFFh ;czekaj okolo 100ms,nie moze byc spr. BF
LCALL DELAY_MS


MOV DANE,#38h ;8-bit interface, LCD 2*16
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#08h ;display off
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#01h ;display clear
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#06h ;autoinkrementacj polozenia kursora
LCALL ZAPIS_KOMENDY
LCALL CHECK_BUSY

MOV DANE,#0Fh ;display On
LCALL ZAPIS_KOMENDY

RET

END

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 29 sie 2004, 21:50

Ze sprawdzeniem twego rozwiązania jest pewien problem, którym jest środowisko sprzętowe. Może rozważysz inną propozycję: mogę ci udostępnić obsługę LCD, która działa (asm C51).

elektronik
-
Posty: 11
Rejestracja: 22 sie 2004, 17:56

Post autor: elektronik » 29 sie 2004, 23:40

Jesli mozna to poprosze, moj mail:rtom@o2.pl

Awatar użytkownika
gaweł
Użytkownik
Posty: 653
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 30 sie 2004, 20:45

Wysłałem.

elektronik
-
Posty: 11
Rejestracja: 22 sie 2004, 17:56

Post autor: elektronik » 31 sie 2004, 12:38

Oki dzieki juz dziala wszystko. Mam jeszcze ostatnie pytanie. Uzywal ktos moze keila?Jak robic w nim wstawki asemblerowe.Progowalem z uzyciem #pragma ASM i #pragma SRC ale pokazuje blad?

ODPOWIEDZ