Вы находитесь на странице: 1из 3

//Program to interface IR sensor using ADC 0804. Set Vref =1.

5v for ADC 0804

#include<reg51.h>

//------------Assigning Control bits for LCD control---------/


#define port P3
#define adc_input P1
#define dataport P0
#define sec 100
sbit rs = port^0; //----Pin0 of port3 is defined as rs pin for lcd control using
this command?
sbit rw = port^1; //----Pin0 of port3 is defined as rw pin for lcd control using
this command---
sbit en = port^2; //----Pin0 of port3 is defined as en pin for lcd control using
this command---
sbit wr= port^3; //----Write Function for writing into ADC----//
sbit rd= port^4; //----Read function for enabling ADC read----//
sbit intr= port^5; //----Interrupt Function which indicates the End of
Conversion----//

int test_final=0 ,shift=0;

void delay(unsigned int msec ) // Time delay function


{
int i ,j ;
for(i=0;i<msec;i++) //-----Nop operation till the loop execution complete
for(j=0; j<1275; j++); //-----Nop operation till the loop execution complete
}

void lcd_cmd(unsigned char item) // Function to send command to LCD


{
dataport = item; //----Sending the command to lcd from Port0
rs= 0; //----RS = Register Select pin, when [rs = 0] means its Command
register
rw=0; //----RW = Read / Write pin, when [rw = 0] means write function
en=1; //----EN = Enable pin, it is use to latch data to lcd when it
has high to low pulse at en pin
delay(1); //----1ms delay
en=0;
return;
}

void lcd_data(unsigned char item) // Function to send data to LCD


{
dataport = item;//----Sending the command to lcd from Port0
rs= 1; //----RS = Register Select pin, when [rs = 1] means its Data
register
rw=0; //----RW = Read / Write pin, when [rw = 0] means write function
en=1; //----EN = Enable pin, it is use to latch data to lcd when it has
high to low pulse at en pin
delay(1); //----1ms delay
en=0;
return;
}

void lcd_data_string(unsigned char *str) // Function to send string to LCD


{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
delay(1);
}
return;
}

void convert()
{
int s;
lcd_cmd(0x81);
delay(2);
lcd_data_string("output:");
s=test_final/100;
test_final=test_final%100;
lcd_cmd(0x8a);
if(s!=0)
lcd_data(s+48);
else
lcd_cmd(0x06);
s=test_final/10;
test_final=test_final%10;
lcd_data(s+48);
lcd_data(test_final+48);
lcd_data(' ');
if(shift>16)
{
lcd_cmd(0xc0+(shift-1));
lcd_data_string(" ");
shift=0;
}
lcd_cmd(0xc0+(shift-1));
lcd_data(' ');
lcd_cmd(0xc0+shift);
lcd_data_string("CALIBRATE IT");
delay(30);
}

void main()
{
adc_input=0xff;
lcd_cmd(0x38); //2 Line, 5X7 Matrix
lcd_cmd(0x0c); //Display On, Cursor Blink
delay(2);
lcd_cmd(0x01); // Clear Screen
delay(2);
lcd_cmd(0x81); // Setting cursor to first position of first line
delay(2);
while(1)
{
shift++;
delay(1);
rd=1;
wr=0;
delay(1);
wr=1;
while(intr==1);
rd=0;
test_final=adc_input;
delay(1);
intr=1;
convert();
}
}

Вам также может понравиться