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.

problem with lcd WH1602D and lm3s6965

why lcd works through time or not working at all?
i am using next schems
PE.0(72)->DB4(11)
PE.1(73)->DB5(12)
PE.2(74)->DB6(13)
PE.3(75)->DB7(14)
PB.0(66)->E(6)
PB.1(67)->RS(4)
GND->RW(5)


#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h" 

#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

#define cursor_at_1stline      0x80
#define cursor_at_2ndline    	 0xC0
#define display                0x28 // DL - Set Data Interface Length /4(0)
                                    // N - Number of Display Lines    /2(1)
                                    //F - Character Font              /5x7(0)

#define cursor_disp_off        0x08
#define cursor_disp_on_coff    0x0C
#define cleardisp            	 0x01
#define cursorhome             0x02
#define incr_address_shift_cursor_with_eachcharacter_right    0x06

#define EN_HI      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_PIN_0)
#define EN_LO      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, 0x00)
#define RS_HI      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, GPIO_PIN_1)
#define RS_LO      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x00)

void delay_lcd(void)
{
        unsigned long ulLoop;

 	for(ulLoop = 0; ulLoop !=2000; ulLoop++)
        {
        }        
}


void LCD_COMMAND(char cmd)
{
        RS_LO;     
        GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, (cmd>>4)&0x0F);
	    
		 EN_HI;
        delay_lcd();
	 	 EN_LO; 
	  GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, cmd&0x0F);
        EN_HI;
        delay_lcd();
	EN_LO;
        delay_lcd();
}

void LCD_DATA(char dat)
{
        RS_HI;    
        GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, ((dat>>4)&0x0F));
	 EN_HI;
        delay_lcd();
	 	 EN_LO;  
	      GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, (dat&0x0F));
        EN_HI;
        delay_lcd();    
	EN_LO;
        delay_lcd();
}




void Clear(void)
{
    LCD_COMMAND (cleardisp);    // clear the display
    delay_lcd();                // insure at least 2 msec
}

void LCD_Line1(void)
{
     LCD_COMMAND (cursor_at_1stline);    // set RAM address to Line 2
                                        //note: this value may vary for different displays
    delay_lcd();
} // End of void Line1(void)

void LCD_Line2(void)
{
     LCD_COMMAND (cursor_at_2ndline);    // set RAM address to Line 2
                                        //note: this value may vary for different displays
    delay_lcd();
} 
int
main(void)
{
	
    
    // Set the clocking to run directly from the crystal.
    
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);


	
    //
    // Initialize ports  
	 
       //GPIOPortIntRegister(GPIO_PORTD_BASE, PortDIntHandler);
			 GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_0 , GPIO_DIR_MODE_OUT);
       GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
			 GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0xff);
			 	

 	 SysCtlDelay(10000000);
	
			 
		
		
		
		//*********************************************************
	//	включили порты
		GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTE_BASE, 0x0F, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 , GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTB_BASE, 0x03, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
		
		
			 
		SysCtlDelay(3000000);
		 RS_LO;
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); //0x03                     //first command as in manual on lcd
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
		 delay_lcd();		 
		 	   SysCtlDelay(1000000);
		 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x28        // DL - Set Data Interface Length /4(0)
                                                                               // N - Number of Display Lines    /2(1)
                                                                               //F - Character Font              /5x7(0)        
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		   SysCtlDelay(1000000);
		 		 delay_lcd();
		/*  GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x28
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();*/
		 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_PIN_3);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 
		 	 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x28  replay last command
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_PIN_3);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
				 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x0f  1DCB display,cursor,blinky - on
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, GPIO_PIN_2);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_PIN_3);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
				 delay_lcd();
		GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x01 clear display
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); 
		  GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);			 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
				 delay_lcd();
		
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); //0x06 cursor options
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, GPIO_PIN_2);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
				 delay_lcd();

    RS_HI;
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); //output '1'
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
				 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); //output '2'
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);	 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0x00); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		
				 delay_lcd();
				 
	delay_lcd();
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); //output '3'
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1, GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);	 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		 		 delay_lcd();
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0); 
		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1,  GPIO_PIN_1);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_2, 0x00);
     GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_3, 0x00);		 
		 EN_HI;
     SysCtlDelay(1000000);
	 	 EN_LO; 
		
				 delay_lcd();
		
			 LCD_DATA(' ');
			 	 LCD_DATA('S');
				 LCD_DATA('K');
				 LCD_DATA('L');
				 LCD_DATA('A');
				 LCD_DATA('D');
				 LCD_DATA(' ');
			 LCD_DATA('1');
			 LCD_DATA('2');
				 LCD_DATA('3');
				LCD_DATA('4');
				 LCD_DATA('5');
				 LCD_DATA(' ');
				 
				LCD_COMMAND(0xC0);
				 
				 
				 
				 LCD_DATA('S');
				 LCD_DATA('K');
				 LCD_DATA('L');
				 LCD_DATA('A');
				 LCD_DATA('D');
				 LCD_DATA(' ');
				 LCD_DATA('1');
				 LCD_DATA('2');
				 LCD_DATA('3');
				 LCD_DATA('4');
				 LCD_DATA('5');


 while(1)
					{ 
						SysCtlDelay(2000000);
         
            GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0x01);
						 //      GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x01);
					
						SysCtlDelay(2000000);
         
						GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0x00);
						 //      GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x00);
						
						
          }

}
  • Could you provide a bit more information here? What are you trying to do? What do you expect to see? What do you actually see? What debug steps have you taken already?

    I have no experience with the specific display you are using and don't know what you are trying to do in the attached code so I'll need a bit more help before I can help you out.

  • Hi Dave!
    I'm using lcd WH1602D-TMI-CT (winstar)
    in the datasheet there is an algorithm for a 4 bit interface
    When I program the controller the first time I get the following items


    I program this code again and get the good  finished result


    if you flash a third time, then like firsrt result
    fourth normally again.

    after first turning off
    the controller

    ps im my last code i change some output chars

    flashing by j-link jtag

  • If it's working every second time, I would look at the code that initializes the display. Likely there is something wrong in there but the problem is being corrected later so that, the next time you run it, the display looks correct (I assume the second picture shows what you expect?).

    It's normally a good idea to reset the display completely during initialization so that you know that all its internal register are in their default states. Does this display have a reset signal and, if so, is it connected on your board?

  • display don't have reset signal,
    am curious why it works the second time programming, and does not work the first or the third or the fifth, etc.

    after the power switch and can see that the display is initialized
    shows two rows but the command 'clear' 0x01 is not performed as following command
      probably somewhere stray nibbles

  • Thanks for the advice, the display started to work in normal mode after initialization been spending twice, the following is a corrected code  that can be useful to someone

    #define cursor_at_1stline      0x80
    #define cursor_at_2ndline    	 0xC0
    
    #define display                0x28 // DL - Set Data Interface Length /4(0)
                                        // N - Number of Display Lines    /2(1)
                                        //F - Character Font              /5x7(0)
    
    #define cursor_disp_off        0x08
    #define cursor_disp_on_coff    0x0C
    #define cleardisp            	 0x01
    #define cursorhome             0x02
    #define incr_address_shift_cursor_with_eachcharacter_right    0x06
    
    #define EN_HI      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_PIN_0)
    #define EN_LO      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, 0x00)
    #define RS_HI      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, GPIO_PIN_1)
    #define RS_LO      GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x00)
    #define LED_ON     GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0)
    #define LED_OFF    GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0x00)
    
    
    
    void delay_lcd(void)
    {
            unsigned long ulLoop;
    
     	for(ulLoop = 0; ulLoop !=2000; ulLoop++)
            {
            }        
    }
    
    
    void LCD_COMMAND(char cmd)
    {
            RS_LO;     
            GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, (cmd>>4)&0x0F);
    	    
    		    EN_HI;
            delay_lcd();
    	 	    EN_LO; 
    	
    	      GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, cmd&0x0F);
            EN_HI;
            delay_lcd();	    
    	      EN_LO;
            delay_lcd();
    }
    
    void LCD_DATA(char dat)
    {
            RS_HI;    
            GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, ((dat>>4)&0x0F));
    	      EN_HI;
            delay_lcd();
    	 	    EN_LO;  
    	      GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, (dat&0x0F));
            EN_HI;
            delay_lcd();
    	     	EN_LO;
            delay_lcd();
    }
    
    
    
    int LCD_Init(void)
    {
     
        GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_OUT);
        GPIOPadConfigSet(GPIO_PORTE_BASE, 0x0F, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
        GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 , GPIO_DIR_MODE_OUT);
        GPIOPadConfigSet(GPIO_PORTB_BASE, 0x03, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
         
         
        SysCtlDelay(1000000);
       // LCD_COMMAND (0x03);    // LCD display 
    		
    		 RS_LO;     
         EN_HI;
    		 GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, 0x03);
    	   delay_lcd();
    	 	 EN_LO; 
    		SysCtlDelay(1000000);
    
    
        LCD_COMMAND (0x28);    // LCD display 
        delay_lcd();
        LCD_COMMAND (0x28);    // LCD display 
        delay_lcd();
        LCD_COMMAND (0x0f);    // LCD display 
        delay_lcd();
        LCD_COMMAND (0x01);    // LCD display 
    	  SysCtlDelay(1000000);
        LCD_COMMAND (0x06);    // LCD display 
    		 delay_lcd();
    		 
    	 return 0;
    }    // End int LCD_Init
    
    
    void Clear(void)
    {
        LCD_COMMAND (cleardisp);    // clear the display
        delay_lcd();                // insure at least 2 msec
    }
    
    void LCD_Line1(void)
    {
         LCD_COMMAND (cursor_at_1stline);    // set RAM address to Line 2
                                            //note: this value may vary for different displays
        delay_lcd();
    } // End of void Line1(void)
    
    void LCD_Line2(void)
    {
         LCD_COMMAND (cursor_at_2ndline);    // set RAM address to Line 2
                                            //note: this value may vary for different displays
        delay_lcd();
    } 
    
    
    
    int
    main(void)
    {
    	  // Set the clocking to run directly from the crystal.
        
        SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_8MHZ);
    
    	  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); //LCD
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);//LCD
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);// blink led
        // Initialize ports  
    	 
       	GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_0 , GPIO_DIR_MODE_OUT);
        GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
    		LED_ON ;
    		
     	  SysCtlDelay(1000000);
    	 
    		LCD_Init(); LCD_Init();//init twice
    	
                    LED_OFF;
    		 	
    		SysCtlDelay(1000000);
    		
    			   LCD_DATA(' ');
    			 	 LCD_DATA('S');
    				 LCD_DATA('K');
    				 LCD_DATA('L');
    				 LCD_DATA('A');
    				 LCD_DATA('D');
    				 LCD_DATA(' ');
    				 LCD_DATA('1');
    				 LCD_DATA('2');
    				 LCD_DATA('3');
    				 LCD_DATA('4');
    				 LCD_DATA('5');
    				 LCD_DATA(' ');
    				 
    				LCD_COMMAND(0xC0);
    				 
    				 LCD_DATA('S');
    				 LCD_DATA('k');
    				 LCD_DATA('l');
    				 LCD_DATA('a');
    				 LCD_DATA('d');
    				 LCD_DATA(' ');
    				 LCD_DATA('6');
    				 LCD_DATA('7');
    				 LCD_DATA('8');
    				 LCD_DATA('9');
    				 LCD_DATA('0');
    				 				  				 
    		
          // LCD_COMMAND (cursor_at_1stline); 
         //  LCD_COMMAND (cursor_at_2ndline);
           
    	
       
    			 while(1)
    					{ 
    						//  blink led on D.0
    						SysCtlDelay(2000000);
                GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0x01);
    						SysCtlDelay(2000000);
                GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0x00);
    									
              }
    
    }