Sida 1 av 1

Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 11:48:39
av treton
Hej,

efter en hel del arbete med min glcd har jag kommit lika långt som jag var från början. Får inte ut ett skvatt på skärmen.

Min display är en 128*64 grafisk display SG12864C, jag jobbar med en PIC16F690 på breadboard. Min högsta önskan nu är att skriva ut en synlig pixel eller två på displayen. Jag har kollat att alla utgångar fungerar som de ska med lysdioder, jag har kopplat in kontrastpotentiometer, jag har studerat http://www.geocities.com/dinceraydin/dj ... cdsim.html. Dessutom har jag laddat ner alla olika 'glcd.c' på nätet och testat med mina förutsättningar.

Jag kan inte assembler, utan jobbar med c-kod via cc5x. Jag har testat _många_ varianter, men här är den senaste koden.

Kod: Markera allt

#include "16F690.h"
#pragma config FOSC = 4 //intern oscillator, RA4, RA5 tillgängliga för I/O
#pragma bit DI  	@ PORTB.4
#pragma bit ENABLE  @ PORTB.5
#pragma bit RW		@ PORTA.1
#pragma bit RESET	@ PORTA.2
#pragma bit CS1		@ PORTB.6
#pragma bit CS2		@ PORTB.7

void delay(char millisec);

void main( void)
{
	TRISA=0;TRISB=0;TRISC=0; //bara utgångar

	//Måste initiera dessa för att kunna använda PORTA-PORTC som digital I/O
	ANSEL=0;
	ANSELH=0; 
	
	delay(100);
	RESET=0;
	delay(100);
	RESET=1;
	delay(100);

	PORTC=0b00111111;delay(1); //display on
	DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
	delay(10);
	ENABLE=0;nop();nop(); ENABLE=1;nop();nop(); //

	PORTC=0b1100.0000;delay(1); //set STARTLINE
	DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
	delay(10);
	ENABLE=0;nop();nop(); ENABLE=1;nop();nop();

	PORTC=0b10111000;delay(1); //set page 0
	DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
	delay(10);
	ENABLE=0;nop();nop(); ENABLE=1;nop();nop();

	PORTC = 0b01000000;delay(1); //set y address 0			
	DI=0;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
	delay(10);
	ENABLE=0;nop();nop(); ENABLE=1;nop();nop();

	PORTC = 0b01010101;delay(1);	//write data
	DI=1;RW=0;ENABLE=1;CS1=1;CS2=1;RESET=1;
	delay(1);
	ENABLE=0;nop();nop(); ENABLE=1;nop();nop();
	
    while(1)
    {
    } 
}

void delay( char millisec)
{
    OPTION = 2;  /* prescaler divide by 8        */
    do  {
        TMR0 = 0;
        while ( TMR0 < 125)   /* 125 * 8 = 1000  */
            ;
    } while ( -- millisec > 0);
}
Mycket tacksam för input om vad jag borde testa. Vad är de vanligaste nybörjarfelen med glcd? Jag har svårt att förstå essensen av timingdiagrammet i manualen (jag är ingen elektriniker egentligen), vad är det viktiga att hålla koll på där? Jag kan tillägga att jag jobbat med två olika displayer med samma resultat.

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 11:51:21
av sodjan
Vad är det för controller på modulen ?
Datablad på modulen ?

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 12:20:59
av Stinrew
KS0107

Datablad

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 14:34:45
av Gorgus
Kanske det här kan hjälpa? Exempel 2, längst ned på sidan.

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 14:48:42
av treton
Jag har tittat på den tidigare. Den bygger på att man kompilerar med mikroC och använder dess integrerade biblioteksfunktioner för glcd.

Jag vill bara få ut en pixel, men utan att använda färdiga bibliotek. Men visst, får jag inte till det snart får jag kanske testa med mikroC.

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 14:50:53
av v-g
Resetpinnen måste hållas hög annars får du aldrig ut något på displayen. Om man "joxar" för mycket kan displayen (eller snarare kontrollerkretsarna) få fnatt och RESET är enda vägen ur det hela så det är bra att koppla denna till PICen i ett senare läge.

Sen slår man "på" displayen. Kolla sidan 11 i databladet <--(från fractronics)
Kontrasten har du fungerande antar jag?

Lånade denna bild från fractronics för att illustrera.
Bild

Annars är denna länk ett mycket bra sätt att starta på!

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 15:10:40
av treton
Tack v-g!

Jag mitt nöt hade kopplat kontrasten mellan GND och +5 V som jag gjort med teckenbaserad LCD tidigare. Ditt schema fick mig att se felet tydligt. Tackar!

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 15:28:48
av sodjan
Och ? Fungerar det nu ?

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 15:32:38
av treton
Ja, nu funkar det fint. Det var kontrasten som jag kopplat mot positiv spänning i stället för mot negativ... Tack för hjälpen!

Re: Hur få fart på 128x64 GLCD?

Postat: 19 mars 2009, 16:50:42
av v-g
Varsågod, glad att kunna hjälpa till. :) Schemat är dock inte mitt utan Fractronis men jag använde det faktist själv första gången.