This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interfacing Character lcd to the Hawkboard

Other Parts Discussed in Thread: OMAPL138

HI All,

I am working with interfacing character lcd to hawkboard.

I have Interfaced HD4478 to the OMAPL138 - Hawkboard 

and I am trying to program that LCD without using on chip controller using gpio.

here are the details:

connected DB0-DB7 of LCD to GPIO bank 7 pin8-15

connected RS to gpio bank 8 pin 8

connected R/W to gpio bank 8 pin 9

connected enable to gpio bank  8 pin 10

I am using ccs 4.2.3

runnng via jtag as dsp executable and am trying to display 'A' .please help me solve the issue..

here is the program follows:

#include <evmomapl138.h>
#include <evmomapl138_gpio.h>

void delay(unsigned int msec) // Function to provide time delay in msec.
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<12750;j++);
}

/*
* main.c
*/
void main(void)
{
//uint8_t gpio_val;
uint32_t i;
delay(10);
EVMOMAPL138_lpscTransition(PSC1, DOMAIN0, LPSC_LCDC, PSC_ENABLE);


EVMOMAPL138_pinmuxConfig(16, 0xFFFFFF00, 0x88888800);
EVMOMAPL138_pinmuxConfig(17, 0x000000FF, 0x00000088);
EVMOMAPL138_pinmuxConfig(18, 0xFF000000, 0x80000000);
EVMOMAPL138_pinmuxConfig(19, 0x0F0000FF, 0x00000088);



GPIO_setDir(GPIO_BANK8, GPIO_PIN8, GPIO_OUTPUT); // C/D=0/1
GPIO_setDir(GPIO_BANK8, GPIO_PIN9, GPIO_OUTPUT); // WRITE=0
GPIO_setDir(GPIO_BANK8, GPIO_PIN10, GPIO_OUTPUT);// CE =0

GPIO_setDir(GPIO_BANK7, GPIO_PIN15, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN14, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN13, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN12, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN11, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN10, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN9, GPIO_OUTPUT);
GPIO_setDir(GPIO_BANK7, GPIO_PIN8, GPIO_OUTPUT);

delay(10);
//PLACE DATA/COMMAND
//0X38
GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_LOW);
//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_LOW); //C=0
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0

////USTIMER_delay(1000); //DELAY 1MS
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH); //EN HIGH
delay(1);
//USTIMER_delay(1000); //DELAY 1MS
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW); //LOW


delay(100);//USTIMER_delay(100000);//GIVE 100MS DELAY BEFORE NEXT COMMAND
//0X0C
GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_LOW);

//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_LOW); //C=0
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0
//USTIMER_delay(1000); //DELAY 1MS
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH);//EN HIGH
delay(1);
//USTIMER_delay(1000); //DELAY 1MS
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//LOW


delay(100);//USTIMER_delay(100000);//GIVE 100MS DELAY BEFORE NEXT COMMAND
//0X06
GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_LOW);

//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_LOW); //C=0
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0
//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH);//EN HIGH
delay(1);//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//LOW


delay(100);//USTIMER_delay(100000);//GIVE 100MS DELAY BEFORE NEXT COMMAND
//0X01
GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_LOW);

//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_LOW); //C=0
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0
//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH);//EN HIGH
delay(1);//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//LOW



delay(100);//USTIMER_delay(100000);//GIVE 100MS DELAY BEFORE NEXT COMMAND
//0X80
GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_HIGH);

//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_LOW); //C=0
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0
//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH);//EN HIGH
delay(1);//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//LOW

while(1)
{
delay(100);////USTIMER_delay(100000);//GIVE 100MS DELAY BEFORE NEXT COMMAND:now comes data
//A= 49 HEX VALUE
//GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_HIGH);
//SIMPLY

GPIO_setOutput(GPIO_BANK7, GPIO_PIN8, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN9, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN10, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN11, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN12, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN13, OUTPUT_LOW);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN14, OUTPUT_HIGH);
GPIO_setOutput(GPIO_BANK7, GPIO_PIN15, OUTPUT_LOW);

//FUNCTION SET

GPIO_setOutput(GPIO_BANK8,GPIO_PIN8 , OUTPUT_HIGH); //C=1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN9, OUTPUT_LOW); //W=0
//GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);//E=0
//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_HIGH);//EN HIGH
delay(1);//USTIMER_delay(1000);//DELAY 1
GPIO_setOutput(GPIO_BANK8, GPIO_PIN10, OUTPUT_LOW);
}
//LOW


}