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.

CCS/TMS320F28335: Interface with 16x2 LCD Display

Part Number: TMS320F28335
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

Tool/software: Code Composer Studio

I'm working with a 16x2 LCD display but I do not know how to print a value, for example, RMS voltage value, the Figure shown a text on the LCD 16x2 . Can someone help me please? and why the last character appears on the LCD? The code that I am using is below.

/************************************************************************/
/* LCD Interface - 8 bit mode                                           */
/*                                                                      */
/* LCD Connection:-                                                     */
/* ----------------                                                     */
/* D0 -> GPIO2                                                          */
/* D1 -> GPIO4                                                          */
/* D2 -> GPIO6                                                          */
/* D3 -> GPIO8                                                          */
/* D4 -> GPIO10                                                          */
/* D5 -> GPIO12                                                          */
/* D6 -> GPIO15                                                          */
/* D7 -> GPIO24                                                          */
/*                                                                      */
/* RS -> GPIO58                                                         */
/* RW -> GND                                                            */
/* E  -> GPIO60                                                         */
/*                                                                      */
/*                                                                      */
/************************************************************************/
#include "Dsp28335.h"
unsigned char temp, i;
//void delay_ms(long end);
void WriteCommandLCD(unsigned char CommandByte);
void WriteDataLCD(unsigned char DataByte);
void SendByte(unsigned char Value);
void CursorON (void);
void CursorOFF (void);
void initlcd (void);
void DisplayLCD (char LineNumber, char *Message);
float VRMS=3.0;


int main(void)
{

   InitSysCtrl();
   InitGpio();
   InitPieCtrl();
   InitWatchdog();
   initlcd();
   DisplayLCD(1,"RMS Voltage = "); //<---RMS Value//
   DelayUs(10000);


    while(1)
    {

    }
}

   //Initialization
void initlcd (void)
{
    GpioDataRegs.GPBSET.bit.GPIO60 = 1;
    DelayUs(1600);
    DelayUs(1600);
    DelayUs(1600);
    DelayUs(1600);
    WriteCommandLCD(0x38);
    DelayUs(1600);
    WriteCommandLCD(0x38);
    DelayUs(50);
    WriteCommandLCD(0x38);
    DelayUs(50);
    WriteCommandLCD(0x08);
    WriteCommandLCD(0x01);
    DelayUs(1600);
    WriteCommandLCD(0x06);
    WriteCommandLCD(0x0E);
    WriteCommandLCD(0x02);
    DelayUs(1600);

}
  //WriteCommand
void WriteCommandLCD (unsigned char CommandByte)
{
    GpioDataRegs.GPBCLEAR.bit.GPIO58 = 1;
    SendByte (CommandByte);
    DelayUs(50);
}
  //SendByte
void SendByte (unsigned char Value)
{
    if((Value & 0x01) == 0x01)
                GpioDataRegs.GPASET.bit.GPIO2 = 1;//GPIO_setHigh(myGpio, D0);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;//GPIO_setLow(myGpio, D0);

    if((Value & 0x02) == 0x02)
                GpioDataRegs.GPASET.bit.GPIO4 = 1;//GPIO_setHigh(myGpio, D1);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;//GPIO_setLow(myGpio, D1);

    if((Value & 0x04) == 0x04)
                GpioDataRegs.GPASET.bit.GPIO6 = 1;//GPIO_setHigh(myGpio, D2);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;//GPIO_setLow(myGpio, D2);

    if((Value & 0x08) == 0x08)
                GpioDataRegs.GPASET.bit.GPIO8 = 1;//GPIO_setHigh(myGpio, D3);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO8 = 1;//GPIO_setLow(myGpio, D3);

    if((Value & 0x10) == 0x10)
                GpioDataRegs.GPASET.bit.GPIO10 = 1;//GPIO_setHigh(myGpio, D4);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO10 = 1;//GPIO_setLow(myGpio, D4);

    if((Value & 0x20) == 0x20)
                GpioDataRegs.GPASET.bit.GPIO12 = 1;//GPIO_setHigh(myGpio, D5);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO12 = 1;//GPIO_setLow(myGpio, D5);

    if((Value & 0x40) == 0x40)
                GpioDataRegs.GPASET.bit.GPIO15 = 1;//GPIO_setHigh(myGpio, D6);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO15 = 1;//GPIO_setLow(myGpio, D6);

    if((Value & 0x80) == 0x80)
                GpioDataRegs.GPASET.bit.GPIO24 = 1;//GPIO_setHigh(myGpio, D7);
    else
                GpioDataRegs.GPACLEAR.bit.GPIO24 = 1;//GPIO_setLow(myGpio, D7);

GpioDataRegs.GPBSET.bit.GPIO60 = 1;o, E);            //Set E pin to select LCD

 for(temp=0;temp<5; temp++);
     GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1;           //Clear E pin to deselect LCD
     DelayUs(50);
}

void WriteDataLCD (unsigned char DataByte)
{
    GpioDataRegs.GPBSET.bit.GPIO58 = 1;         //Set RS pin to 1 to write Data
    SendByte(DataByte);
    DelayUs(50);
}

void CursorON (void)
{
    WriteCommandLCD (0x0F);
}

void CursorOFF (void)
{
    WriteCommandLCD(0x0C);
}

void DisplayLCD (char LineNumber, char *Message)
{
    int a;
    if (LineNumber == 1)
    {
        WriteCommandLCD(0x80);
    }
    else
    {
        WriteCommandLCD(0xC0);
    }
    for (a=0; a<16; a++)
    {
        WriteDataLCD(*Message);
        Message++;
    }
    return;
}