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++; } }