Hesam Kamalan
New Member
Hi,
in my project i use MikroC as compiler, PIC16F877A. i connected a NTC to AN0 of this microcontroller. my problem is, i don't know how can i work with NTC.
i worked with LM32 and i know readding temperature, but i don't know how can i read NTC output.
in ISIS i connect one pin of NTC to VCC and second pin to micro. but on LCD i have 5v for all temperatures.
my code is:
in my project i use MikroC as compiler, PIC16F877A. i connected a NTC to AN0 of this microcontroller. my problem is, i don't know how can i work with NTC.
i worked with LM32 and i know readding temperature, but i don't know how can i read NTC output.
in ISIS i connect one pin of NTC to VCC and second pin to micro. but on LCD i have 5v for all temperatures.
my code is:
Code:
unsigned char ch;
unsigned int adc_rd;
char *text;
long tlong;
void main() {
INTCON = 0; // disable all interrupts
Lcd_Init(&portd); // Dataport=PortD, En=d.3, Rs=d.2
LCD_Cmd(LCD_CURSOR_OFF); // send command to LCD (cursor off)
LCD_Cmd(LCD_CLEAR); // send command to LCD (clear LCD)
ADCON1 = 0x82; // configure VDD as Vref, and analog channels
TRISA = 0xFF; // designate PORTA as input
Delay_ms(2000);
text = "Temp: ";
while (1) {
adc_rd = ADC_read(0); // get ADC value from 2nd channel
LCD_Out(2,1,text); // print string a on LCD, 2nd row, 1st column
tlong = (long)adc_rd * 5000; // covert adc reading to milivolts
tlong = tlong / 1023; // 0..1023 -> 0-5000mV
ch = tlong / 1000; // extract volts digit
LCD_Chr(2,9,48+ch); // write ASCII digit at 2nd row, 9th column
LCD_Chr_CP('.');
ch = (tlong / 100) % 10; // extract 0.1 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
ch = (tlong / 10) % 10; // extract 0.01 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
ch = tlong % 10; // extract 0.001 volts digit
LCD_Chr_CP(48+ch); // write ASCII digit at cursor point
LCD_Chr_CP('V');
Delay_ms(1);
}
}//~!