This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

uart+lcd

hello dear all,
I have a problem in showing hex packet on LCD.I send a hex file by UART and i want to show it on LCD. but LCD show different number. like : i send 02 but it show 202. I taught maybe it's because of baud rate but it isn't work still. could you tell me what's the problem?
i use keil and my ARM is LPC1768

#include <LPC17xx.H>                                              definitions
#include "LCD.h"
#include "string.h"
#include "sys.h"
#include "lcd.h"
#include "touch.h"
#include "exti.h"
#include <stdio.h>
#include "uart.h"
unsigned char lcd_buf[50];
unsigned char s[10];

void Delay (uint32_t Time)
{
    uint32_t i;

    i = 0;
    while (Time--) {
        for (i = 0; i < 5000; i++);
    }
}





/*
*********************************************************************************************************
* Description:  The function is setting font colors¡¢brush colors and the area of clear
* Arguments  :  None
* Returns    :  None
*********************************************************************************************************
*/

void Load_Drow_Dialog(void)
{
        LCD_Clear(WHITE);
        POINT_COLOR=Red;                                                                        //Setting font colors
        LCD_ShowString(216,0,"txt");                                          //Displaying screen clear area
        POINT_COLOR=BLUE;                                                                       //Setting brush color
}
/*
*********************************************************************************************************
* Description:  Main function
* Arguments  :  None
* Returns    :  None
*********************************************************************************************************
*/
int main (void)
{
 int i=0;
  int j=0;
  SystemInit();

  LCD_Init();
Load_Drow_Dialog();
UART2_Init();
        while(1){
                for(i=0;i<7;i++){
                s[i]=UART2_GetChar()-190;
                }

                sprintf(lcd_buf,"%d-%d-%d-%d",s[3],s[4],s[5],s[6]);
                LCD_ShowString(40,60,lcd_buf );

    Delay(4000);
        }
}

Parents
  • part of system init for clock:

     *----------------------------------------------------------------------------
      Clock Variable definitions
     *----------------------------------------------------------------------------*/
    uint32_t SystemCoreClock = __CORE_CLK;/*!< System Clock Frequency (Core Clock)*/
    
    
    /*----------------------------------------------------------------------------
      Clock functions
     *----------------------------------------------------------------------------*/
    void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
    {
      /* Determine clock frequency according to clock register values             */
      if (((LPC_SC->PLL0STAT >> 24) & 3) == 3) { /* If PLL0 enabled and connected */
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = (IRC_OSC *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = (OSC_CLK *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 2:                                /* RTC oscillator => PLL0        */
            SystemCoreClock = (RTC_CLK *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
        }
      } else {
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = IRC_OSC / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = OSC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 2:                                /* RTC oscillator => PLL0        */
            SystemCoreClock = RTC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
        }
      }
    
    }
    
    /**
     * Initialize the system
     *
     * @param  none
     * @return none
     *
     * @brief  Setup the microcontroller system.
     *         Initialize the System.
     */
    void SystemInit (void)
    {
    #if (CLOCK_SETUP)                       /* Clock Setup                        */
      LPC_SC->SCS       = SCS_Val;
      if (SCS_Val & (1 << 5)) {             /* If Main Oscillator is enabled      */
        while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready    */
      }
    
      LPC_SC->CCLKCFG   = CCLKCFG_Val;      /* Setup Clock Divider                */
    
      LPC_SC->PCLKSEL0  = PCLKSEL0_Val;     /* Peripheral Clock Selection         */
      LPC_SC->PCLKSEL1  = PCLKSEL1_Val;
    
      LPC_SC->CLKSRCSEL = CLKSRCSEL_Val;    /* Select Clock Source for PLL0       */
    
    #if (PLL0_SETUP)
      LPC_SC->PLL0CFG   = PLL0CFG_Val;      /* configure PLL0                     */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
    
      LPC_SC->PLL0CON   = 0x01;             /* PLL0 Enable                        */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
      while (!(LPC_SC->PLL0STAT & (1<<26)));/* Wait for PLOCK0                    */
    
      LPC_SC->PLL0CON   = 0x03;             /* PLL0 Enable & Connect              */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
      while (!(LPC_SC->PLL0STAT & ((1<<25) | (1<<24))));/* Wait for PLLC0_STAT & PLLE0_STAT */
    #endif
    
    #if (PLL1_SETUP)
      LPC_SC->PLL1CFG   = PLL1CFG_Val;
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
    
      LPC_SC->PLL1CON   = 0x01;             /* PLL1 Enable                        */
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
      while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1                    */
    
      LPC_SC->PLL1CON   = 0x03;             /* PLL1 Enable & Connect              */
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
      while (!(LPC_SC->PLL1STAT & ((1<< 9) | (1<< 8))));/* Wait for PLLC1_STAT & PLLE1_STAT */
    #else
      LPC_SC->USBCLKCFG = USBCLKCFG_Val;    /* Setup USB Clock Divider            */
    #endif
    
      LPC_SC->PCONP     = PCONP_Val;        /* Power Control for Peripherals      */
    
      LPC_SC->CLKOUTCFG = CLKOUTCFG_Val;    /* Clock Output Configuration         */
    #endif
    
    #if (FLASH_SETUP == 1)                  /* Flash Accelerator Setup            */
      LPC_SC->FLASHCFG  = (LPC_SC->FLASHCFG & ~0x0000F000) | FLASHCFG_Val;
    #endif
    }
    

    .

Reply
  • part of system init for clock:

     *----------------------------------------------------------------------------
      Clock Variable definitions
     *----------------------------------------------------------------------------*/
    uint32_t SystemCoreClock = __CORE_CLK;/*!< System Clock Frequency (Core Clock)*/
    
    
    /*----------------------------------------------------------------------------
      Clock functions
     *----------------------------------------------------------------------------*/
    void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
    {
      /* Determine clock frequency according to clock register values             */
      if (((LPC_SC->PLL0STAT >> 24) & 3) == 3) { /* If PLL0 enabled and connected */
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = (IRC_OSC *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = (OSC_CLK *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 2:                                /* RTC oscillator => PLL0        */
            SystemCoreClock = (RTC_CLK *
                              ((2ULL * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)       /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
        }
      } else {
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = IRC_OSC / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = OSC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 2:                                /* RTC oscillator => PLL0        */
            SystemCoreClock = RTC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
        }
      }
    
    }
    
    /**
     * Initialize the system
     *
     * @param  none
     * @return none
     *
     * @brief  Setup the microcontroller system.
     *         Initialize the System.
     */
    void SystemInit (void)
    {
    #if (CLOCK_SETUP)                       /* Clock Setup                        */
      LPC_SC->SCS       = SCS_Val;
      if (SCS_Val & (1 << 5)) {             /* If Main Oscillator is enabled      */
        while ((LPC_SC->SCS & (1<<6)) == 0);/* Wait for Oscillator to be ready    */
      }
    
      LPC_SC->CCLKCFG   = CCLKCFG_Val;      /* Setup Clock Divider                */
    
      LPC_SC->PCLKSEL0  = PCLKSEL0_Val;     /* Peripheral Clock Selection         */
      LPC_SC->PCLKSEL1  = PCLKSEL1_Val;
    
      LPC_SC->CLKSRCSEL = CLKSRCSEL_Val;    /* Select Clock Source for PLL0       */
    
    #if (PLL0_SETUP)
      LPC_SC->PLL0CFG   = PLL0CFG_Val;      /* configure PLL0                     */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
    
      LPC_SC->PLL0CON   = 0x01;             /* PLL0 Enable                        */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
      while (!(LPC_SC->PLL0STAT & (1<<26)));/* Wait for PLOCK0                    */
    
      LPC_SC->PLL0CON   = 0x03;             /* PLL0 Enable & Connect              */
      LPC_SC->PLL0FEED  = 0xAA;
      LPC_SC->PLL0FEED  = 0x55;
      while (!(LPC_SC->PLL0STAT & ((1<<25) | (1<<24))));/* Wait for PLLC0_STAT & PLLE0_STAT */
    #endif
    
    #if (PLL1_SETUP)
      LPC_SC->PLL1CFG   = PLL1CFG_Val;
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
    
      LPC_SC->PLL1CON   = 0x01;             /* PLL1 Enable                        */
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
      while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1                    */
    
      LPC_SC->PLL1CON   = 0x03;             /* PLL1 Enable & Connect              */
      LPC_SC->PLL1FEED  = 0xAA;
      LPC_SC->PLL1FEED  = 0x55;
      while (!(LPC_SC->PLL1STAT & ((1<< 9) | (1<< 8))));/* Wait for PLLC1_STAT & PLLE1_STAT */
    #else
      LPC_SC->USBCLKCFG = USBCLKCFG_Val;    /* Setup USB Clock Divider            */
    #endif
    
      LPC_SC->PCONP     = PCONP_Val;        /* Power Control for Peripherals      */
    
      LPC_SC->CLKOUTCFG = CLKOUTCFG_Val;    /* Clock Output Configuration         */
    #endif
    
    #if (FLASH_SETUP == 1)                  /* Flash Accelerator Setup            */
      LPC_SC->FLASHCFG  = (LPC_SC->FLASHCFG & ~0x0000F000) | FLASHCFG_Val;
    #endif
    }
    

    .

Children