#include "lpc177x_8x_gpio.h"
#include <stdio.h>
//DB4=PORT1.11 DB5=PORT1.12 DB6=PORT1.13 DB7=PORT1.14
#define PORT 1 // Name Of Port
#define E (1<<15) //PORT1.15
#define RW (1<<16) //PORT1.16
#define RS (1<<17) //PORT1.17
#define d1 300
#define d2 50000
//-----------------------------
void delay(int delay){
long int i;
for(i=0;i<=delay;i++) ;
}
//-----------------------------
void lcd_init_4bit(void){
GPIO_ClearValue(PORT, RS); // clear for command
GPIO_ClearValue(PORT, RW);
/////////////////////////////
GPIO_SetValue (PORT, (0x03)<< 11); //0x03
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x03 << 11); //0x03
GPIO_SetValue (PORT, (0x03)<< 11); //0x03
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x03 << 11); //0x03
GPIO_SetValue (PORT, (0x02)<< 11); //0x02
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x02 << 11); //0x02
/////////////////////////////
GPIO_SetValue (PORT, (0x03)<< 11); //0x03
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x03 << 11); //0x03
GPIO_SetValue (PORT, (0x03)<< 11); //0x03
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x03 << 11); //0x03
GPIO_SetValue (PORT, (0x02)<< 11); //0x02
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, 0x02 << 11); //0x02
}
//-----------------------------
void lcd_putchar( char CHAR){
GPIO_SetValue (PORT, RS); // set for character
GPIO_ClearValue (PORT, RW);
GPIO_SetValue (PORT, ((CHAR&0XF0)>>4)<< 11);
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, ((CHAR&0XF0)>>4)<< 11);
GPIO_SetValue (PORT, (CHAR&0X0F)<< 11);
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, (CHAR&0X0F)<< 11);
}
//-----------------------------
void command(unsigned char CHAR){
GPIO_ClearValue (PORT, RS); // clear for command
GPIO_ClearValue (PORT, RW);
GPIO_SetValue (PORT, ((CHAR&0XF0)>>4)<< 11);
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, ((CHAR&0XF0)>>4)<< 11);
GPIO_SetValue (PORT, (CHAR&0X0F)<< 11);
GPIO_SetValue (PORT, E);
delay(d1);
GPIO_ClearValue(PORT, E);
delay(d2);
GPIO_ClearValue(PORT, (CHAR&0X0F)<< 11);
}
//-----------------------------
void lcd_putsf( char *data){
long int i;
for(i=0;data[i];i++) lcd_putchar(data[i]);
}
//--------------**********************---------------
//--------------**********************---------------
int main(void){
unsigned int s;
char p[30];
GPIO_SetDir(PORT, ((1<<11)|(1<<12)|(1<<13)|(1<<14)|(1<<15)|(1<<16)|( 1<<17)), 1);
GPIO_ClearValue(PORT, ((1<<11)|(1<<12)|(1<<13)|(1<<14)|(1<<15)|(1<<16)|( 1<<17)));
//LCD_4 BIT MODE
lcd_init_4bit();
//MAT 28
command(0x28);
//LCD CLEAR
command(0x01);
//ON DISPLAY & CURSOR-OFF
command(0x0C);
//RIGHT LCD
command(0x06);
//X_Y CONFIG X=0;Y=0
command(0x80);
//LCD TEST/LPC2368
lcd_putsf("Test of LCD");
//X_Y CONFIG X=0;Y=1
command(0xC0);
//SEND MEHDI GORJI TO LCD
lcd_putsf("First LCD try");
while(1){
delay(50000000);
command(0x01); //LCD CLEAR
command(0x80); //X_Y CONFIG satr 1
lcd_putsf(" 1234567890 ");
delay(50000000);
for (s=0;s<=1000000;s++){
sprintf(p," %i",s);
command(0x01); //LCD CLEAR
lcd_putsf(p);
delay(2000000);
}
}
}
//---------------------------------------------------------------
//---------------------------------------------------------------