#include <lpc214x.h>
#include <stdio.h>

char charArray[20];

void delay(unsigned int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<1275;k++);
}

void lcd_cmd(unsigned char c)
{
IOCLR0 = 0x00100800;
IOCLR1 = 0x00FF0000;
IOSET1 = c << 16;
IOSET0 = 0x00000400;
delay(2);
IOCLR0 = 0x00000400;
delay(2);
}

void lcd_dat(unsigned char d)
{
IOSET0 = 0x00000800;
IOCLR0 = 0x00100000;
IOCLR1 = 0x00FF0000;
IOSET1 = d << 16;
IOSET0 = 0x00000400;
delay(2);
IOCLR0 = 0x00000400;
delay(2);
}

void lcd_str(char *s)
{
while(*s)
lcd_dat(*s++);
}

int main()
{
unsigned int adc, mv;
PINSEL0 = 0;
PINSEL2 = 0;
PINSEL1 = (1U << 24);
AD0CR = (1U << 1) | (3U << 8) | (1U << 21);

IODIR0 = 0x00100C00;
IODIR1 = 0x00FF0000;

delay(20);
lcd_cmd(0x38);
lcd_cmd(0x0C);
lcd_cmd(0x06);
lcd_cmd(0x01);
delay(20);

while(1)
{
AD0CR |= (1U << 24);
while((AD0GDR & (1U << 31)) == 0);
adc = (AD0GDR >> 6) & 0x3FF;
mv = (adc * 3300) / 1023;

sprintf(charArray, "ADC = %4d", adc);
lcd_cmd(0x80);
lcd_str(charArray);

sprintf(charArray, "V   = %d.%03dV", mv/1000, mv%1000);
lcd_cmd(0xC0);
lcd_str(charArray);

delay(300);
}
}
