
![]() | #1 (permalink) Top |
User Data registr.: 04-02-2007
Messaggi: 1
| Pic 16F876 con display LCD
Salve a tutti, sono nuovo del forum e vi scrivo perchè ho bisogno di una mano... Allora sto cercando di fare un termometro con questo pic, fin'ora ho scritto tutto ciò che riguarda la definizione dell'lcd e la conversione A/D, ora però ho bisogno di un aiuto... Non riesco a capire come far visualizzare un dato che si trova dentro una locazione di memoria... Premetto che comando in picbasic pro... Esempio: io ho dentro la memoria temp il dato che mi rappresenta la temperatura, tipo 25, come faccio a farla visualizzare sul display lcd? Magari anche con scritto temperatura sulla rima riga e sulla seconda 25 seguito da °C... Grazie mille a tutti |
![]() | ![]() |
![]() | #2 (permalink) Top |
User Data registr.: 10-02-2007 Residenza: Perugia
Messaggi: 1
|
Ciao, io avevo preso dei free sample del PIC18F4550 (è usb) ma ancora sto cercando di allenarmi... ho fatto solo in modo di farlo rilevare al PC come semplice termometro con un LM35. Quindi non so ancora come aiutarti, se imparo qualcosa di più mi faccio vivo! Ciao |
![]() | ![]() |
![]() | #3 (permalink) Top |
User Data registr.: 18-02-2007
Messaggi: 5
|
Ciao, mi sono appena iscritto e mi fa piacere poter essere utile. Dunque, progetti con pic e lcd ne ho fatti molti, però ho sempre usato assembler. Comunque provo a spiegare il concetto, non dovresti avere difficoltà a implementare poi le istruzioni. Mi pare di capire che hai già preparato le impostazioni del display. Quindi il grosso è fatto. Per scrivere qualcosa su un display lcd bisogna prima inviargli l'indirizzo della posizione dove vuoi scrivere. Per fare ciò invii con istruzione l'indirizzo della posizione desiderata. Tieni presente che la posizione più a sisnistra della prima riga del display corrisponde all'indirizzo 80h, la posizione più a sinistra della seconda riga corrisponde all'indirizzo C0h. Le posizioni adiacenti verso destra ovviamente avranno indirizzi crescenti. Da tenere presente: -I display con una sola riga sono comunque indirizzato come due righe poste una di seguito all'altra. -I display da 4 righe (fino a 24 caratteri per riga) sono considerati comunque da due righe. La riga 1 prosegue nella riga 3 e la riga 2 prosegue nella riga 4 -I diplay 4 x 40 sono considerati come 2 distinti display da 2 x 40 (hanno 2 pin di enable) Inviata la posizione di partenza, per scrivere qualcosa è sufficiente inviare il valore esasecimale del carattere, della cifra o del simbolo da visualizzare. Se vuoi sapere a che valore corrisponde il carattere che vuoi basta che controlli su una qualunque tabella ascii. Altrimenti in modo più semplice, carichi ila valore desiderato semplicemente racchiudendo il carattere tra virgolette. Ad esempio l'istruzione: MOVLW 'A' carica in W il valore esadecimale 41h, che inviato come dato al display, visualiza proprio il carattere A. I caratteri possono essere inviati uno dopo l'altro, rispettando ovviamente le tempistiche del display. Verrano automaticamente visualizzati uno a fianco all'altro. Va tenuto presente che la memoria di un display può contenere più caratteri di quelli visualizzabili, quindi alla fine di una riga non è automatico il passaggio alla successiva, ma va inviato un nuovo indirizzo. Ora che hai visto come visualizzare i messaggi fissi, resta da visualizzare un valore numerico. Per prima cosa bisogna vedere se il valore che hai a disposizioene è in formato esadecimale o in formato bcd. Presumo che sia in formato esadecimale e quindi devi convertirlo in formato bcd con una apposita ruotine (io l'ho fatta in assembler, se vuoi te la mando). Consiglio, per il formato bcd, di usare un byte per ogni cifra, anche se in teoria con un byte si potrebbero memorizzare due cifre bcd. Per visualizzare poi le varie cifre decimali sul display non dovremo vare altro che prelevarle dalla memoria nell'ordine giusto (prima le decine, poi le unità), sommare a ogni cifra il valore esadecimale 30h (serve per trasformare il valore di un numero nel corrispondente carattere ascii) e inviare il risultato al display, come dato. Spero di essere stato chiaro, buon lavoro! ![]() Ciao! |
![]() | ![]() |
![]() | #4 (permalink) Top |
User Data registr.: 25-07-2004 Residenza: Trieste
Messaggi: 5.670
|
Mi sono avvicinato al pic da poche settimane (conosco altri micro) e ora sto traslando un programma dall'ST6 al PIC. In allegato ti ho messo una traccia di come avrei fatto per il controllo del display. Se ho sbagliato qualche passaggio (mi perdoni il mio maestro) ci risentiamo. Naraj. |
![]() | ![]() |
![]() | #5 (permalink) Top | |
User Data registr.: 09-01-2006
Messaggi: 25
| Citazione:
![]() LCDOUT $fe,1 ------------ cancella il display LCDOUT $fe,$80,"TEMPERATURA" ----------- scrive TEMPERATURA sulla prima riga LCDOUT $fe,$c0, TEMP ----------- scrive il valore contenuto in TEMP sulla seconda riga Ciao, Mimmo | |
![]() | ![]() |
![]() |
Bookmarks |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Display Royal Evo fa le bizze | Claudiopapi | Radiocomandi | 3 | 21 giugno 07 17:10 |
16f876 e display lcd (GDM1602K) | angelole | Circuiti Elettronici | 6 | 15 aprile 07 11:05 |
PIC 16f876 ??????? | manulele84 | Circuiti Elettronici | 9 | 11 agosto 06 13:56 |
voltmetro con display | Melquattro | Circuiti Elettronici | 9 | 21 giugno 06 20:27 |
Display LCD | SoldatoSemplice | Circuiti Elettronici | 5 | 16 maggio 06 00:21 |