Building Digital thermometer using ADC in ARM7 (lpc2148)

            //Main Program
#include<lpc214x.h>
#include"lcd.h"
void hex(unsigned int var);
int main()
{
int temp, adc_data;
PINSEL1|=(0<<25)|(1<<24);
delay();
while(1)
{
IODIR0|=D4|D5|D6|D7;
IODIR0|=RS|E;
IOCLR0|=D4|D5|D6|D7;
IOCLR0|=RS|E;
lcd_init();
AD0CR=0x01200302;
while(!(AD0GDR&0x80000000));
temp=AD0GDR;
adc_data=((temp>>6)&(0x3FF));
lcd_string("Temp is ");
hex(adc_data);
lcd_string("mV");
delay();
}
}
void hex(unsigned int var)
{
unsigned char i,d[4];
for(i=0;i<4;i++)
{
d[i]=var%10;
var=var/10;
}
for(i=0;i<4;i++)
{
lcd_conv(d[3-i]+0x30);
}
}

  \\lcd library file//
#include<lpc214x.h>
#define RS (1<<16)
#define E (1<<17)
#define D4 (1<<10)
#define D5 (1<<11)
#define D6 (1<<12)
#define D7 (1<<13)
void delay(void);
void lcd_init(void);
void lcd_cmd(int );
void lcd_string(char *str);
void lcd_conv(char );
void delay(void)
{
long t=100000;
while(t--);
}
void lcd_cmd(int cmd)
{
IOCLR0|=RS;
lcd_conv(cmd);
IOCLR0|=RS;
delay();
}
void lcd_init(void)
{
IOCLR0|=D4|D5|D6|D7;
IOCLR0|=RS|E;
lcd_cmd(0x02);
lcd_cmd(0x28);
lcd_cmd(0x0E);
lcd_cmd(0x01);
lcd_cmd(0x06);
}
void lcd_string(char *str)
{
while(*str!=0)
{
IOSET0|=RS;
lcd_conv(*str);
str++;
delay();
}
}
void lcd_conv(char data)
{
int recv;
IOCLR0|=D4|D5|D6|D7;
recv=data>>4;
IOSET0=recv<<10;
IOSET0|=E;
delay();
IOCLR0|=E;
delay();
IOCLR0|=D4|D5|D6|D7;
recv=data;
IOSET0|=(recv<<10);
IOSET0|=E;
delay();
IOCLR0|=E;
IOCLR0|=D4|D5|D6|D7;
}


Comments

Post a Comment

Popular posts from this blog

Password Based Locking System