Tool/software: Code Composer Studio
I WANT TO INTERFACE QC2004A LCD WITH TM4C 1294XL.
BELOW IS MY CODE. NO ERROR. BUT DISPLAY IS BLANK.
CONNECTION: RS-PB4, EN-PB5, D4-PE0, D5-PE1, D6-PE2, D7-PE3, VSS-GND, VDD-5V, VEE[PIN 3]-3.3V, R/W-GND, Backlight Anode-3.3V.
PLEASE SUGGEST POSSIBLE SOLUTION / POINT OUT ERRORS.
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
/*
#define Function_set 0x28 //4bit_2line_5x7
#define Scroll_right 0x1E
#define Scroll_left 0x18
#define Return_Home 0x02
#define Increment_cursor 0x06
#define Decrement_cursor 0x04
#define DisplayON_CursorON 0x0E //Display ON-OFF control
#define Blinking_cursor 0x0F
#define Invisible_cursor 0x0C
#define Blank_display 0x08
#define Clear_display 0x01
#define SetCursorto1 0x80
#define SetCursorto2 0xC0
#define SetCursorto3 0x94
#define SetCursorto4 0xD4
*/
void Initialize_LCD(void);
void string_to_lcd(unsigned char *s);
void LCD_write(unsigned char,unsigned int);
void main()
{
SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);
SysCtlDelay(100000);//2ms
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
SysCtlDelay(100000);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlDelay(100000);
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SysCtlDelay(100000);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4|GPIO_PIN_5);
SysCtlDelay(100000);
GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
SysCtlDelay(2000000);//20ms
Initialize_LCD();
while(1){
LCD_write(0X80,0);
string_to_lcd("1234");
LCD_write(0XC0,0);
string_to_lcd("QWER");
LCD_write(0X94,0);
string_to_lcd("ASDF");
LCD_write(0XD4,0);
string_to_lcd("ZXCV");
SysCtlDelay(0XFFFFFF00);
}
}
void Initialize_LCD(void)
{
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0); //RS PIN LOW
SysCtlDelay(5000);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0); //EN PIN LOW
SysCtlDelay(5000);
LCD_write(0x20,0);
SysCtlDelay(5000);
LCD_write(0x08,0);
SysCtlDelay(5000);
LCD_write(0x01,0);
SysCtlDelay(5000);
LCD_write(0x06,0);
SysCtlDelay(5000);
LCD_write(0x0E,0);
SysCtlDelay(5000);
LCD_write(0X01,0);
SysCtlDelay(100000);
}
void LCD_write(unsigned char data,unsigned int RS)
{
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, RS); //Cammand/Data
SysCtlDelay(5000);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 1);
SysCtlDelay(5000);
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, ((data & 0X10)>>4));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, ((data & 0X20)>>5));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, ((data & 0X40)>>6));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, ((data & 0X80)>>7));
GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0, ((data & 0XF0)>>4));
SysCtlDelay(5000);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);
SysCtlDelay(5000);
SysCtlDelay(5000);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 1);
SysCtlDelay(5000);
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, ( data & 0X01));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, ((data & 0X02)>>1));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, ((data & 0X04)>>2));
//GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, ((data & 0X08)>>3));
GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0, (data & 0X0F));
SysCtlDelay(5000);
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);
SysCtlDelay(5000);
}
void string_to_lcd(unsigned char *s)
{
unsigned int slen;
slen=strlen(s);
while(slen>0)
{
unsigned char D=*s;
LCD_write(*s,1);
SysCtlDelay(0XFFFF0000);
slen--;
s++;
}
}

