Hai this is surendra.I have written the code for 20*4 LCD but it is not initialized please help me about this.
Here this is the code what i have written.port L pin 0,1,2 three belongs to rs,r/w,EN and the data ines are PORT N pn0 to pn7.
#include <stdint.h>
#include <stdbool.h>
#include "driverlib/adc.h"
#include "inc/hw_memmap.h"
#include "driverlib/fpu.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/pin_map.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "driverlib/gpio.h"
void tx(unsigned char *);
void lcdcmd(unsigned char );
void lcddata(unsigned char );
int main()
{
ROM_FPUEnable();
ROM_FPULazyStackingEnable();
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
GPIOPinTypeGPIOInput(GPIO_PORTL_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2);
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
lcd_init();
}
void lcd_init()
{
lcdcmd(0x38);
SysCtlDelay(100000);
lcdcmd(0x01);
SysCtlDelay(100000);
lcdcmd(0x0E);
SysCtlDelay(100000);
lcdcmd(0x80);
SysCtlDelay(100000);
tx("suri");
}
void lcdcmd(unsigned char z)
{
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_0 | GPIO_PIN_1 ,0x00); //rs=0,r/w=0
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, z);
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_2 ,0x04);
SysCtlDelay(100000);
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_2 ,0x00);
SysCtlDelay(100000);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, 0);
SysCtlDelay(100000);
}
void lcddata(unsigned char x)
{
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_0 ,0x01); //rs=1; r/w=0
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_1 ,0x00);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, x);
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_2 ,0x04);
SysCtlDelay(100000);
GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_2 ,0x00);
SysCtlDelay(100000);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, 0);
SysCtlDelay(100000);
}
void tx(unsigned char *m)
{
while(*m!='\0')
{
lcddata(*m);
m++;
}
}