Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

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: 49

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: 68
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

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top