kodi.sudar
Member level 5
Can any one post the c code for lcd for lpc2138.
Thanks
Thanks
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
LPC213X UART Program
#include <LPC21xx.H>
// 1.16 to 1.24 Data Lines
// 0.28,0.29,0.30 - Register Select,Read/Write,Enable lines
void delay( )
{
unsigned int i;
for(i=0;i<599900;i++);
}
void lcddata(int c)
{
IOCLR1=0x00ff0000;
IOSET0=0x10000000; // rs =1 p0.28
IOCLR0=0x20000000; // rw =0 p0.29
IOSET0=0x40000000; // en=1 p0.30
IOSET1 = c<<16;
delay();
IOCLR0=0x40000000; //en=0 p0.30
}
void lcdcmd(int c)
{
IOCLR1=0x00ff0000;
IOCLR0=0x10000000; // rs =0 p0.28
IOCLR0=0x20000000; // rw =0 p0.29
IOSET0=0x40000000; // en=1 p0.30
IOSET1 = c<<16;
delay();
IOCLR0=0x40000000; //en=0 p0.30
}
void lcdinit()
{
lcdcmd(0x38);
delay();
lcdcmd(0x0e);
delay();
lcdcmd(0x06);
delay();
lcdcmd(0x80);
delay();
}
typedef struct {
unsigned un:16;
unsigned keybrdIn:4;
unsigned keybrdSel:4;
unsigned RS:1;
//unsigned RW:1;
unsigned E:1;
unsigned un1:2;
unsigned LcdData:4;
}PORT;
#define Ioset1 (*(PORT *)0xE0028014)
#define Ioclr1 (*(PORT *)0xE002801C)
#define Iodir1 (*(PORT *)0xE0028018)
#define Iopin1 (*(PORT *)0xE0028010)
void delay()
{
int val=500,cnt=500;
while(cnt--)
{
while(val--);
val=100;
}
}
void delay_ms(unsigned int dtime)
{
long int val=1000;
while(dtime--)
{
while(val--);
val=1000;
}
}
void CMD(int lcd)
{
lcd=lcd>>4;
Ioclr1.LcdData=0xf;
Ioclr1.RS=1;
// Ioclr1.RW=1;
Ioset1.LcdData=lcd;
Ioset1.E=1;
delay();
Ioclr1.E=1;
}
void dat(int lcd)
{
lcd=lcd>>4;
Ioclr1.LcdData=0xf;
Ioset1.RS=1;
// Ioclr1.RW=1;
Ioset1.LcdData=lcd;
Ioset1.E=1;
delay();
Ioclr1.E=1;
}
void lcdchar(char te)
{
dat(te & 0xf0);
dat((te<<4) & 0xf0);
}
void lcdnum(double vl)
{
int j=0,k,tmp;
char buff[10]={0,0,0,0,0,0,0,0,0,0};
tmp=j=(int)vl; //11.256
k=0;
while(j)
{
k++;
buff[k]=(j%10);
j/=10;
}
while(k>=1)
{
lcdchar(buff[k]+'0');
k--;
}
lcdchar('.');
vl=((vl-tmp)*1000);
j=(int)vl;
buff[0]=0;
buff[1]=0;
buff[2]=0;
buff[3]=0;
buff[4]=0;
buff[5]=0;
k=0;
while(j)
{
k++;
buff[k]=(j%10);
j/=10;
}
k=3;
while(k>=1)
{
lcdchar(buff[k]+'0');
k--;
}
}
void lcddat(const char *ptr1)
{
while(*ptr1 != '\0')
lcdchar(*(ptr1++));
}
void lcdcmd(char tt)
{
CMD(tt & 0xf0);
CMD((tt<<4) & 0xf0);
}
void lcdinit()
{
Iodir1.RS=1;
Iodir1.E=1;
Iodir1.LcdData=0xf;
//IOCLR1=0xff000000;
CMD(0X30);
// delay();
CMD(0X30);
// delay();
CMD(0X30);
// delay();
CMD(0X20);
// delay();
lcdcmd(0X28);
// delay();
lcdcmd(0X0c);
// delay();
lcdcmd(0X01);
// delay();
lcdcmd(0X06);
//delay();
}