C code for lcd lpc2138

Status
Not open for further replies.

kodi.sudar

Member level 5
Joined
Dec 21, 2009
Messages
92
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
india
Activity points
1,849
Can any one post the c code for lcd for lpc2138.

Thanks
 

LPC213X UART Program
 

Attachments

  • UART.rar
    10.8 KB · Views: 51

LPC213X UART Program

The OP is requesting source code for an LCD, for not a UART.



A previous thread:

https://www.edaboard.com/threads/180727/

I have also attached a 4-bit example.

An example code, although you may have to tweak the delay() routine:

Code:
#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();
}
 

Attachments

  • 24646053-interfacing-lcd-in-4bit-mode-with-lpc2138.pdf
    13.1 KB · Views: 73
sorry for the mistake...

Code:
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();
}
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…