Code for the fuel monitoring System:
Here I am using the 8051 microcontroller and ADC0804 for the fuel monitoring system. If you want a description of this project. then please write in the comment box.
#include <REGX51.H> //Led #define LED P3 #define ON 1 #define OFF 0 sbit LED0=P3^0; sbit LED1=P3^1; sbit LED2=P3^2; sbit LED3=P3^3; sbit LED4=P3^4; // Adc #define ADC_DATA P0 sbit ADC_READ=P1^0; sbit ADC_WRITE=P1^1; sbit ADC_INTR=P1^2; sbit PETROL=P1^3; sbit BUZZER=P1^5; #define HIGH 1 #define LOW 0 // Lcd #define LCD P2 sbit RS =P1^6; sbit EN =P1^7; //Prototype for ADC //convert adc data unsigned char adcConvert(); void IndicateAndDisplayFuelStatus(unsigned char adcData); //Prototype for Lcd void lcdCommand(const char command); void displayOnLcd(const char *pszMessage); void lcdStart(void); void delay(unsigned int); /*Function to write command on Lcd*/ void lcdCommand(const unsigned char command) { LCD = command; RS = 0; EN = 1; delay(300); EN=0; } void lcdData(const unsigned char dataPrint) { LCD = dataPrint; RS=1; EN=1; delay(400); EN=0; } /*Function to Display string on Lcd*/ void displayOnLcd(const char *pData) { while(*pData) { lcdData(*pData); ++pData; delay(300); } } /*Function to Provide delay*/ void delay(unsigned int time) { unsigned int i; for(i=0; i<=time; i++); } /*Initialize the LCD*/ void lcdStart(void) { delay(500); lcdCommand(0x80); delay(500); lcdCommand(0x0C); } unsigned char adcConvert() { unsigned char adcData = 0x00; ADC_INTR = HIGH; ADC_READ = HIGH; ADC_WRITE = HIGH; //Conversion Start ADC_WRITE = LOW; delay(50); ADC_WRITE = HIGH; while(ADC_INTR==HIGH) { //empty } delay(50); //Read Adc data ADC_READ = LOW; adcData = ADC_DATA; return(adcData); } /*Analog float Digital output voltage value of float varies according to this, +5V 0XFF +4V 0XCC voltage lavel of digital will be change +3V 0X99 +2V 0X66 Do=vcc*256/(V float) +1V 0X33 0V 0X00 */ void IndicateAndDisplayFuelStatus(unsigned char adcData) { if((adcData<=0xff) && (adcData>=0xCC)) { displayOnLcd("FULL"); LED=0xff; BUZZER=OFF; PETROL=OFF; } else if((adcData<=0xCC) && (adcData>=0x99)) { displayOnLcd(" 75%"); LED=0xff; LED0=OFF; BUZZER=OFF; PETROL=OFF; } else if((adcData<=0x99) && (adcData>=0x66)) { displayOnLcd(" 50%"); LED=0xff; LED0=OFF; LED1=OFF; BUZZER=OFF; PETROL=OFF; } else if((adcData<=0x66) && (adcData>=0x33)) { displayOnLcd(" 25%"); LED=0xff; LED0=OFF; LED1=OFF; LED2=OFF; BUZZER=OFF; PETROL=OFF; } else { displayOnLcd(" LOW"); LED=0xff; LED0=OFF; LED1=OFF; LED2=OFF; LED3=OFF; if(adcData==0x00) // this condition will switch the relay to PETROL mode { LED4=OFF; BUZZER=ON; PETROL=ON; } } } int main() { unsigned char adcData = 0x00; while(1) { lcdStart(); adcData = adcConvert(); IndicateAndDisplayFuelStatus(adcData); } }
Recommended Post
- Interfacing ADC0804 with 8051 microcontroller.
- Led blinking program in c for 8051.
- Interfacing of switch and led using the 8051
- Interfacing of Relay with 8051 microcontroller
- Moving message display on LCD using 8051
- LCD 4-bit mode c code for 8051.
- Create LCD custom characters for 16×2 alphanumeric LCD
- Interfacing of keypad with 8051
- Electronic digital lock using the 8051
- Interfacing of EEPROM with 8051 microcontrollers using I2C
- Embedded c interview questions.
- 8051 Microcontroller Pin Diagram and Pin Description.