Professional Documents
Culture Documents
Underground
Underground
2 SOURCE CODE
#include<at89x52.h>
#define LCDDATA P2
#define ADCDATA P1
#define MINIMUM 5
sbit
sbit
sbit
sbit
BUSY
RS =
RW =
EN =
= P2^7;
P2^0;
P2^1;
P2^2;
{
BUSY = 1;
RS = 0;
RW = 1;
while(BUSY)
{
EN = 0;
EN = 1;
}
// RS =0 FOR COMMAND
// RW = 1 FOR READING
// ENABL EIS LOW
// ENABLE IS HIGH
}
/*Function to Send Command to LCD*/
void LCDCMD(unsigned char CMD)
{
BusyCheck();
LCDDATA = CMD;
RS = 0;
// RS =0 FOR COMMAND
RW = 0;
// RW = 0 FOR WRITING
EN = 1;
// ENABLE IS HIGH
EN = 0;
// ENABL EIS LOW
}
/*Function to Send Data to LCD*/
void LCDData(unsigned char Data)
{
BusyCheck();
LCDDATA = Data;
RS = 1;
// RS =1 FOR DATA
RW = 0;
// RW = 0 FOR WRITING
EN = 1;
// ENABLE IS HIGH
EN = 0;
// ENABL EIS LOW
}
void LCDString(unsigned char *str)
{
while(*str)
{
LCDData(*str);
str++;
}
}
void Init_T0()
{
TMOD = 0x01;
TH0 = 0x4B;
TL0 = 0xFF;
ET0 = 1;
EA = 1;
TR0 = 1;
}
// SET THE
//
//
//
//
//
LCDCMD(0x38);
/*Command to shift the cursor to next position when Data is send in LCD
*/
LCDCMD(0x06);
/*Command to ON Display, OFF the Cursor in LCD */
LCDCMD(0x0C);
/*Return cursor home */
LCDCMD(0x02);
}
void Display(unsigned char Data)
{
switch(Data)
{
case 170:
LCDString("1KM");
break;
case 204:
LCDString("2KM");
break;
case 219:
LCDString("3KM");
break;
case 227:
LCDString("4KM");
break;
case 255:
LCDString("NF ");
break;
default:
break;
}
}
void main()
{
P0 = 0x0F;
Buff[0] = 0xFF;
Init_T0();
Init_LCD();
while(1)
{
P0 = 0x01;
LCDCMD(0x80);
LCDString("R: ");
Display(Read_ADC());
LCDCMD(0x87);
LCDString("B: ");
Display(Read_ADC());
P0 = 0x02;
LCDCMD(0xC0);
LCDString("Y: ");
Display(Read_ADC());
P0 = 0x04;
LCDCMD(0xC7);
LCDString("N: ");
Display(Read_ADC());
}
}