Testo e Glcd Ks108

10 Anni 9 Mesi fa #6 da seastar2262
Risposta da seastar2262 al topic Testo e Glcd Ks108
Chiedo scusa, immaginavo che fosse una questione di dimensioni, ma non avevo trovato il file del regolamento

...eccolo

File allegato:

Nome del file: display.wmv
Dimensione del file:1,148 KB
Allegati:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • seastar2262
  • Visitatori
  • Visitatori
10 Anni 9 Mesi fa #7 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Testo e Glcd Ks108
...meno peggio di quello che pensavo!

Sembra solo che riempia le righe in maniera continua.
Ho letto la documentazione della funzione, in particolare ho visto pure quella ufficiale ma no spiega che cosa sia il valore x.

Un modo per risolvere il problema sarebbe quella di usare la funzione

procedure Glcd_Write_Text_Adv(var text : string; x, y : word);

Glcd_Write_Text_Adv("GLCD LIBRARY DEMO, WELCOME !", 0, 0);

0,0 sono le coordinate x,y e sei libero di metterle dove vuoi.
Non sono certo dove la libreria ponga il punto 0,0 ma lo vedrai semplicemente con un test.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
10 Anni 9 Mesi fa #8 da seastar2262
Risposta da seastar2262 al topic Testo e Glcd Ks108
Mauro...o mi sfugge qualcosa o abbiamo peggiorato...

queste le modifiche che ho fatto

Glcd_Write_Text("This is Page 0", 0, 0, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 1", 0, 1, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 2", 0, 2, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 3", 0, 3, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 4", 0, 4, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 5", 0, 5, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 6", 0, 6, 1);
Delay_ms(1000);
Glcd_Write_Text("This is Page 7", 0, 7, 1);

Delay_ms(500);
Glcd_Fill(0x00); // Fill Glcd

Glcd_Write_Text_Adv("con w_text_adv", 0, 35);

Delay_ms(5000);
Glcd_Fill(0x00);


Glcd_Write_Text_Adv("This 0", 0, 0 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 1", 0, 10 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 2", 0, 20 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 3", 0, 30 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 4", 0, 40 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 5", 0, 50 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 6", 0, 60 );
Delay_ms(1000);
Glcd_Write_Text_Adv("This 7", 0, 70 );
Delay_ms(1000);

ora non solo la Glcd_Write_Text_Adv scrive esattamente dove vuole come prima, le 8 righe precedenti a queste sono illeggibili...sembra che si sovrappongano i caratteri anche se dovrebbero venire usate due funzioni separate



allego filmino

File allegato:

Nome del file: IMG_4344.wmv
Dimensione del file:1,029 KB
Allegati:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • seastar2262
  • Visitatori
  • Visitatori
10 Anni 9 Mesi fa #9 da seastar2262
Risposta da seastar2262 al topic Testo e Glcd Ks108
...Proseguono le prove

Ho eliminato tutta la parte grafica che ormai è appurato che funziona bene.

il codice ora è così


sbit BACK_LIGHT at PORTC.B0;

char GLCD_DataPort at PORTD;

sbit GLCD_CS1 at RE0_bit;
sbit GLCD_CS2 at RE1_bit;
sbit GLCD_RST at RE2_bit;

sbit GLCD_RW at RB2_bit;
sbit GLCD_RS at RB3_bit;
sbit GLCD_EN at RB4_bit;

sbit GLCD_CS1_Direction at TRISE0_bit;
sbit GLCD_CS2_Direction at TRISE1_bit;
sbit GLCD_RST_Direction at TRISE2_bit;

sbit GLCD_RW_Direction at TRISB2_bit;
sbit GLCD_RS_Direction at TRISB3_bit;
sbit GLCD_EN_Direction at TRISB4_bit;

// End Glcd module connections

void Delay2S(){ // 2 seconds delay function
Delay_ms(2000);
}

void main() {
ADCON0 = 0b00000000; // ADCS = 00 CHS = 0000 (RA0)
ADCON1 = 0b00001110; // PCFG = 1110 (da 1 a 7 digitale + 0 analogica)
ADCON2 = 0B10000000; // BIT1 (giustificato a destra)
CMCON = 0b00000111; // disabilito i comparatori

//
SETTAGGIO DIREZIONE PORTE
TRISA = 0b00111111;
TRISD = 0b00000000;
TRISB = 0b00000000;
TRISC = 0b00000000;
TRISE = 0b00000000;
//
BACK_LIGHT = 1;

Glcd_Init(); // Initialize GLCD
Glcd_Fill(0x00); // Clear GLCD

Glcd_Set_Font (Font_Glcd_5x7, 5, 7, 32);
Glcd_Write_Text ("CIAO",0,0,1);
Glcd_Write_Text ("CIAO",0,1,1);
Glcd_Write_Text ("CIAO",0,2,1);

while (1){

}

}

Così visualizza perfettamente, se aggiungo una 4 riga visualizza come nella foto allegata

Saluti
Massimo


Allegati:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • seastar2262
  • Visitatori
  • Visitatori
10 Anni 9 Mesi fa #10 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Testo e Glcd Ks108
Ciao Massimo,

sospetto problemi di timing.

Prova a definire

char GLCD_DataPort at LATD;

e non PORTD (ma non sono certo se tale cambio e´ supportato.

poi fai un secondo test.

Se non funziona prova anche:

Se fai uso di un quarzo da 20MHz prova ad ingannare il compilatore dicendo che usi una frequenza di clock pari al doppio. Non usare pero´ valori oltre a quelli massimi consentiti.

In questo modo la libreria dovrebbe rallentare leggermente.


Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login