top of page
Writer's pictureSanskruti Ashtikar

Digital Thermometer Using 8051 Microcontroller

Introduction


A digital thermometer is an essential tool for measuring temperature with high precision and ease. Utilizing the 8051 microcontroller, we can design a digital thermometer that reads the temperature from a sensor and displays it on an LCD. This project involves interfacing a temperature sensor (such as the LM35), an ADC (Analog to Digital Converter), and an LCD with the 8051 microcontroller.


Components Required


  • 8051 Microcontroller (e.g., AT89S52)

  • LM35 Temperature Sensor

  • ADC0804 (8-bit ADC)

  • 16x2 LCD Display

  • Resistors (10kΩ, 1kΩ)

  • Capacitors (33pF, 100μF)

  • Crystal Oscillator (11.0592 MHz)

  • Breadboard and Connecting Wires

  • Power Supply (5V)


Circuit Diagram


The circuit consists of the LM35 sensor connected to the ADC0804, which in turn interfaces with the 8051 microcontroller. The LCD display is used to show the temperature readings.


+5V ----- +5V
          |
          |
         LM35
         +---+
   +5V --|VCC| 
         |    |
         |OUT |------- AIN (ADC0804)
         |    |
   GND --|GND | 
         +---+

Pin Connections


  • LM35 Sensor:

  • VCC to +5V

  • GND to Ground

  • Output to Vin+ of ADC0804

  • ADC0804:

  • Vin+ to LM35 output

  • VCC to +5V

  • GND to Ground

  • CS to Ground

  • RD to P2.0 of 8051

  • WR to P2.1 of 8051

  • INTR to P2.2 of 8051

  • D0-D7 to P1.0-P1.7 of 8051

  • Vref/2 to 2.5V (using a voltage divider)

  • LCD:

  • RS to P3.6 of 8051

  • RW to Ground

  • E to P3.7 of 8051

  • D4-D7 to P2.4-P2.7 of 8051


Software Implementation


The code is written in C using Keil uVision IDE. It involves initializing the ADC and LCD, reading the analog value from the sensor, converting it to a digital value using the ADC, and then displaying it on the LCD.


#include <reg51.h>
#include "lcd.h"
sbit RD = P2^0; // Read signal for ADC
sbit WR = P2^1; // Write signal for ADC
sbit INTR = P2^2; // Interrupt signal from ADC
void delay(unsigned int count) {
    int i,j;
    for(i=0;i<count;i++)
        for(j=0;j<1275;j++);
}
void adc_init(void) {
    WR = 0; // Start conversion
    delay(1);
    WR = 1; // End conversion
}
unsigned char adc_read(void) {
    unsigned char value;
    while(INTR); // Wait for conversion to complete
    RD = 0; // Read the value
    value = P1; // Get the digital value
    delay(1);
    RD = 1;
    return value;
}
void main() {
    unsigned char temp;
    float temperature;
    
    lcd_init(); // Initialize LCD
    adc_init(); // Initialize ADC
    
    while(1) {
        temp = adc_read(); // Read digital value from ADC
        temperature = (temp * 5.0 / 255.0) * 100; // Convert to temperature
        
        lcd_cmd(0x80); // Move cursor to first line
        lcd_write_string("Temp: ");
        
        lcd_cmd(0xC0); // Move cursor to second line
        lcd_write_number(temperature); // Display temperature value
        
        delay(1000); // Update every second
    }
}

Explanation


  1. Initialization:

  2. LCD Initialization: The lcd_init() function sets up the LCD.

  3. ADC Initialization: The adc_init() function prepares the ADC for conversion.

  4. Reading Temperature:

  5. The adc_read() function reads the analog voltage from the LM35 sensor, converts it to a digital value using the ADC0804, and returns it.

  6. Temperature Conversion:

  7. The digital value is converted to temperature using the formula: temperature = (value 5.0 / 255.0) 100, assuming a 5V reference voltage for the ADC.

  8. Displaying Temperature:

  9. The temperature is displayed on the LCD using lcd_write_string() and lcd_write_number() functions.


Conclusion


This project demonstrates the use of the 8051 microcontroller to create a digital thermometer. The system is capable of reading temperature data from the LM35 sensor, converting it to a digital format using the ADC0804, and displaying it on an LCD. This project is a great way to learn about sensor interfacing, ADCs, and LCDs with microcontrollers.



Want us to guide you through your project or make the project for you ?






Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 


0 views0 comments

Related Posts

See All

Comentaris


bottom of page