Re: lcd szívat
Rancz Lajos
csigaelektro at freemail.hu
Sun Feb 27 12:36:28 CET 2005
Helló!
Igaz, hogy 8051 ASM, de lehet hasznát veszed:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; INICIALIZALJA A KIJELZOT
RSEG ?PR?LCD_INIT?LCD
INITBYTES:
DB 0C0H ; SET LINE ADDRESS
DB 040H ; COLUMN
DB 0B8H ; PAGE ADDRESS
DB 03FH ; DISPLAY ON
INIT_NUM EQU $-INITBYTES
LCD_INIT:
CALL LINIT
CALL CLEAR_SCREEN
RET
; INICIALIZALJA A KIJELZOT
LINIT:
MOV R2,#INIT_NUM ; ENNYI BYTE VAN
MOV DPTR,#INITBYTES
LINIT_10:
CLR A
MOVC A, at A+DPTR
MOV R7,#02H
MOV R5,A
CALL _WRITE_COMMAND_LCD
INC DPTR
DJNZ R2,LINIT_10
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; KIIR EGY PARANCSOT AZ LCD-NEK
; PARAMETEREK:
; R7 CHIP SZAMA
; R5 PARANCS
RSEG ?PR?WRITE_COMMAND_LCD?LCD
_WRITE_COMMAND_LCD:
MOV A,R7 ; MELYIK CHIP
JNZ WRITE_CO_10
SETB CS1 ; R7 = 0 -> CS1
CLR CS2
SJMP WRITE_CO_20
WRITE_CO_10:
CJNE A,#02,WRITE_CO_15
SETB CS1 ; R7 = 2 -> CS1 ES CS2 IS
SETB CS2
SJMP WRITE_CO_20
WRITE_CO_15:
CLR CS1 ; R7 = 1 -> CS2
SETB CS2
WRITE_CO_20:
CALL CHIP_BUSY ; VARUNK
CLR RW
CLR DI
MOV A,R5
CALL WDB
CLR CS1
CLR CS2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TORLI A KIJELZOT
RSEG ?PR?CLEAR_SCREEN?LCD
CLEAR_SCREEN:
MOV R2,#08H
CLS_10:
MOV A,R2
ORL A,#0B8H ; SET PAGE
MOV R7,#02H ; A SORT BEALLITJUK
MOV R5,A
CALL _WRITE_COMMAND_LCD
MOV R7,#02H
MOV R5,#040H
CALL _WRITE_COMMAND_LCD
SETB CS1
CLR CS2
CALL CLEAR_ROW
CLR CS1
SETB CS2
CALL CLEAR_ROW
DJNZ R2,CLS_10
CALL LINIT
RET
; TOROL EGY OSZLOPOT
CLEAR_ROW:
CLH_05:
MOV R3,#40H ; 64 OSZLOP VAN
MOV A,#00H
CLH_10:
CALL WRITE_DATABYTE
DJNZ R3,CLH_10 ; KIIRUNK EGY SORT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; VIZSGALJA, HOGY BUSY-E AZ LCD| KESOBB CSERELHETO MEGFELELO SZAMU NOPRA, ESETLEG...
;
RSEG ?PR?LCD_BUSY?LCD
LCD_BUSY:
SETB CS1
CLR CS2
CALL CHIP_BUSY
CLR CS1
SETB CS2
CALL CHIP_BUSY
RET
; VIZSGALJA, HOGY BUSY-E A CHIP | KESOBB CSERELHETO MEGFELELO SZAMU NOPRA, ESETLEG...
CHIP_BUSY:
PUSH ACC ; EZT ELMENTJUK
MOV P0,#0FFH ; MIT
CLR DI ; READ BUSY
SETB RW ; OLVASSUK
NOP ; IDO!
LBUSY10:
SETB P0BUSY
SETB E ; MOST
NOP
NOP
MOV A,P0 ; OLVASUNK
CLR E
CLR P0BUSY
ANL A,#80H
POP ACC ; EZ VISSZA
RET ; ABSZOLUT VISSZA
On Sat, 26 Feb 2005 22:33:25 +0100, Borza Attila wrote:
> Sziasztok !
>
> Matatott már valaki a Chipcades grafikus LCD-kel, egy 128*64-es
> (EW13B10) szenvedek, nem akar semi megjeleni a kijelzőn.
> Valaki levésné az inicializálást, hátha ott rontottam el, pedig a
> doksi alapján csináltam, esetleg ha valaki elküldene rá egy minta
> progit, nagyon örülnék neki.
>
> Köszönöm elörre is
> Attila
>
> -----------------------------------
> Szponzorunk: http://tonerbolt.hu/
More information about the Elektro
mailing list