En lurig ATM12864D (128x64 LCD)

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Hmm!
Manual skrev:Display Start Line (Z Address)
Z address (AC0~AC5) of the display data RAM is set in the display start line register and displayed at the top of the screen.
Som du säger, skicka noll, men det gick ju inte :S Det var därför jag blev så fundersam!
Displayen är i två halvor. Varje halva är indelad i 8 rader. Varje rad har 8 vertikala pixlar. Och det är så man skriver till dem.

Håller på att bli galen. Ska testa så får jag se.
ToPNoTCH
Inlägg: 5147
Blev medlem: 21 december 2009, 17:59:48

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av ToPNoTCH »

Dags att du visar lite mer kod :o
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Det finns inte mer kod, det jag skrev tidigare är allt typ... Ville bara få ut något på skärmen, sen är resten enkelt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av sodjan »

> Som du säger, skicka noll, men det gick ju inte

Varför går inte det och vad menar du igentligen med att "skicka noll" ???
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Skicka data till displayen (D0-D7) 0b000000
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av sodjan »

Och varför går inte det ?
Jag fattar noll just nu...
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Alltså om man skall sätta på en pixel så skall man skicka in ett data-värde. Nu så är alla pixlar på redan från start. Om jag nu skickar in 0b00000001 till en viss y och x adress så skall en viss pixel tändas och eftersom de andra bitarna i datan som skickas är "noll" så borde dessa pixlar släckas. Men de gör dem ju inte, eller de gjorde inte det. Har inte testat än att rensa hela skärmen först då jag inte har sakerna tillgängliga här :) Återkommer när jag kommit dit.
ToPNoTCH
Inlägg: 5147
Blev medlem: 21 december 2009, 17:59:48

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av ToPNoTCH »

Okay...

Posten började med att skärmen var full i pixlar och övergår nu till att du egentligen inte kan skriva till den alls.

Rensandet har egentligen inte med ditt skrivande att göra, utan var mer tips på din ursprungliga fråga.

Du kan strunta i rensandet tills du får ut grejorna på skärmen överhuvudtaget, vilket inte verkar vara fallet här.

Det är lätt att man hamnar på sniskan i tänkandet och de enkla felen blir mindre uppenbara.

Exempelvis har du koll på kontrasten. ??
Om den är maxad så blir alla pixlar fyllda oavsett vad displayminnet innehåller.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av sodjan »

> Nu så är alla pixlar på redan från start.

Menar du *exakt* alla ?
Normalt är det ca hälften, lite slumpartat över hela skärmen
(dock med ungefär samm a "mönster" vid varje power-on).

Det låter som ett kontrastproblem...
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Hmm, problemet är inte att jag inte kan skriva till den, egentligen så vet jag inte om jag skrivit något till den eftersom alla pixlar är på, och då kan jag ju inte se om något verkligen är skrivet.

Men som ni säger, kontrasten, den är ju full nu :D Ska se om det blir någon skillnad med en pot.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av TomasL »

Hmm. det är inte så att du har ett kontrastproblem?
Du kan normalt inte ha kontrasten på "fullt", nånstans i mitten, brukar bli bra.

Så här ser vår kod ut

Kod: Markera allt

//----- defines ------------------------------------------
// #define GLCD_UseBusyFlag
#define GLCD_DATA_IO PORTB
#define GLCD_DATA_DD TRISB  
#define GLCD_CTRL_IO PORTD
#define GLCD_CTRL_IO_BIT PORTDbits
#define GLCD_CTRL_DD TRISD
 

#define GLCD_DATA_READ  255
#define GLCD_DATA_WRITE 0

#define GLCD_Display128x64


#ifdef GLCD_Display128x64
	#define GLCD_SEL_ON 	 1
	#define GLCD_SEL_OFF  0

	#define GLCD_EN_ON 	 1
	#define GLCD_EN_OFF   0

	#define GLCD_RS_DATA  1
	#define GLCD_RS_CTRL  0

	#define GLCD_RW_READ  1
	#define GLCD_RW_WRITE 0

	#define GLCD_BUSY RD7
	#define GLCD_DOFF RD5
	#define GLCD_RES  RD4

	#define GLCD_SELBITS_SELECT 0b00001100

	#define GLCD_BUSYB 		 0b10000000
	#define GLCD_DOFFB 		 0b00100000
	#define GLCD_RESB  		 0b00010000
#endif
        void   glcd_init(void);
	void   glcd_open(void);
	void   glcd_close(void);
	void   glcd_clear_openclose(void);
        extern unsigned char glcd_in_use;

Kod: Markera allt

void 				
unsigned char glcd_in_use; // 0=not in use 
unsigned char glcd_ctrl_io;//	1=in use 

glcd_init(void) {    
	
	GLCD_RW = GLCD_RW_WRITE;
	GLCD_CTRL_DD = 0;
	GLCD_DATA_DD  = GLCD_DATA_WRITE;
	GLCD_DATA_IO  = 0;
	GLCD_CTRL_IO  = 0;
	GLCD_RST = 0; // reset display
	Delay10KTCYx( 80 );  // delay in ms	
	GLCD_RST = 1;
	
	glcd_in_use=0;
	glcd_gmode = GLCD_B_W;
	
#ifndef GLCD_inverted
		glcd_gmodemask=0;
#endif
#ifdef GLCD_inverted
		glcd_gmodemask=255;
#endif
	
	glcd_clipx=0;
	glcd_clipy=0;

	#ifdef GLCD_Display128x64
		glcd_clipx2=128;
		glcd_clipy2=8;
	#endif
	#ifdef GLCD_Display256x64
		glcd_clipx2=256;
		glcd_clipy2=8;
	#endif
	#ifdef GLCD_Display128x128
		glcd_clipx2=128;
		glcd_clipy2=16;
	#endif

	glcd_clear_openclose();
}
void	glcd_clear_all(void) {
	#ifdef GLCD_Display128x64
		glcd_clear( 0, 0, 128, 8);
	#endif
	#ifdef GLCD_Display256x64
		glcd_clear( 0, 0, 256, 8);
	#endif
	#ifdef GLCD_Display128x128
		glcd_clear( 0, 0, 128, 16);
	#endif

void 	glcd_clear_openclose(void) {
	glcd_open();
	glcd_clear_all();
	glcd_close();
}
void 				glcd_close(void) {
	glcd_in_use=0;
}
void	glcd_open(void) {
	glcd_in_use = 1;	 // display in use
	GLCD_CS1 = GLCD_SEL_ON; 	
	GLCD_CS2 = GLCD_SEL_ON;
	glcd_write_com(GLCD_ON);
}
Användarvisningsbild
Adis
Inlägg: 1373
Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:

Re: En lurig ATM12864D (128x64 LCD)

Inlägg av Adis »

Pinsamt fel. Kontrasten + LATD (data output) (PIC18F4550) :oops:
Funkar prima.
Skriv svar