ik ben al een tijdje aan het proberen om een grafische lcd (samsung S6B0108) aan te sturen met een PIC16F877, maar het lukt me niet om ook nog maar 1 pixel op het scherm te schrijven met de asm code die ik geschreven heb. Als ik het testprogramma gebruikt werkt de lcd wel, dus de hardware is in orde.

Nu denk ik dat er iets mis is met mijn routine om te kijken of de lcd bezig is, waardoor mijn programma niet eens aan de commando's toekomt. heeft er iemand anders ervaring met dit lcd, of weet er iemand wat ik verkeerd doe?


lcd_check_busy:
	bcf lcd2, e
	call dbus_R
	bcf lcd2, dIc
	bcf lcd1, Ics1
	bcf lcd1, Ics2
	bsf lcd2, e
	call e_delay
	movf dbus, w
	movwf temp
	bcf lcd2, e
	call e_delay
	call dbus_W
	btfsc temp, 7
	goto lcd_check_busy
	return

dbus_R:
	bsf STATUS, RP0
	movlw 0FFh
	movwf TRISD
	bcf STATUS, RP0
	bsf lcd1, rIw
	return
	
dbus_W:
	bsf STATUS, RP0
	clrf TRISD
	bcf STATUS, RP0
	bcf lcd1, rIw
	return

e_delay:
	nop
	nop
	nop
	nop
	nop
	nop
	return

alvast bedankt!

Je moet in ieder geval het volgende doen.

KS0108 selecteren, dan DB7 (busy flag is bit7) als ingang zetten (of hele poort indien dat je databus is), dan R/W hoog (read mode), dan meteen D/I laag (instruction mode), dan minimaal 140 nsec wachten dan E lijn hoog maken, dan minder dan 320 nsec wachten, dan DB7 (bit7) beginnen te pollen (wachten op laag), dan DB7 weer als uitgang, dan 450 nsec wachten dan E lijn omlaag.

bedankt, ik ga het morgen eerst eens proberen in die exacte volgorde.

[Bericht gewijzigd door Dinghe op (65%)]

ik heb uw instructies exact opgevolgd, en nu kan ik al pixels op het scherm schrijven :D

heel erg bedankt voor de hulp.

heb je anders ook zo een richtlijn om data door te kunnen sturen? want soms wordt mijn data of mijn command niet uitgevoerd.

Beginnen met kijken of display vrij is (dus de Busy Flag pollen, dus die routine uitvoeren.), dan R/W laag (write mode) en meteen D/I hoog (data mode) maken, dan minimaal 450 nsec wachten, dan E omhoog, dan data op de databus zetten, dan weer minimaal 450 nsec wachten dan E omlaag.