Vai al contenuto
PLC Forum


Display Lcd Hd44780 Capriccioso - Ho un problema con il suddetto display


Zerototale

Messaggi consigliati

Salve a tutti,

Vi scrivo perchè sono in crisi!

Ho acquistato un display LCD HD44780 senza retroilluminazione, l'ho collegato al PIC 16F876A (con programma funzionante al 99%) solo che al momento dell'accensione il resto dei componenti fa il suo lavoro mentre sul display appare il nulla.

Ho provato a girare in entrambi versi il trimmer, ma ciò che ottengo è la comparsa di 2 righe nere senza caratteri.

Dico che il programma dovrebbe essere funzionante perchè testandolo con un simulatore funzionava e inoltre ho solo riadattato un software funzionante (il

dovrebbe confermare) per 16F876A il programma che era per il 16F877A.

I collegamenti fatti su breadboard sembrano corretti.

Vi allego lo schema (scusate ma non ho avuto il tempo di farlo decentemente) e il software: File

Dove sbaglio?

Link al commento
Condividi su altri siti


Se firmware 99% funzionante e escludiamo problemi di collegamenti

una causa potrebbe essere la velocità di invio comandi

mi pare che il controller LCD vada pianinousi lo stesso quarzo ?

Altra ipotesi non controlli il busy flag tra un comando e l'altro

Ultima ipotesi non fai la sequenza di inizializzazione corretta.

scusa ho visto lo schema e il codice che è hex quindi non l'hai fatto tu perciò le ipotesi precedenti cadono.

Non conosco PIC ma qurl modello ha oscilaltore interno o nello schema non hai disegnato il quarzo ?

c'è qualche altra cosa che "si agita" quando il prgramma funziona per capire se è solo un problema di LCD o è il programma che non funziona

Modificato: da accacca
Link al commento
Condividi su altri siti

Non è detto. Ci ho perso del tempo con quel "porco" diplay per farlo funzionare sempre con sicurezza.

Perchè non metti on line il sorgente delle routines del diplay?

Alle volte basta un niente per non farlo funzionare correttamente. I problemi maggiori li danno i ritardi, se son corti l'arnese non va.

Per evitare problemi legati al micro ed al quarzo uso la function del compilatore che si smazza il tutto in funzione della frequenza di quarzo impostata.

Link al commento
Condividi su altri siti

Per semplificare il disegno lo schema era fatto senza oscillatore e senza resistenza di pull-up ho aggiunto la resistenza del reset con paint, ma ho dimenticato il quarzo.

Comunque per il progetto uso un quarzo da 20 mhz con due condensatori da 22 pF cosa che non dovrebbe causare problemi dato che anche nel progetto originale erano questi.

Ecco il sorgente del display:

Sorgente Display

Modificato: da Zerototale
Link al commento
Condividi su altri siti

Ho dato una scorsa veloce al sorgente; così a occhio mi da l'idea che l'inizializzazione non sia ottimale.

Ti riporto quella che uso io e che ho messo a punto una decina di anni fa quando ho avuto problemi di ripetibilità. Anche a me, cambiando display o micro, alle volte il display rimaneva spento o impiegava un paio di minuti a partire. mad.gif

Il codice è testato con la porta B e con la porta D, anche se il sorgente che vedi è indirizzato per la porta B.

//byte const lcd_init_str[5]= {0x28, 0x1C, 0x0C, 0x07, 0x01};
/*                                            ^     ^        ^      ^       ^                      *
*   modo 4 interfaccia 4 bit          |     |          |       |       |                      *
*   2 linee, matrice 7x5_________|     |         |        |      |                      *
*   il display scorre verso dx________|         |         |      |                      *
*   il display è acceso, cursore invisibile______|        |      |                      *
*   Incrementa; il display scorre verso dx_________|       |                      *
*   cancella il display______________________________|                     */
/******************************************************************************
 *        Port_B0 ==> Data line DB4                                            *
 *        Port_B1 ==> Data line DB5                                            *
 *        Port_B2 ==> Data line DB6                                            *
 *        Port_B3 ==> Data line DB7                                            *
 *        Port_B4 ==> E                                                        *
 *        Port_B5 ==> R/S                                                      *
 *----------------------------------------------------------------------------*/

void lcd_init()
{
   int i;
    output_b(0x00);   //azzera la porta B ponendo LCD in modo comando (R/S = 0)
                      //e disabilitandolo (E = 0)
    delay_ms(1000);
    PORT_B = 0b000011;   //OP Code 3H == reset
    strobe();
    delay_ms(5);
    PORT_B = 0b000011;   //OP Code 3H == reset
    strobe();
    delay_us(100);
    PORT_B = 0b000011;   //OP Code 3H == reset
    strobe();
    delay_ms(5);
    PORT_B = 0b000010;   //OP Code 2H per interfaccia 4 bit
    strobe();
    delay_us(40);
    for (i=0; i <5; ++i)
       {
          lcd_write(0, lcd_init_str[i]);
          delay_ms(20);
       }
       delay_ms(20);
    lcd_clear(); //Pulisce il diplay
    delay_ms(20);
    lcd_write(0, 0x03); //Cursora a capo; Il cursore in alto a sx
    delay_ms(20);
    lcd_write(0, 0x0f); //cursore quadro lamp.
    delay_ms(20);
    lcd_write(0, 0x06); //cursore si muove a dx
    delay_ms(20);
    lcd_write(0, 0x80);  // Prima linea
    delay_ms(20);

}

/****************************************
 Enable LCD to read data
*****************************************/
void LCD_STROBE (void)
   {
   LCD_EN = 1;
   DelayUs(1);
   LCD_EN=0;
   } 

mad.gif

Link al commento
Condividi su altri siti

Niente neanche con quel sorgente va..

Più o meno sono riuscito a fare apparire le scritte in un modo assurdo ( non chiedetemi come ho fatto)

In pratica per verificare se l'alimentazione della bredboard funzionasse ho inserito un led tra + e - quando l'ho tolto magia il display ha funzionato. Ed ogni volta che dò l'alimentazione per fare comparire le scritte devo utilizzare questo escamotage.. cosa può essere? come posso risolvere senza attaccare e staccare il led?

Link al commento
Condividi su altri siti

Se faccio il reset della pic devo ripetere l'operazione del led perchè non mi fa leggere le scritte. La pic è funzionante in quanto con un altro display con retroilluminazione funziona tutto

Link al commento
Condividi su altri siti

Scusa spiegami meglio cosa fai con il led che metti e togli

Colleghi V+-->R--->led--->GND poi sconnetti il led e tutto funziona

Io pensavo forse il micro parte in tromba e il display no perciò il micro ha già iniziato al configurazione mentre l'LCD ancora deve svegliarsi.

ma non trovo una spiegazione per l'operazione del led

Link al commento
Condividi su altri siti

Di suo il led assorbe pochi mA, quindi non dovrebbe influire come carico sullo stabilizzatore, a volte capita di collegare a stabilizzatori da 1,5A carichi quasi inesistenti e avere malfunzionamenti del regolatore, instabilità magari minime, ma critiche per alcuni circuiti, in questo caso potresti collegare un carico fisso all'alimentazione, una resistenza che tenga un carico immediato, o i led del retroilluminato. Pensavo ad un falso contatto che si inseriva nella manovra di manipolazione del led, ma se dici che col display retroilluminato non sbaglia un colpo, il motivo può essere quello discusso sopra, oppure una tensione al limite della tolleranza per il "porco" (cfr Livio, deve averTi fatto proprio disperare!!!!), che non inizializza bene.

Ciao smile.gif

Link al commento
Condividi su altri siti

La pic è funzionante in quanto con un altro display con retroilluminazione funziona tutto 

Mi sa che è il display con dei problemi.

Purtroppo questi dispositivi sono in molti a farli ed ancor più a venderli. Vendono di tutto, anche quelli difettosi.

Quel tipo di difetto che segnali è proprio quello che mi capitò anni fa. Risolto brillantemente gettando il display nel cesso. mad.gif

Con altro display "identico" spariti i problemi all'avvio.

Link al commento
Condividi su altri siti

  • 1 month later...

Molto probabilment non si inizializza il display e di conseguenza non scrive nemmeno

o a bordo non ha un controller 44780

o è saltato qualche cosa se vuoi un display con controller 44780 dimmi qualche cosa

Beppe 18

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...