Zerototale Inserito: 16 febbraio 2011 Segnala Share Inserito: 16 febbraio 2011 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: FileDove sbaglio? Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 16 febbraio 2011 Segnala Share Inserita: 16 febbraio 2011 (modificato) Se firmware 99% funzionante e escludiamo problemi di collegamentiuna 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'altroUltima 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: 16 febbraio 2011 da accacca Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 febbraio 2011 Segnala Share Inserita: 16 febbraio 2011 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 More sharing options...
Zerototale Inserita: 16 febbraio 2011 Autore Segnala Share Inserita: 16 febbraio 2011 (modificato) 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: 16 febbraio 2011 da Zerototale Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 febbraio 2011 Segnala Share Inserita: 16 febbraio 2011 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. 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; } Link al commento Condividi su altri siti More sharing options...
Zerototale Inserita: 23 febbraio 2011 Autore Segnala Share Inserita: 23 febbraio 2011 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 More sharing options...
accacca Inserita: 23 febbraio 2011 Segnala Share Inserita: 23 febbraio 2011 (modificato) Hai controllato il segnale di resetprova ad accendere e da acceso a dare un reset al micro Modificato: 23 febbraio 2011 da accacca Link al commento Condividi su altri siti More sharing options...
Zerototale Inserita: 23 febbraio 2011 Autore Segnala Share Inserita: 23 febbraio 2011 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 More sharing options...
accacca Inserita: 23 febbraio 2011 Segnala Share Inserita: 23 febbraio 2011 Scusa spiegami meglio cosa fai con il led che metti e togliColleghi V+-->R--->led--->GND poi sconnetti il led e tutto funzionaIo 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 More sharing options...
mariano59 Inserita: 23 febbraio 2011 Segnala Share Inserita: 23 febbraio 2011 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 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 24 febbraio 2011 Segnala Share Inserita: 24 febbraio 2011 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. Con altro display "identico" spariti i problemi all'avvio. Link al commento Condividi su altri siti More sharing options...
beppe18 Inserita: 9 aprile 2011 Segnala Share Inserita: 9 aprile 2011 Molto probabilment non si inizializza il display e di conseguenza non scrive nemmenoo a bordo non ha un controller 44780o è saltato qualche cosa se vuoi un display con controller 44780 dimmi qualche cosaBeppe 18 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora