]> git.gag.com Git - fw/stlink/blobdiff - example/lcd/stm32l_discovery_lcd.c
Rename 32L specific examples
[fw/stlink] / example / lcd / stm32l_discovery_lcd.c
diff --git a/example/lcd/stm32l_discovery_lcd.c b/example/lcd/stm32l_discovery_lcd.c
deleted file mode 100644 (file)
index 982a5f2..0000000
+++ /dev/null
@@ -1,614 +0,0 @@
-/**\r
-  ******************************************************************************\r
-  * @file    stm32l_discovery_lcd.c\r
-  * @author  Microcontroller Division\r
-  * @version V1.0.0\r
-  * @date    Apri-2011\r
-  * @brief   This file includes driver for the glass LCD Module mounted on \r
-  *          STM32l discovery board MB963\r
-  ******************************************************************************\r
-  * @copy\r
-  *\r
-  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
-  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
-  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
-  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
-  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
-  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
-  *\r
-  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>\r
-  */ \r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32l_discovery_lcd.h"\r
-#include "discover_board.h"\r
-#include "stm32l1xx_lcd.h"\r
-#include "stm32l1xx_gpio.h"\r
-#include "stm32l1xx_rcc.h"\r
-/* #include "main.h" */\r
-\r
-/* this variable can be used for accelerate the scrolling exit when push user button */\r
-volatile bool KeyPressed = FALSE; \r
-               \r
-/* LCD BAR status: We don't write directly in LCD RAM for save the bar setting */\r
-uint8_t t_bar[2]={0x0,0X0};\r
-               \r
-/*  =========================================================================\r
-                                 LCD MAPPING\r
-    =========================================================================\r
-           A\r
-     _  ----------\r
-COL |_| |\   |J  /|\r
-       F| H  |  K |B\r
-     _  |  \ | /  |\r
-COL |_| --G-- --M--\r
-        |   /| \  |\r
-       E|  Q |  N |C\r
-     _  | /  |P  \|   \r
-DP  |_| -----------  \r
-           D         \r
-\r
- An LCD character coding is based on the following matrix:\r
-      { E , D , P , N   }\r
-      { M , C , COL , DP}\r
-      { B , A , K , J   }\r
-      { G , F , Q , H   }\r
-\r
- The character 'A' for example is:\r
-  -------------------------------\r
-LSB   { 1 , 0 , 0 , 0   }\r
-      { 1 , 1 , 0 , 0   }\r
-      { 1 , 1 , 0 , 0   }\r
-MSB   { 1 , 1 , 0 , 0   }\r
-      -------------------\r
-  'A' =  F    E   0   0 hexa\r
-\r
-*/\r
-\r
-/* Constant table for cap characters 'A' --> 'Z' */\r
-const uint16_t CapLetterMap[26]=\r
-    {\r
-        /* A      B      C      D      E      F      G      H      I  */\r
-        0xFE00,0x6714,0x1d00,0x4714,0x9d00,0x9c00,0x3f00,0xfa00,0x0014,\r
-        /* J      K      L      M      N      O      P      Q      R  */\r
-        0x5300,0x9841,0x1900,0x5a48,0x5a09,0x5f00,0xFC00,0x5F01,0xFC01,\r
-        /* S      T      U      V      W      X      Y      Z  */\r
-        0xAF00,0x0414,0x5b00,0x18c0,0x5a81,0x00c9,0x0058,0x05c0\r
-    };\r
-\r
-/* Constant table for number '0' --> '9' */\r
-const uint16_t NumberMap[10]=\r
-    {\r
-        /* 0      1      2      3      4      5      6      7      8      9  */\r
-        0x5F00,0x4200,0xF500,0x6700,0xEa00,0xAF00,0xBF00,0x04600,0xFF00,0xEF00\r
-    };\r
-\r
-static void LCD_Conv_Char_Seg(uint8_t* c,bool point,bool column,uint8_t* digit);\r
-\r
-/**\r
-  * @brief  Configures the LCD GLASS relative GPIO port IOs and LCD peripheral.\r
-  * @param  None\r
-  * @retval None\r
-  */\r
-void LCD_GLASS_Init(void)\r
-{\r
-  LCD_InitTypeDef LCD_InitStruct;\r
-\r
\r
-  LCD_InitStruct.LCD_Prescaler = LCD_Prescaler_1;\r
-  LCD_InitStruct.LCD_Divider = LCD_Divider_31;\r
-  LCD_InitStruct.LCD_Duty = LCD_Duty_1_4;\r
-  LCD_InitStruct.LCD_Bias = LCD_Bias_1_3;\r
-  LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal;\r
-\r
\r
-  /* Initialize the LCD */\r
-  LCD_Init(&LCD_InitStruct);\r
-  \r
-  LCD_MuxSegmentCmd(ENABLE);\r
-  \r
-  /* To set contrast to mean value */\r
-  LCD_ContrastConfig(LCD_Contrast_Level_4);\r
-  \r
-  LCD_DeadTimeConfig(LCD_DeadTime_0);\r
-  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_4);\r
-\r
-  /* Wait Until the LCD FCR register is synchronized */\r
-  LCD_WaitForSynchro();\r
-  \r
-  /* Enable LCD peripheral */\r
-  LCD_Cmd(ENABLE);\r
-  \r
-  /* Wait Until the LCD is enabled */\r
-  while(LCD_GetFlagStatus(LCD_FLAG_ENS) == RESET)\r
-  {\r
-  }\r
-  /*!< Wait Until the LCD Booster is ready */  \r
-  while(LCD_GetFlagStatus(LCD_FLAG_RDY) == RESET)\r
-  {\r
-  } \r
-\r
-  LCD_BlinkConfig(LCD_BlinkMode_Off,LCD_BlinkFrequency_Div32);   \r
-  LCD_GLASS_Clear();\r
-}\r
-\r
-/**\r
-  * @brief  To initialize the LCD pins\r
-  * @caller main\r
-  * @param None\r
-  * @retval None\r
-  */\r
-\r
-void LCD_GLASS_Configure_GPIO(void)\r
-{\r
-  GPIO_InitTypeDef GPIO_InitStructure;\r
-  \r
-/* Enable GPIOs clock */       \r
-  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC |\r
-                        RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH, ENABLE);\r
-\r
-  \r
-/* Configure Output for LCD */\r
-/* Port A */\r
-  GPIO_StructInit(&GPIO_InitStructure);\r
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_10 |GPIO_Pin_15;\r
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;\r
-  GPIO_Init( GPIOA, &GPIO_InitStructure);\r
-\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource1,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource2,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource3,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource8,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOA, GPIO_PinSource15,GPIO_AF_LCD) ;  \r
-  \r
-/* Configure Output for LCD */\r
-/* Port B */  \r
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_9 \\r
-                                 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;  \r
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;\r
-  GPIO_Init( GPIOB, &GPIO_InitStructure);\r
-  \r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource3,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource4,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource5,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource8,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource9,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource10,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource11,GPIO_AF_LCD) ;  \r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource12,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13,GPIO_AF_LCD) ;   \r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOB, GPIO_PinSource15,GPIO_AF_LCD) ;   \r
-  \r
-/* Configure Output for LCD */\r
-/* Port C*/  \r
-  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 \\r
-                                 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |GPIO_Pin_11 ;                               \r
-  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;\r
-  GPIO_Init( GPIOC, &GPIO_InitStructure);  \r
-  \r
-\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource0,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource1,GPIO_AF_LCD) ; \r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource2,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource3,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource6,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource7,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource8,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource9,GPIO_AF_LCD) ;\r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource10,GPIO_AF_LCD) ; \r
-  GPIO_PinAFConfig(GPIOC, GPIO_PinSource11,GPIO_AF_LCD) ;  \r
-\r
-/* Disable GPIOs clock */      \r
-  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC |\r
-                        RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH, DISABLE);\r
-  \r
-}\r
-\r
-/**\r
-  * @brief  LCD contrast setting min-->max-->min by pressing user button\r
-  * @param  None\r
-  * @retval None\r
-  */\r
-\r
-static void Delay(uint32_t nTime)\r
-{\r
-  while((nTime--) != 0); \r
-}\r
-\r
-void LCD_contrast()\r
-{\r
-  uint32_t contrast ;\r
-  \r
-  /* To get the actual contrast value in register */\r
-  contrast = LCD->FCR & LCD_Contrast_Level_7;\r
-  \r
-  while ((GPIOC->IDR & USERBUTTON_GPIO_PIN) == 0x0)\r
-  {\r
-    contrast += LCD_Contrast_Level_1;  \r
-    \r
-    if (contrast > LCD_Contrast_Level_7)\r
-     contrast=LCD_Contrast_Level_0;\r
-  \r
-    LCD_ContrastConfig(contrast);\r
-    Delay(100);\r
-  }\r
-}\r
-\r
-/**\r
-  * @brief  Setting bar on LCD, writes bar value in LCD frame buffer \r
-  * @param  None\r
-  * @retval None\r
-  */\r
-void LCD_bar()\r
-{\r
-        \r
-  LCD->RAM[LCD_RAMRegister_4] &= 0xffff5fff;\r
-  LCD->RAM[LCD_RAMRegister_6] &= 0xffff5fff;\r
-/* bar1 bar3 */\r
-  LCD->RAM[LCD_RAMRegister_4] |= (uint32_t)(t_bar[0]<<12);\r
-  \r
-/*bar0 bar2 */\r
-  LCD->RAM[LCD_RAMRegister_6] |= (uint32_t)(t_bar[1]<<12);\r
\r
-}\r
-\r
-/**\r
-  * @brief  Converts an ascii char to the a LCD digit.\r
-  * @param  c: a char to display.\r
-  * @param  point: a point to add in front of char\r
-  *         This parameter can be: POINT_OFF or POINT_ON\r
-  * @param  column : flag indicating if a column has to be add in front\r
-  *         of displayed character.\r
-  *         This parameter can be: COLUMN_OFF or COLUMN_ON.\r
-       * @param        digit array with segment \r
-  * @retval None\r
-  */\r
-static void LCD_Conv_Char_Seg(uint8_t* c,bool point,bool column, uint8_t* digit)\r
-{\r
-  uint16_t ch = 0 ;\r
-  uint8_t i,j;\r
-  \r
-  switch (*c)\r
-    {\r
-    case ' ' : \r
-      ch = 0x00;\r
-      break;\r
-    \r
-    case '*':\r
-      ch = star;\r
-      break;\r
-                  \r
-    case 'µ' :\r
-      ch = C_UMAP;\r
-      break;\r
-    \r
-    case 'm' :\r
-      ch = C_mMap;\r
-      break;\r
-                  \r
-    case 'n' :\r
-      ch = C_nMap;\r
-      break;                                   \r
-                  \r
-    case '-' :\r
-      ch = C_minus;\r
-      break;\r
-      \r
-    case '/' :\r
-      ch = C_slatch;\r
-      break;  \r
-      \r
-    case '°' :\r
-      ch = C_percent_1;\r
-      break;  \r
-    case '%' :\r
-      ch = C_percent_2; \r
-      break;\r
-    case 255 :\r
-      ch = C_full;\r
-      break ;\r
-    \r
-    case '0':\r
-    case '1':\r
-    case '2':\r
-    case '3':\r
-    case '4':\r
-    case '5':\r
-    case '6':\r
-    case '7':\r
-    case '8':\r
-    case '9':                  \r
-      ch = NumberMap[*c-0x30];         \r
-      break;\r
-          \r
-    default:\r
-      /* The character c is one letter in upper case*/\r
-      if ( (*c < 0x5b) && (*c > 0x40) )\r
-      {\r
-        ch = CapLetterMap[*c-'A'];\r
-      }\r
-      /* The character c is one letter in lower case*/\r
-      if ( (*c <0x7b) && ( *c> 0x60) )\r
-      {\r
-        ch = CapLetterMap[*c-'a'];\r
-      }\r
-      break;\r
-  }\r
-       \r
-  /* Set the digital point can be displayed if the point is on */\r
-  if (point)\r
-  {\r
-    ch |= 0x0002;\r
-  }\r
-\r
-  /* Set the "COL" segment in the character that can be displayed if the column is on */\r
-  if (column)\r
-  {\r
-    ch |= 0x0020;\r
-  }            \r
-\r
-  for (i = 12,j=0 ;j<4; i-=4,j++)\r
-  {\r
-    digit[j] = (ch >> i) & 0x0f; //To isolate the less signifiant dibit\r
-  }\r
-}\r
-\r
-/**\r
-  * @brief  This function writes a char in the LCD frame buffer.\r
-  * @param  ch: the character to display.\r
-  * @param  point: a point to add in front of char\r
-  *         This parameter can be: POINT_OFF or POINT_ON\r
-  * @param  column: flag indicating if a column has to be add in front\r
-  *         of displayed character.\r
-  *         This parameter can be: COLUMN_OFF or COLUMN_ON.           \r
-  * @param  position: position in the LCD of the caracter to write [0:7]\r
-  * @retval None\r
-  * @par    Required preconditions: The LCD should be cleared before to start the\r
-  *         write operation.  \r
-  */\r
-void LCD_GLASS_WriteChar(uint8_t* ch, bool point, bool column, uint8_t position)\r
-{\r
-  uint8_t digit[4];     /* Digit frame buffer */\r
-   \r
-/* To convert displayed character in segment in array digit */\r
-  LCD_Conv_Char_Seg(ch,point,column,digit);\r
-\r
-/* TO wait LCD Ready */  \r
-  while( LCD_GetFlagStatus (LCD_FLAG_UDR) != RESET) ;\r
-  \r
-  switch (position)\r
-  {\r
-    /* Position 1 on LCD (Digit1)*/\r
-    case 1:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xcffffffc;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xcffffffc;\r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xcffffffc;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xcffffffc;\r
-\r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x0c) << 26 ) | (digit[0]& 0x03) ; // 1G 1B 1M 1E         \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x0c) << 26 ) | (digit[1]& 0x03) ; // 1F 1A 1C 1D \r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x0c) << 26 ) | (digit[2]& 0x03) ; // 1Q 1K 1Col 1P                                                                                                                                    \r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x0c) << 26 ) | (digit[3]& 0x03) ; // 1H 1J 1DP 1N\r
-\r
-      break;\r
-    \r
-    /* Position 2 on LCD (Digit2)*/\r
-    case 2:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xf3ffff03;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xf3ffff03;      \r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xf3ffff03;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xf3ffff03;\r
-      \r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x0c) << 24 )|((digit[0]& 0x02) << 6 )|((digit[0]& 0x01) << 2 ) ; // 2G 2B 2M 2E        \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x0c) << 24 )|((digit[1]& 0x02) << 6 )|((digit[1]& 0x01) << 2 ) ; // 2F 2A 2C 2D\r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x0c) << 24 )|((digit[2]& 0x02) << 6 )|((digit[2]& 0x01) << 2 ) ; // 2Q 2K 2Col 2P\r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x0c) << 24 )|((digit[3]& 0x02) << 6 )|((digit[3]& 0x01) << 2 ) ; // 2H 2J 2DP 2N\r
-      \r
-      break;\r
-    \r
-    /* Position 3 on LCD (Digit3)*/\r
-    case 3:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xfcfffcff;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xfcfffcff;\r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xfcfffcff;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xfcfffcff;\r
-\r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x0c) << 22 ) | ((digit[0]& 0x03) << 8 ) ; // 3G 3B 3M 3E     \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x0c) << 22 ) | ((digit[1]& 0x03) << 8 ) ; // 3F 3A 3C 3D\r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x0c) << 22 ) | ((digit[2]& 0x03) << 8 ) ; // 3Q 3K 3Col 3P\r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x0c) << 22 ) | ((digit[3]& 0x03) << 8 ) ; // 3H 3J 3DP 3N\r
-      \r
-      break;\r
-    \r
-    /* Position 4 on LCD (Digit4)*/\r
-    case 4:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xffcff3ff;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xffcff3ff;\r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xffcff3ff;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xffcff3ff;\r
-      \r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x0c) << 18 ) | ((digit[0]& 0x03) << 10 ) ; // 4G 4B 4M 4E    \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x0c) << 18 ) | ((digit[1]& 0x03) << 10 ) ; // 4F 4A 4C 4D\r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x0c) << 18 ) | ((digit[2]& 0x03) << 10 ) ; // 4Q 4K 4Col 4P\r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x0c) << 18 ) | ((digit[3]& 0x03) << 10 ) ; // 4H 4J 4DP 4N\r
-      \r
-      break;\r
-    \r
-    /* Position 5 on LCD (Digit5)*/\r
-    case 5:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xfff3cfff;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xfff3cfff;\r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xfff3efff;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xfff3efff;\r
-\r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x0c) << 16 ) | ((digit[0]& 0x03) << 12 ) ; // 5G 5B 5M 5E    \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x0c) << 16 ) | ((digit[1]& 0x03) << 12 ) ; // 5F 5A 5C 5D\r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x0c) << 16 ) | ((digit[2]& 0x01) << 12 ) ; // 5Q 5K   5P \r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x0c) << 16 ) | ((digit[3]& 0x01) << 12 ) ; // 5H 5J   5N\r
-      \r
-      break;\r
-    \r
-    /* Position 6 on LCD (Digit6)*/\r
-    case 6:\r
-      LCD->RAM[LCD_RAMRegister_0] &= 0xfffc3fff;\r
-      LCD->RAM[LCD_RAMRegister_2] &= 0xfffc3fff;\r
-      LCD->RAM[LCD_RAMRegister_4] &= 0xfffc3fff;\r
-      LCD->RAM[LCD_RAMRegister_6] &= 0xfffc3fff;\r
-\r
-      LCD->RAM[LCD_RAMRegister_0] |= ((digit[0]& 0x04) << 15 ) | ((digit[0]& 0x08) << 13 ) | ((digit[0]& 0x03) << 14 ) ; // 6B 6G 6M 6E        \r
-      LCD->RAM[LCD_RAMRegister_2] |= ((digit[1]& 0x04) << 15 ) | ((digit[1]& 0x08) << 13 ) | ((digit[1]& 0x03) << 14 ) ; // 6A 6F 6C 6D\r
-      LCD->RAM[LCD_RAMRegister_4] |= ((digit[2]& 0x04) << 15 ) | ((digit[2]& 0x08) << 13 ) | ((digit[2]& 0x01) << 14 ) ; // 6K 6Q    6P \r
-      LCD->RAM[LCD_RAMRegister_6] |= ((digit[3]& 0x04) << 15 ) | ((digit[3]& 0x08) << 13 ) | ((digit[3]& 0x01) << 14 ) ; // 6J 6H   6N\r
-      \r
-      break;\r
-    \r
-     default:\r
-      break;\r
-  }\r
-\r
-/* Refresh LCD  bar */\r
-  LCD_bar();\r
-\r
-/* Update the LCD display */\r
-  LCD_UpdateDisplayRequest();\r
-  \r
-}\r
-\r
-/**\r
-  * @brief  This function writes a char in the LCD RAM.\r
-  * @param  ptr: Pointer to string to display on the LCD Glass.\r
-  * @retval None\r
-  */\r
-void LCD_GLASS_DisplayString(uint8_t* ptr)\r
-{\r
-  uint8_t i = 0x01;\r
-\r
-  /* Send the string character by character on lCD */\r
-  while ((*ptr != 0) & (i < 8))\r
-  {\r
-    /* Display one character on LCD */\r
-    LCD_GLASS_WriteChar(ptr, FALSE, FALSE, i);\r
-\r
-    /* Point on the next character */\r
-    ptr++;\r
-\r
-    /* Increment the character counter */\r
-    i++;\r
-  }\r
-}\r
-\r
-/**\r
-  * @brief  This function writes a char in the LCD RAM.\r
-  * @param  ptr: Pointer to string to display on the LCD Glass.\r
-  * @retval None\r
-  * @par    Required preconditions: Char is ASCCI value "Ored" with decimal point or Column flag\r
-  */\r
-void LCD_GLASS_DisplayStrDeci(uint16_t* ptr)\r
-{\r
-  uint8_t i = 0x01;\r
-  uint8_t char_tmp;\r
-  \r
-//  LCD_GLASS_Clear();\r
-  /* Send the string character by character on lCD */\r
-  while ((*ptr != 0) & (i < 8))\r
-  {                    \r
-    char_tmp = (*ptr) & 0x00ff;\r
-    \r
-    switch ((*ptr) & 0xf000)\r
-    {\r
-      case DOT:\r
-          /* Display one character on LCD with decimal point */\r
-          LCD_GLASS_WriteChar(&char_tmp, POINT_ON, COLUMN_OFF, i);\r
-          break;\r
-      case DOUBLE_DOT:\r
-          /* Display one character on LCD with decimal point */\r
-          LCD_GLASS_WriteChar(&char_tmp, POINT_OFF, COLUMN_ON, i);\r
-          break;\r
-      default:\r
-          LCD_GLASS_WriteChar(&char_tmp, POINT_OFF, COLUMN_OFF, i);            \r
-          break;\r
-    }/* Point on the next character */\r
-    ptr++;\r
-    \r
-    /* Increment the character counter */\r
-    i++;\r
-  }\r
-}\r
-\r
-/**\r
-  * @brief  This function Clear the whole LCD RAM.\r
-  * @param  None\r
-  * @retval None\r
-  */\r
-void LCD_GLASS_Clear(void)\r
-{\r
-  uint8_t counter = 0;\r
-\r
-  /* TO wait LCD Ready */  \r
-  while( LCD_GetFlagStatus (LCD_FLAG_UDR) != RESET) ;\r
-  \r
-  for (counter = LCD_RAMRegister_0; counter <= LCD_RAMRegister_15; counter++)\r
-  {\r
-    LCD->RAM[counter] = 0;\r
-  }\r
-\r
-  /* Update the LCD display */\r
-  LCD_UpdateDisplayRequest();\r
-  \r
-}\r
-\r
-/**\r
-  * @brief  Display a string in scrolling mode\r
-  * @param  ptr: Pointer to string to display on the LCD Glass.\r
-  * @param  nScroll: Specifies how many time the message will be scrolled\r
-  * @param  ScrollSpeed : Speciifes the speed of the scroll, low value gives\r
-  *         higher speed \r
-  * @retval None\r
-  * @par    Required preconditions: The LCD should be cleared before to start the\r
-  *         write operation.\r
-  */\r
-void LCD_GLASS_ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed)\r
-{\r
-  uint8_t Repetition;\r
-  uint8_t Char_Nb;\r
-  uint8_t* ptr1;\r
-  uint8_t str[7]="";\r
-  uint8_t Str_size;\r
-  \r
-  if (ptr == 0) return;\r
-\r
-/* To calculate end of string */\r
-  for (ptr1=ptr,Str_size = 0 ; *ptr1 != 0; Str_size++,ptr1++) ;\r
-  \r
-  ptr1 = ptr;\r
-  \r
-  LCD_GLASS_DisplayString(ptr);\r
-  Delay(ScrollSpeed);\r
-          \r
-/* To shift the string for scrolling display*/\r
-  for (Repetition=0; Repetition<nScroll; Repetition++)\r
-  {\r
-    for (Char_Nb=0; Char_Nb<Str_size; Char_Nb++)\r
-    {\r
-      *(str) =* (ptr1+((Char_Nb+1)%Str_size));\r
-      *(str+1) =* (ptr1+((Char_Nb+2)%Str_size));\r
-      *(str+2) =* (ptr1+((Char_Nb+3)%Str_size));\r
-      *(str+3) =* (ptr1+((Char_Nb+4)%Str_size));\r
-      *(str+4) =* (ptr1+((Char_Nb+5)%Str_size));\r
-      *(str+5) =* (ptr1+((Char_Nb+6)%Str_size));\r
-      LCD_GLASS_Clear();\r
-      LCD_GLASS_DisplayString(str);\r
-  \r
-  /* user button pressed stop the scrolling sentence */\r
-      if (KeyPressed)\r
-              return;                  \r
-      Delay(ScrollSpeed);\r
-    }  \r
-  }\r
-\r
-}\r
-\r
-/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/\r