Vai al contenuto
PLC Forum


Pic Usart E Lcd - visualizzare stringa su lcd


papero

Messaggi consigliati

Ciao a tutti!

Ho un problema con un 16f628 ed un lcd 16X2...

Ho realizzato un circuito di prova collegando il pic alla rs232 del pc tramite la sua usart, inoltre è connesso un lcd configurato a 4 bit alla portb per visualizzare eventuali dati.

Inviando un testo dal pic al display, tutto è regolare, ma quando cerco di visualizzare dei caratteri ricevuti dalla seriale, mi visualizza caratteri strani...

Penso sia un problema di conversione dei dati, qualcuno mi può aiutare?

per ora mi interessa solo la linea Rx del pic, quindi molto semplice la cosa... Visualizzare sul display i caratteri che ricevo dal pc...

....

Grazie!

Link al commento
Condividi su altri siti


io comincerei dalle cose semplici

trasmetti al PC il carattere ricevuto così sei sicuro di cosa riceve il PIC e della configurazione della porta baudrate ecc..

Poi di prima botta penserei all'interrupt di seriale che interferisce con la scirttura lcd. però non so se tu ricevi dati mentre scrivi oppure ricevi e scrivi in sequenza. se puoi aggiungi altre informazioni.

Se scrivi in asm un'altra possibilità è che il tuo interrupt non salva o non ripristina lo stato correttamente.

se puoi aggingi dettalgi sulla procedura

ciao

Link al commento
Condividi su altri siti

Non scrivo in asm, sto usando mikrobasic versione free.

Riguardo al collegamento ho attivo in questo circuito solo la linea rx del pic.

Comunque ne ho un altro con entrambe le linee, ma senza lcd.

Preciso che il circuito ha una interfaccia 232-485 sul pc ed una 485-pic sul micro.

I comandi sembra che arrivano bene, testati con la precedente scheda, solo che non so se i dati che riceve tramite la usart, possano essere inviati al display direttamente o devono essere prima convertiti.

Grazie!

Link al commento
Condividi su altri siti

ciao papero si fa la notte...

non credo ci sia bisogno di convertirli guarda la tabella del display ma penso che i caratteri dal 32(spazio) al 122('z') dovrebbero corrispondere ai normali caratteri ascii.

Anzi no non serve perchè se visualizzi bene il testo dal PIC è OK.

Piuttosto guarda il collegamento 485 può esserci qualche problema nella commutazione, non hai niente per veder cosa passa sulla seriale (oscilloscopio o simili). POtresti forzare i due driver nella direzione PC-->PIC tanto ti basta solo trasmettere dati al PIC.

Non puoi spostare l'LCD sull'altro PIC sono una decina di fili ma forse non è tempo buttato.

Altra idea puoi scaricare un codice che fa così

se riceve la lettera 'A' commuta un pin qualsiasi del micro. In partenza lo conifugri alto e quando ricevi 'A' lo metti basso. Così sei sicuro di quello che ricevi.

io sono qui ancora per un po se vuoi chiama

ciao

scusa papero ho riletto il thread e mi è venuto un dubbio ma tu gli mandi via dati con un protocollo bello e pronto o provi con programmi tipo hyperterminal.

Io inizialmente proverei a mandare caratteri singoli con hyperterminal.

Modificato: da accacca
Link al commento
Condividi su altri siti

Eccomi, stavo pensando di spostare lcd sull'altro circuito, almeno riesco a vedere anche cosa mi ritorna.

La cosa strana è quando gli faccio interpretare il dato ricevuto sembra che non lo riconosce.

Mi spiego meglio, se gli dico quando ricevi la "A" poni alto un pin, non me lo pone mai alto...

Di solito assegno ad una variabile la lettera "A", poi faccio il confronto con quello che ricevo, ma è come se i due dati sono completamente diversi!

Comunque mi hai dato una bella idea, l'altro circuito ha anche la porta seriale "pura" con un max232, quindi gli porto lcd e posso provare a fare molte più prove.

Cambia solo il pic, il secondo circuito porta un 18F252, ma se ci riesco con questo sono a posto.

Scusa la rottura, ma è da poco che interfaccio un lcd con una usart!

Grazie dei consigli!

Link al commento
Condividi su altri siti

Prima assicurati che la seriale trasmetta correttamente (con gli stessi parametri budrate , parita' ecc...)

Poi quando sei sicuro di ricevere e decodificare i dati correttamente provi con l'LCD

Ciao :)

Link al commento
Condividi su altri siti

papero dall analisi dei sintomi risulta questo

1.- La procedura PIC LCD sembra corretta perchè il PIC scrive il testo da memoria a LCD correttamente

2.- La procedura di comunicazione seriale sembra corretta perchè l'altro PIC riceve correttamente.

A questo punto io vedo due possibili cause

La 485 che non hai testato nel PIC con cui hai provato la seriale

La concomitanza dei due eventi scrittura LCD e ricezione seriale cosa mai provata fino ad ora

Se il test carattere ricevuto non ha successo la 485 è sicuramente un problema

Se poi non funziona ancora io guarderei gli interrupt.

ciao

Link al commento
Condividi su altri siti

Sto facendo dei test, ho appena finito di collegare il display al 18f252, con entrambe le linee di trasmissione attive.

Il solo display funziona, ora provo a farlo "parlare" con la seriale...

La cosa buona che su questo pic il display e la usart sono su due porte differenti.

Vediamo...

Link al commento
Condividi su altri siti

Rieccomi qua...

Allora, ho effettuato le prove che mi avete consigliato ed in effetti qualcosa non va bene...

Trasmetto tramite la seriale una lettera, la memorizzo in una variabile tipo BYTE, e dopo un secondo la rimando al pc, ritorna un carattere che non è quello...

Ho provato a convertirla in formato word, ma niente, non cambia nulla...

Avete consigli? ....

......

Link al commento
Condividi su altri siti

Prima assicurati che la seriale trasmetta correttamente (con gli stessi parametri budrate , parita' ecc...)
Modificato: da accacca
Link al commento
Condividi su altri siti

Ho deciso di fare la prova eliminando i 485.

Collego la 232 al pic tramite il buon max232, almeno mi assicuro che non è un problema di "rete".

Come impostazioni della com ho le classiche 9600,8,0,1,0

Vi faccio sapere...

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...