Hello Readers, welcome to my Blog BloggerTipsTricks. com - A Blog For Bloggers By A Blogger. I'm Arun, an entrepreneur Blogger from India.

LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display

10665
Mark as Favourite

LM35 series is a low cost and precision Integrated Circuit Temperature Sensor whose output voltage is proportional to Centigrade temperature scale. Thus LM35 has an advantage over other temperature sensors calibrated in Kelvin as the users don’t require subtraction of large constant voltage to obtain the required Centigrade temperature. It doesn’t requires any external calibration. It is produced by National Semiconductor and can operate over a -55 °C to 150 °C temperature range. Its output is linearly proportional to Centigrade Temperature Scale and it output changes by 10 mV per °C.

In this project, we will learn How to interface a LM35 temperature sensor with AVR ATmega32 microcontroller and LCD display. Here, we will measure the temperature of the surrounding or any other material to which the LM35 temperature sensor is connected for its temperature measurement and we will display the temperature value in degree centigrade in a 16X2 alphanumeric LCD. But, the output of LM35 temperature sensor is analog in nature and microcontroller cannot process the analog signal directly. So, first it will convert the analog output of LM35 temperature sensor to digital values using its analog to digital converter and then it process the digital value to convert the digital value in degree centigrade value. Then the microcontroller will display the temperature in degree centigrade in the 16X2 alphanumeric LCD. Now, lit a match stick or lighter near the LM35 temperature sensor and see the changes in its output value in the 16X2 alphanumeric LCD.

Softwares Required

Hardwares Required

Name / Unit Price Quantity Total Price
AVR Trainer Board-100 with ATmega32
Rs. 730.00
1pc
Rs.730.00
AVR USB Programmer
Rs. 350.00
1pc
Rs.350.00
12V, 1A DC SMPS Adaptor
Rs. 130.00
1pc
Rs.130.00
LM35 Temperature Sensor
Rs. 70.00
1pc
Rs.70.00
RG1602A 16X2 Alphanumeric LCD Green
Rs. 150.00
1pc
Rs.150.00
1 to 1 Connector-Female to Female
Rs. 4.00
6pc
Rs.24.00
10 to 10 FRC Female to Female Connector
Rs. 15.00
2pc
Rs.30.00
TOTAL Rs.1484.00

Circuit Diagram

C Program

Fullscreen
 

//**************************************************************//
//System Clock                       :2MHz
//Software                               :AVR Studio 4
//LCD Interfacing                   :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define           F_CPU           1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define           LCD_DATA_PORT           PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define           LCD_CONT_PORT           PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define           LCD_RS           PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define           LCD_RW           PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define           LCD_EN           PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

#include<avr/adc.h>
/*Includes adc.h header file which defines different functions for Analog to Digital Converter. ADC header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

int adc_output,temperature;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

adc_init();
/*ADC initialization*/

lcd_string_write(“ABLab Solutions”);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(“www.ablab.in”);
/*String display in 2nd row of LCD*/

_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
/*Display stays for 2 second*/

lcd_command_write(0x01);
/*Clear screen*/

lcd_string_write(“Temperature:”);
/*String display in 1st row of LCD*/

/*Start of infinite loop*/
while(1)
{

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

adc_output=read_adc_channel(0);
/*Reading temperature sensor value*/

temperature=adc_output/2;
/*Temperature value in degree centrigrade*/

lcd_number_write(temperature,10);
/*Temperature display in 2nd row of LCD*/

lcd_string_write(“`C   “);
/*String display in 2nd row of LCD*/

}

}
/*End of Program*/

  

//**************************************************************//
//System Clock                       :2MHz
//Software                               :AVR Studio 4
//LCD Interfacing                   :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define           F_CPU           1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define           LCD_DATA_PORT           PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define           LCD_CONT_PORT           PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define           LCD_RS           PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define           LCD_RW           PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define           LCD_EN           PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

#include<avr/adc.h>
/*Includes adc.h header file which defines different functions for Analog to Digital Converter. ADC header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

int adc_output,temperature;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

adc_init();
/*ADC initialization*/

lcd_string_write(“ABLab Solutions”);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(“www.ablab.in”);
/*String display in 2nd row of LCD*/

_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
/*Display stays for 2 second*/

lcd_command_write(0x01);
/*Clear screen*/

lcd_string_write(“Temperature:”);
/*String display in 1st row of LCD*/

/*Start of infinite loop*/
while(1)
{

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

adc_output=read_adc_channel(0);
/*Reading temperature sensor value*/

temperature=adc_output/2;
/*Temperature value in degree centrigrade*/

lcd_number_write(temperature,10);
/*Temperature display in 2nd row of LCD*/

lcd_string_write(“`C   “);
/*String display in 2nd row of LCD*/

}

}
/*End of Program*/

Connection Guide

The step-by-step connection guide for LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display is as follows:

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 10 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 10 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 10 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 10 )

  • Connect the Vs, Vout and GND pins of LM35 temperature sensor with VCC, PA0 and GND pins of PortA header of AVR Trainer Board-100 with a 1 to 1 Connector.

    Steps - 5 ( 0f 10 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 6 ( 0f 10 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-AF Cable.

    Steps - 7 ( 0f 10 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 8 ( 0f 10 )

  • Download LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 9 ( 0f 10 )

  • Lit a match stick or lighter near the sensor and see the output.

    Steps - 10 ( 0f 10 )

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 10 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 10 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 10 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 10 )

  • Connect the Vs, Vout and GND pins of LM35 temperature sensor with VCC, PA0 and GND pins of PortA header of AVR Trainer Board-100 with a 1 to 1 Connector.

    Steps - 5 ( 0f 10 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 6 ( 0f 10 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-AF Cable.

    Steps - 7 ( 0f 10 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 8 ( 0f 10 )

  • Download LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 9 ( 0f 10 )

  • Lit a match stick or lighter near the sensor and see the output.

    Steps - 10 ( 0f 10 )

Downloads

LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display C File
  • 77 downloads
  • 4 Kb
LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display Circuit Diagram
  • 58 downloads
  • 198 Kb
LM35 Temperature Sensor Interfacing with ATmega32 and LCD Display Hex File
  • 64 downloads
  • 2 Kb
Alphanumeric LCD Header File v1.0
  • 1085 downloads
  • 1 Kb
ADC Header File v1.0
  • 717 downloads
  • 2 Kb

Comments