Well, sorry for these newbie questions...
The precision for my thermoter is not critical, is just a temperature sensor for security purposes. But I want to keep the code for current and voltage sensing purposes (linear curves), so in these cases I need more precision...
I've read many exemples given... I've modified my code in consequence, I can read the integer part (like 23.00 °C), but not the float part...
Here's my code :
I like to have XX.Y °C (23.2 °C for example).Code:define OSC 20 DEFINE ADC_BITS 8 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3) DEFINE ADC_SAMPLEUS 10 ' Set sampling time in microseconds DEFINE LCD_DREG PORTC 'LCD data port DEFINE LCD_RSREG PORTC 'LCD data port DEFINE LCD_EREG PORTC DEFINE LCD_EBIT 5 DEFINE LCD_BITS 4 'LCD bus size 4 or 8 DEFINE LCD_LINES 2 'Number lines on LCD DEFINE LCD_COMMANDUS 10000'Command delay time in us DEFINE LCD_DATAUS 1000 'Data delay time in us AD_AN1_VALUE VAR WORD B0 VAR WORD B1 VAR WORD B2 VAR WORD B3 VAR WORD TRISA = %11111111 ADCON1 = %10000010 PAUSE 4000 lp: ADCIN 1, AD_AN1_VALUE B0 = AD_AN1_VALUE*129 B1 = B0-8143 B2 = B1/319 PAUSE 100 LCDOUT $fe,1 LCDOUT #AD_AN1_VALUE Lcdout $fe,$c0,"Temp.: ",DEC (B2 DIG 0),DEC (B2 DIG 1),".",DEC (B2 DIG 2),DEC (B2 DIG 3),"°C" goto lp
I know that is a very common problem, but I've spend many hours to try solve this, so...
Example of my calculation :
AD_AN1_VALUE=137
B0=137*129=17673
B1=17673-8143=9530
B2=9530/319=29,874 °C
But here I only get 29,00 °C...





Bookmarks