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