Pagina 1 di 2
Visualizzare numero con la virgola su display 7 segmenti PIC

Inviato:
2 lug 2014, 11:52
da nicolas97
Salve avrei bisogno di visualizzare su 4 display a 7 segmenti un numero con la virgola per esempio 12,34 il dato viene elaborato dal PIC tramite una variabile di tipo int e vorrei visualizzare il valore contenuto nella variabile sui 4 display sapete come aiutarmi? grazie mille
Nicolas
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 12:18
da yustel
Si può fare in tanti modi, dipende molto dall'hardware e quindi dal PIC che stai utilizzando. In linea di massima devi convertire il numero in formato BCD per andare poi a pilotare i display tramite le/la porte/porta di uscita, in generale passando per un driver se il tuo PIC non riesce a pilotarlo direttamente.
Se hai quattro porte libere direi che la cosa è semplice, fai l'output delle quattro cifre direttamente una per porta, se invece hai una sola porta disponibile (o vuoi risparmiare) potresti pensare di mandare le quattro cifre in modo sequenziale e attivare uno per volta i display.
Tra l'altro... stai tenendo un numero in virgola su una variabile intera???
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 12:25
da Paolino
Disponi già dell'hardware? Oppure hai almeno lo schema elettrico?
Ciao.
Paolo.
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 12:51
da nicolas97
Allora mi sono sbagliato a scrivere il dato è in una variabile di tipo long, il PIC l'ho già ed è montato su breadboard per testare il circuito i display sono gestiti dal PIC tramite multiplexing dei display solo che se si tratta di visualizzare sui display numeri interi ne sono capace e non c'è problema, mentre in questo caso devo visualizzare un dato con due cifre decimali e non so estrapolare quelle due cifre per farle visualizzare sui display.. Sapete come estrapolare quelle due cifre in C?
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 13:03
da yustel
L'idea più semplcie che mi viene è la seguente, prendiamo

generico di cifre

:

e.g.

Estraggo la prima cifra:

e.g

A questo punto C1 è nota, quindi estraggo la seconda:

e.g.


e.g.


penso tu riesca a trovarlo da solo

In alternativa potresti convertire il numero in una stringa (meglio come vettore di char) e quindi estrarre i singoli caratteri e riconvertirli in numero decimale.
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 13:29
da Paolino
Mmh, non capisco una cosa: hai un dato long che sai già che dovrà avere due cifre decimali? Altrimenti il tuo dato, se fosse già decimale, non è long, ma float.
Paolo.
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 14:18
da nicolas97
Si forse hai ragione forse è meglio una variabile float appena arrivo a casa ci guardo e cerco di mettere in atto il consiglio dato!! Grazie per le risposte!!
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 14:22
da Paolino
Ehm, no. Non hai capito la mia domanda (e non hai nemmeno risposto).
Occhio che usare i float su un microcontrollore non è il massimo. Lo si fa, ma se puoi evitarlo...
Paolo.
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 14:30
da nicolas97
Allora io converto con adc un valore di tensione in ingresso al PIC, il risultato della conversione è in una variabile float perché siccome il convertitore è a 10 bit in un char non ci sta, il valore ottenuto della conversione lo moltiplico per 5 e divido per 1024 per ottenere i millivolt in ingresso al PIC, successivamente moltiplico per 10 i millivolt quindi il risultato ottenuto è con la virgola e ho deciso io di utilizzare solo le due cifre decimali e vorrei visualizzare su i display oltre alla decina e l'unità del valore anche i due decimali dopo la virgola del valore della variabile. Non so se mi sono spiegato sufficientemente
Re: Visualizzare numero con la virgola su display 7 segmenti

Inviato:
2 lug 2014, 15:02
da yustel
nicolas97 ha scritto:Allora io converto con adc un valore di tensione in ingresso al PIC, il risultato della conversione è in una variabile float perché siccome il convertitore è a 10 bit in un char non ci sta
Non ho capito, perché è un float? Cosa centra il fatto che è codificato su 10 bit con il float? Che PIC usi?