Gestire un display alfanumerico con un modulo SlimLine
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Gestire un display alfanumerico con un modulo SlimLine
- Questo topic ha 30 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 4 anni, 11 mesi fa da Sergio Bertana.
-
AutorePost
-
Luglio 8, 2013 alle 8:49 am #35379AnonimoInattivo
Mi chiedevo se sui sistemi SlimLine anche quello più economico si può collegare e gestire via software sul bus di espansione I2C un display, ad esempio un 2 righe x 16 caratteri, per visualizzare dei dati.
Luglio 8, 2013 alle 9:24 am #37680Sergio BertanaAmministratore del forumSi certo a tutti i modelli di CPU SlimLine anche i modelli Compact (Le versioni espandibili) può essere connesso un display LCD con interfaccia I2C. Cercando tra i vari distributori di materiale elettronico ho trovato ad esempio il modello BTHQ 21605V della BATRON (Codice RS-Components 743-6134), oppure il modello MCCOG21605C6W (Vedi datasheet) della MIDAS (Codice Farnell 2063203).Per la gestione abbiamo realizzato una specifica funzione SysI2CWrRd che permette di gestire l’accesso in lettura e scrittura di un qualsiasi dispositivo I2C connesso al bus. Utilizzando questa funzione è possibile fare coesistere senza problemi il display con i nostri moduli di estensione. Naturalmente dovrai scriverti un apposito FB che utilizzando la funzione inizializza il display e gestisce la scrittura dei testi, magari prevedendo come ingresso della FB una stringa da 32 caratteri che saranno trasferiti sulle due righe da 16 caratteri del display.Dato il basso consumo del display potrai attingere l’alimentazione dello stesso direttamente dal connettore di estensione del modulo SlimLine. Per ulteriori informazioni sulla connessione del display al connettore di espansione del modulo CPU consulta il Manuale riferimenti Hardware.
Settembre 3, 2013 alle 12:04 pm #37750AnonimoInattivoSono interessato pure io alla realizzazione del progetto con display I2C. Vi chiedo se siete andati avanti nel progetto della realizzazione della FB. Ciao buon lavoro…
Settembre 4, 2013 alle 3:08 pm #37751Sergio BertanaAmministratore del forumStimolato dalle richieste eccomi con una FB che gestisce la scrittura su di un display MC21605GL6W-SPI della Midas acquistato da Farnell (Codice 221-8947) di cui allego il datasheet. Ho collegato il display al bus di estensione di un modulo CPU compact ARM7 (Vedi foto), utilizzando il seguente schema elettrico.Come si vede dal programma (Stampa e Download), il blocco funzione MC21605LCDMng gestisce il display connesso al bus, occorre indicare l’indirizzo I2C del display, e l’indirizzo della stringa da visualizzare. I primi 16 caratteri della stringa saranno visualizzati sulla riga superiore del display mentre i secondi 16 sulla riga inferiore. Attivando la variabile Write viene eseguito il trasferimento della stringa sul display.Il FB viene eseguito da programma ladder ed il comando di Write è attivato sul fronte positivo di SysClock1000, quindi il display viene aggiornato ad ogni secondo. Il comando Write deve essere utilizzato per sincronizzare l’aggiornamento del display quando si varia la stringa da visualizzare, siccome l’aggiornamento del display avviene ciclicamente un carattere a loop di programma se vario la stringa mentre il display si aggiorna corro il rischio di visualizzare un messaggio composto da un pezzo del vecchio dato e da un pezzo del nuovo dato.Il programma potrà essere modificato per gestire display diversi da quello da me scelto magari con maggior numero di righe e colonne.
Settembre 5, 2013 alle 8:45 am #37753AnonimoInattivoOttimo lavoro… non rimane che provare…
Settembre 24, 2013 alle 8:02 pm #37792AnonimoInattivoCiao Bertaser, finalmente mi è arrivato il Display Midas per la prova dello SlimLine con LCD 2×16. Ho realizzato il circuito come descritto nel tuo messaggio, scaricato il programma, ma alla prima accensione vedo solo tutti i quadretti che formano i caratteri, cambiando il contrasto cambia la luminosità dei riquadri.
Nel tuo schema riporti ai pin 7 e 8 del display SA0, SA1 Address Setting, ho messo un dip-sw per facilitare l’inserimento. nel programma come indirizzo I2C hai messo 16#3C, ti chiedo dove trovo la tabellina che mi specifica gli indirizzi, sul data sheet non la trovo.
Io penso sia un problema di indirizzi, perchè il resto dovrebbe andare bene, il display è un MIDAS MC21605GL6W-SPTYI sullo SlimLine non mi pare che ci siano settaggi hardware da fare per abilitare I2C. Io ho lo SlimLine versione scheda OEM con I2C.
Ti ringrazio in anticipo, attendo una tua risposta intanto procedo con i tentativi…
Settembre 25, 2013 alle 7:02 am #37793AnonimoInattivoProblema LCD risolto, si trattava di un contatto non buono nel cavo piatto di collegamento fra display e SlimLine, uno dei connettori risultava difettoso. Ora rimane da vedere come visualizzare le variabili come ad esempio il valore del”analogica o lo stato dei timer.
Sistemo meglio i cablaggi poi eventualmente posto una foto.
Settembre 25, 2013 alle 1:08 pm #37794Sergio BertanaAmministratore del forumSono contento che il display funzioni, per la visualizzazione delle variabili puoi utilizzare la funzione SysVarsnprintf, variable print to string, ti componi una stringa con il testo ed il valore delle variabili e poi la trasferisci sul display. In merito all’indirizzamento del display sul bus I2C, ho fatto riferimento al datasheet dove è riportato.
Four 7-bit slave addresses (0111100, 0111101, 0111110 and 0111111) are reserved for the Controller. The least significant bit of the slave address is set by connecting the input SA0 (DB0) and SA1 (DB1) to either logic 0 (VSS) or logic 1 (VDD).
Nel mio circuito entrambi i segnali SA0 e SA1 sono connessi a VSS, quindi l’indirizzo è 16#3C.
Settembre 25, 2013 alle 8:29 pm #37797AnonimoInattivoPer quanto riguarda la funzione SysVarsnprintf dovrei visualizzare sul display, il valore degli ingressi analogici in volt, uso 2 variabili REAL Volt_1 e Volt_2 provenienti da SysGetAnInp. Hai qualche esempio di utilizzo della SysVarsnprintf per convertire e valori REAL della analogica in stringa da mandare al display ?
Ho fatto alcuni tentativi leggendo messaggi del forum e nel manuale ma con “scarsi risultati”, poi.. mettiamo il programma disponibile per essere scaricato. Grazie e lascio la scheda collegata per provare…
Settembre 26, 2013 alle 12:23 pm #37798Sergio BertanaAmministratore del forumTra i vari posts del forum c’è sicuramente qualche esempio di utilizzo della funzione SysVarsnprintf, in ogni caso ecco di seguito come visualizzare due variabili REAL sul display. La variabile LCDMessage di tipo STRING viene poi visualizzata sul display.
(* Real 1:xxx.xxx *)
(* Real 2:xx.x *)i:=SysVarsnprintf(ADR(LCDMessage), 16+1, ‘Real 1:%7.3f ‘, REAL_TYPE, ADR(RVar[0]));
i:=SysVarsnprintf(ADR(LCDMessage)+16, 16+1, ‘Real 2:%4.1f ‘, REAL_TYPE, ADR(RVar[1]));Come vedi la prima chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[0] su 3 cifre intere e 3 cifre decimali. La seconda chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[1] su 2 cifre intere e 1 cifra decimale. Sfrutto comunque la domanda per postare un programma (Stampa, Download sorgente), che visualizza ciclicamente (Ogni 2 secondi) 3 diversi messaggi:
Un messaggio di solo testo.
Un messaggio con le 2 variabili REAL.
Un messaggio con il valore di data ed ora.Settembre 27, 2013 alle 9:42 am #37801AnonimoInattivoTi ringrazio e procedo con le “prove” direi che il display I2C è una soluzione valida ed economica per visualizzare variabili di processo e testi. Alle prossime…
Ottobre 7, 2013 alle 1:48 pm #37825AndreaPartecipanteHo acquistato per errore questo display Codice Farnell 2063203 invece di questo Codice Farnell 2218947, adesso però ho un problema con lo schema elettrico, non ho ne CSB ne SA0 ed SA1… C’è qualche soluzione per poter utilizzare questo o devo acquistare quello corretto…
Ottobre 7, 2013 alle 2:13 pm #37826Sergio BertanaAmministratore del forumHo visto il datasheet del display che hai acquistato ed a livello di connessioni elettriche non ci sono problemi, colleghi solo i due segnali SCL ed SDA, tieni il pin di RESET del display a +5VDC.
Non ho visto se tutti i comandi I2C sono esattamente uguali al display da me utilizzato per le prove, ma solitamente le sequenze software per la gestione sono le stesse per tutti i display. Le sequenze da me utilizzate sono le stesse che utilizzo in altre apparecchiature dove è montato un display con interfaccia parallela.
Attenzione all’indirizzo del display da dare al blocco funzione, come vedi sul datasheet del display è riportato Slaver address could only set to 0111110, no other slaver address could be set. Quindi l’indirizzo da utilizzare è 16#37. Naturalmente a differenza dell’altro display che aveva la possibilità di definire l’indirizzo e quindi più display (Fino a 4) potevano condividere il bus I2C, con questo display ne puoi collegare uno solo.
Ottobre 7, 2013 alle 2:38 pm #37827AndreaPartecipanteGrazie mille, siete sempre fulminei e precisi nelle risposte… Provo a collegarlo e vi faccio sapere…
Ottobre 7, 2013 alle 3:05 pm #37828Sergio BertanaAmministratore del forumSe c’è un moderatore libero cerchiamo di rispondere con celerità, molte volte siamo impegnati in lavori fuori sede e/o assistenza remota via TeamViewer e non abbiamo il tempo materiale per rispondere.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.