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
problem z LCD
-
- -
- Posty: 11
- Rejestracja: 22 sie 2004, 17:56
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
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
-
- -
- Posty: 11
- Rejestracja: 22 sie 2004, 17:56
Jesli mozna to poprosze, moj mail:rtom@o2.pl
-
- -
- Posty: 11
- Rejestracja: 22 sie 2004, 17:56