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
...eccolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- seastar2262
- Autore della discussione
- 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
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
- Moderator
Riduci
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
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
Si prega Accedi o Crea un account a partecipare alla conversazione.
- seastar2262
- Autore della discussione
- 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
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
Si prega Accedi o Crea un account a partecipare alla conversazione.
- seastar2262
- Autore della discussione
- 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
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.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.