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
}