Ik heb via futurlec een 128x64 pixels grafisch lcd besteld, met een t6963c controller erop, maar tot nu toe wilt hij niet veel doen. Met behulp van de datasheet( www.baso.no/content/pdf/T6963C.pdf ) en nog wat andere sites, heb ik deze code geschreven:

		LIST   		P=PIC16F877
		__CONFIG	3F72
		include		bank.inc
		include 	P16f877.inc

;******************************************************
;**************************EQU's***********************
;******************************************************

Dataport	EQU			08h
Cfgport		EQU			06h
RST		EQU			5
Write		EQU			4
Read		EQU			3
E		EQU			2
CD		EQU			1
FS		EQU			0
counter		EQU			21h
counter1	EQU			22h

;******************************************************
;**************************main************************
;******************************************************

		ORG		00h
		bank1
		CLRF		TRISB
		CLRF		TRISD
		bank0

		BCF		Cfgport, RST
                CALL            delay_10ms
                BSF		Cfgport, RST

		CALL		checkstatus
		MOVLW		0x00			;set graphics home address (0000-8192)
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x00
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x42
		CALL		sndcmd
		CALL		checkstatus
		MOVLW		0x00
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x20
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x42
		CALL		sndcmd

		CALL		checkstatus
		MOVLW		0x10			;set graphics area set
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x00
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x43
		CALL		sndcmd

		CALL		checkstatus
		MOVLW		0x81			;set up text home address
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x20
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x40
		CALL		sndcmd
		CALL		checkstatus
		MOVLW		0x80
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x00
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x40
		CALL		sndcmd

		CALL		checkstatus
		MOVLW		0x10			;set text area set
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x00
		CALL		snddata
		CALL		checkstatus
		MOVLW		0x41
		CALL		sndcmd

		CALL		checkstatus
		MOVLW		b'10001000'		;mode set
		CALL		sndcmd

		CALL		checkstatus
		MOVLW		b'10011111'		;display on  (graph on, text on, cursor on, blink on)
		CALL		sndcmd

stop		NOP
                GOTO		stop

;******************************************************
;***********************LCD Routines*******************
;******************************************************

sndcmd		BSF		Cfgport, CD
		BSF		Cfgport, Read
		BCF		Cfgport, Write
		MOVWF		Dataport
		BCF		Cfgport, E
		NOP
		BSF		Cfgport, E
		RETURN

snddata		BCF		Cfgport, CD
		BSF		Cfgport, Read
		BCF		Cfgport, Write
		MOVWF		Dataport
		BCF		Cfgport, E
		NOP
		BSF		Cfgport, E		
		RETURN

checkstatus	bank1                                    ;check of de t6963c bezig is
		MOVLW		0xFF
		MOVWF		TRISD
		bank0
		BSF		Cfgport, CD
		BCF		Cfgport, Read
		BSF		Cfgport, Write
checksta1	BCF		Cfgport, E
		NOP
		BTFSS		Dataport, 0
		GOTO		checksta1
		BTFSS		Dataport, 1
		GOTO		checksta1
		bank1
		CLRF		TRISD
		bank0
		RETURN

		END

Op portd van de gebruikte pic16f877 zit dus de dataport van het lcd, en op portb heb ik de enable, de reset, de write, de read, command/data en de font select aangesloten (zie de equ's in de code). Het resultaat is nu dat ik de ene keer alles zie oplichten, en de andere keer lichten er een aantal pixels (75% denk ik) op, wat willekeurig lijkt qua plaatsing, het vormt dus geen losse tekens ofzo. In een simulatie programmatje (proteus) zie ik dat er een cursor op plaats 1 behoort te staan die knippert, maar dat is bij mij dus niet het geval. Weet iemand misschien welke fout ik heb gemaakt? Moet ik misschien eerst het scherm clearen ofzo? Mocht er verduidelijking nodig zijn, laat het dan maar ff weten.

Alvast bedankt,
Wouter

Van alles nog geprobeert, maar het gaat alleen maar weg als ik de graphic en de tekst disable door bit 2 en 3 van "display on" te clearen, en ook dan zie ik geen cursor. Ik probeer daarom eerst om in het simulatie programma er een letter naar toe te schrijven. In de datasheet lees ik dat ik dan eerst de address pointer in het tekst of in het graphic deel moet zetten, dan de data er naar toe schijven, en vervolgens 0xC0 er naartoe moet schrijven (blz. 22 van de datasheet), maar als ik dit doe en uit probeer in de simulatie, gebeurt er helemaal niets. Ook als ik probeer om de cursor eentje naar rechts te verplaatsen met deze code


CALL   checkstatus
MOVLW  0x01
CALL   snddata
CALL   checkstatus
MOVLW  0x00
CALL   snddata
CALL   checkstatus
MOVLW  0x21
CALL   sndcmd

werkt het niet, hij blijft gewoon op de eerste plaats staan. Iemand enig idee?

Dankzij deze code, met dit bestand is het uiteindelijk toch nog gelukt. De meeste info had ik van hier, maar er stonden hier behoorlijk veel fouten in, plus dat ik zelf oa de instellingen voor de ram area verkeerd had gezet. Na deze fouten te hebben recht gezet en een schone en duidelijkere code te hebben geschreven lukt alles nu; Zowel graphics ernaar toe schrijven, als tekst, als de cursor verplaatsen.

Als er iemand interesse heeft in deze code moet diegene dat ff zeggen, dan zal ik hem eerdaags ff online zetten.

Hier meldt zich iemand voor de werkende code. Mijn assembly kennis is niet bijzonder groot, maarja ik moet het toch eens onder de knie krijgen.

Alvast bedankt!