Ciao, a tutti sto cercando di aggiungere la funzione termometro al mio orologio digitale...vorrei che avesse una risoluzione di 0,1°C e che sia in grado di misurare da 0°C a 50°C
il sensore con precisione è LM35DZ
ecco come vorrei impostare l'ADC :
-Single ended mode
-10 bit resolution ( volevo farlo ad 8 bit per rendere più semplice creare l'algoritmo ma non sono riuscito ad ottenere tale risoluzione)
-Vref=internal reference (2.56V)
-Blocco di condizionamento del segnale, oamp(ua741) in configurazione non invertente con GAIN=5
Fino ad ora ho solo letto il datasheet sull'ADC ma non ho messo mano a nulla, ho già la routine per visualizzare un possibile risultato su 4 display 7-seg, quello che devo fare ora è determinare un algoritmo in ASSEMBLY che mi "converta" il valore convertito dall'ADC (ADCH, ADCL) in tre registri
"DecineTemp" "UnitaTemp" "PrimoDecimaleTemp", però ho un pò problemi a gestire il risultato dell'adc essendo su due registri...
L'idea di base, se avessi avuto un solo registro, sarebbe stata quella di creare dei loop
FindTens: , FindOnes: , FindDecimal:
sottraendo al valore letto dall'ADC, il valore corrispondente in esadecimale a 10°C, ogni volta incrementare una variabile, in questo caso decine e continuare il loop facendo un controllo sul carry, quando il carryflag è 1, saltare al loop TrovaUnità con il medesimo procedimento, ovviamente con tutte le accortezze da prendere...
Solo che il fatto di avere due registri mi impalla...