Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 25 april 2010, 15:02:09
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
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
Inlägg
av ToPNoTCH » 25 april 2010, 15:15:53
Dags att du visar lite mer kod
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 25 april 2010, 15:23:07
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
Inlägg
av sodjan » 25 april 2010, 15:46:33
> 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" ???
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 25 april 2010, 18:36:58
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
Inlägg
av sodjan » 25 april 2010, 18:42:48
Och varför går inte det ?
Jag fattar noll just nu...
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 25 april 2010, 18:47:42
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
Inlägg
av ToPNoTCH » 25 april 2010, 22:03:23
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
Inlägg
av sodjan » 25 april 2010, 22:20:41
> 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...
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 25 april 2010, 23:32:13
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
Ska se om det blir någon skillnad med en pot.
TomasL
EF Sponsor
Inlägg: 46974 Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:
Inlägg
av TomasL » 26 april 2010, 07:55:05
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);
}
Adis
Inlägg: 1373 Blev medlem: 26 augusti 2003, 19:57:03
Skype: adis1987
Ort: Gävle
Kontakt:
Inlägg
av Adis » 27 april 2010, 20:36:31
Pinsamt fel. Kontrasten + LATD (data output) (PIC18F4550)
Funkar prima.