V1

Committer:
gr91
Date:
Fri May 15 14:33:04 2020 +0000
Revision:
3:1fb93eb764ac
Parent:
0:d67999aa55a3
Version 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
slowness 0:d67999aa55a3 1 #include "ihm_L476.h"
slowness 0:d67999aa55a3 2
slowness 0:d67999aa55a3 3 /** @defgroup STM32L476G_DISCOVERY_GLASS_LCD_Private_Constants Private Constants
slowness 0:d67999aa55a3 4 * @{
slowness 0:d67999aa55a3 5 */
slowness 0:d67999aa55a3 6 #define ASCII_CHAR_0 0x30 /* 0 */
slowness 0:d67999aa55a3 7 #define ASCII_CHAR_AT_SYMBOL 0x40 /* @ */
slowness 0:d67999aa55a3 8 #define ASCII_CHAR_LEFT_OPEN_BRACKET 0x5B /* [ */
slowness 0:d67999aa55a3 9 #define ASCII_CHAR_APOSTROPHE 0x60 /* ` */
slowness 0:d67999aa55a3 10 #define ASCII_CHAR_LEFT_OPEN_BRACE 0x7B /* ( */
slowness 0:d67999aa55a3 11
slowness 0:d67999aa55a3 12 Ticker ticker_scrool;
slowness 0:d67999aa55a3 13
slowness 0:d67999aa55a3 14 static void Convert(uint8_t *Char, Point_Typedef Point, DoublePoint_Typedef Colon);
slowness 0:d67999aa55a3 15 static void WriteChar(uint8_t *ch, Point_Typedef Point, DoublePoint_Typedef Colon, unsigned char Position);
slowness 0:d67999aa55a3 16
slowness 0:d67999aa55a3 17 uint8_t Global_Bar_Value=0;
slowness 0:d67999aa55a3 18
slowness 0:d67999aa55a3 19
slowness 0:d67999aa55a3 20 void BSP_LCD_GLASS_CLEAR_WITHOUT_BAR(void)
slowness 0:d67999aa55a3 21 {
slowness 0:d67999aa55a3 22 BSP_LCD_GLASS_Clear();
slowness 0:d67999aa55a3 23 BSP_LCD_GLASS_SetBar(Global_Bar_Value);
slowness 0:d67999aa55a3 24 }
slowness 0:d67999aa55a3 25
slowness 0:d67999aa55a3 26 void BSP_LCD_GLASS_SetBar(uint8_t Value)
slowness 0:d67999aa55a3 27 {
slowness 0:d67999aa55a3 28 Global_Bar_Value=Value&0xFF;
slowness 0:d67999aa55a3 29 uint32_t valBAR0=0,valBAR1=0,valBAR2=0,valBAR3=0;
slowness 0:d67999aa55a3 30
slowness 0:d67999aa55a3 31 if((Value&0x01)==0x01)
slowness 0:d67999aa55a3 32 valBAR0=LCD_BAR0_SEG;
slowness 0:d67999aa55a3 33 else
slowness 0:d67999aa55a3 34 valBAR0=0;
slowness 0:d67999aa55a3 35 if((Value&0x02)==0x02)
slowness 0:d67999aa55a3 36 valBAR1=LCD_BAR1_SEG;
slowness 0:d67999aa55a3 37 else
slowness 0:d67999aa55a3 38 valBAR1=0;
slowness 0:d67999aa55a3 39 if((Value&0x04)==0x04)
slowness 0:d67999aa55a3 40 valBAR2=LCD_BAR2_SEG;
slowness 0:d67999aa55a3 41 else
slowness 0:d67999aa55a3 42 valBAR2=0;
slowness 0:d67999aa55a3 43 if((Value&0x08)==0x08)
slowness 0:d67999aa55a3 44 valBAR3=LCD_BAR3_SEG;
slowness 0:d67999aa55a3 45 else
slowness 0:d67999aa55a3 46 valBAR3=0;
slowness 0:d67999aa55a3 47
slowness 0:d67999aa55a3 48 HAL_LCD_Write(&LCDHandle, LCD_BAR0_2_COM, ~(LCD_BAR0_SEG | LCD_BAR2_SEG), ( valBAR0|valBAR2 ));
slowness 0:d67999aa55a3 49 HAL_LCD_Write(&LCDHandle, LCD_BAR1_3_COM, ~(LCD_BAR1_SEG | LCD_BAR3_SEG), ( valBAR1|valBAR3));
slowness 0:d67999aa55a3 50 HAL_LCD_UpdateDisplayRequest(&LCDHandle);
slowness 0:d67999aa55a3 51 }
slowness 0:d67999aa55a3 52
slowness 0:d67999aa55a3 53 static void Convert(uint8_t *Char, Point_Typedef Point, DoublePoint_Typedef Colon)
slowness 0:d67999aa55a3 54 {
slowness 0:d67999aa55a3 55 uint16_t ch = 0 ;
slowness 0:d67999aa55a3 56 uint8_t loop = 0, index = 0;
slowness 0:d67999aa55a3 57
slowness 0:d67999aa55a3 58 switch (*Char)
slowness 0:d67999aa55a3 59 {
slowness 0:d67999aa55a3 60 case ' ' :
slowness 0:d67999aa55a3 61 ch = 0x00;
slowness 0:d67999aa55a3 62 break;
slowness 0:d67999aa55a3 63
slowness 0:d67999aa55a3 64 case 0x27 : //'
slowness 0:d67999aa55a3 65 ch= 0x0040;
slowness 0:d67999aa55a3 66 break;
slowness 0:d67999aa55a3 67
slowness 0:d67999aa55a3 68 case 0x5C : // /
slowness 0:d67999aa55a3 69 ch=0x0009;
slowness 0:d67999aa55a3 70 break;
slowness 0:d67999aa55a3 71
slowness 0:d67999aa55a3 72 case '[' :
slowness 0:d67999aa55a3 73 ch = 0x1D00;
slowness 0:d67999aa55a3 74 break;
slowness 0:d67999aa55a3 75
slowness 0:d67999aa55a3 76 case ']' :
slowness 0:d67999aa55a3 77 ch = 0x4700;
slowness 0:d67999aa55a3 78 break;
slowness 0:d67999aa55a3 79
slowness 0:d67999aa55a3 80 case '*':
slowness 0:d67999aa55a3 81 ch = C_STAR;
slowness 0:d67999aa55a3 82 break;
slowness 0:d67999aa55a3 83
slowness 0:d67999aa55a3 84 case '(' :
slowness 0:d67999aa55a3 85 ch = C_OPENPARMAP;
slowness 0:d67999aa55a3 86 break;
slowness 0:d67999aa55a3 87
slowness 0:d67999aa55a3 88 case ')' :
slowness 0:d67999aa55a3 89 ch = C_CLOSEPARMAP;
slowness 0:d67999aa55a3 90 break;
slowness 0:d67999aa55a3 91
slowness 0:d67999aa55a3 92 case 'd' :
slowness 0:d67999aa55a3 93 ch = C_DMAP;
slowness 0:d67999aa55a3 94 break;
slowness 0:d67999aa55a3 95
slowness 0:d67999aa55a3 96 case 'm' :
slowness 0:d67999aa55a3 97 ch = C_MMAP;
slowness 0:d67999aa55a3 98 break;
slowness 0:d67999aa55a3 99
slowness 0:d67999aa55a3 100 case 'n' :
slowness 0:d67999aa55a3 101 ch = C_NMAP;
slowness 0:d67999aa55a3 102 break;
slowness 0:d67999aa55a3 103
slowness 0:d67999aa55a3 104 case 230 :
slowness 0:d67999aa55a3 105 ch = C_UMAP;
slowness 0:d67999aa55a3 106 break;
slowness 0:d67999aa55a3 107
slowness 0:d67999aa55a3 108 case '-' :
slowness 0:d67999aa55a3 109 ch = C_MINUS;
slowness 0:d67999aa55a3 110 break;
slowness 0:d67999aa55a3 111
slowness 0:d67999aa55a3 112 case '+' :
slowness 0:d67999aa55a3 113 ch = C_PLUS;
slowness 0:d67999aa55a3 114 break;
slowness 0:d67999aa55a3 115
slowness 0:d67999aa55a3 116 case '/' :
slowness 0:d67999aa55a3 117 ch = C_SLATCH;
slowness 0:d67999aa55a3 118 break;
slowness 0:d67999aa55a3 119
slowness 0:d67999aa55a3 120 case 248 :
slowness 0:d67999aa55a3 121 ch = C_PERCENT_1;
slowness 0:d67999aa55a3 122 break;
slowness 0:d67999aa55a3 123
slowness 0:d67999aa55a3 124 case '%' :
slowness 0:d67999aa55a3 125 ch = C_PERCENT_2;
slowness 0:d67999aa55a3 126 break;
slowness 0:d67999aa55a3 127
slowness 0:d67999aa55a3 128 case 255 :
slowness 0:d67999aa55a3 129 ch = C_FULL;
slowness 0:d67999aa55a3 130 break ;
slowness 0:d67999aa55a3 131
slowness 0:d67999aa55a3 132 case '0':
slowness 0:d67999aa55a3 133 case '1':
slowness 0:d67999aa55a3 134 case '2':
slowness 0:d67999aa55a3 135 case '3':
slowness 0:d67999aa55a3 136 case '4':
slowness 0:d67999aa55a3 137 case '5':
slowness 0:d67999aa55a3 138 case '6':
slowness 0:d67999aa55a3 139 case '7':
slowness 0:d67999aa55a3 140 case '8':
slowness 0:d67999aa55a3 141 case '9':
slowness 0:d67999aa55a3 142 ch = NumberMap[*Char - ASCII_CHAR_0];
slowness 0:d67999aa55a3 143 break;
slowness 0:d67999aa55a3 144
slowness 0:d67999aa55a3 145 default:
slowness 0:d67999aa55a3 146 /* The character Char is one letter in upper case*/
slowness 0:d67999aa55a3 147 if ((*Char < ASCII_CHAR_LEFT_OPEN_BRACKET) && (*Char > ASCII_CHAR_AT_SYMBOL))
slowness 0:d67999aa55a3 148 {
slowness 0:d67999aa55a3 149 ch = CapLetterMap[*Char - 'A'];
slowness 0:d67999aa55a3 150 }
slowness 0:d67999aa55a3 151 /* The character Char is one letter in lower case*/
slowness 0:d67999aa55a3 152 if ((*Char < ASCII_CHAR_LEFT_OPEN_BRACE) && (*Char > ASCII_CHAR_APOSTROPHE))
slowness 0:d67999aa55a3 153 {
slowness 0:d67999aa55a3 154 ch = CapLetterMap[*Char - 'a'];
slowness 0:d67999aa55a3 155 }
slowness 0:d67999aa55a3 156 break;
slowness 0:d67999aa55a3 157 }
slowness 0:d67999aa55a3 158
slowness 0:d67999aa55a3 159 /* Set the digital point can be displayed if the point is on */
slowness 0:d67999aa55a3 160 if (Point == POINT_ON)
slowness 0:d67999aa55a3 161 {
slowness 0:d67999aa55a3 162 ch |= 0x0002;
slowness 0:d67999aa55a3 163 }
slowness 0:d67999aa55a3 164
slowness 0:d67999aa55a3 165 /* Set the "COL" segment in the character that can be displayed if the colon is on */
slowness 0:d67999aa55a3 166 if (Colon == DOUBLEPOINT_ON)
slowness 0:d67999aa55a3 167 {
slowness 0:d67999aa55a3 168 ch |= 0x0020;
slowness 0:d67999aa55a3 169 }
slowness 0:d67999aa55a3 170
slowness 0:d67999aa55a3 171 for (loop = 12, index = 0 ; index < 4; loop -= 4, index++)
slowness 0:d67999aa55a3 172 {
slowness 0:d67999aa55a3 173 Digit[index] = (ch >> loop) & 0x0f; /*To isolate the less significant digit */
slowness 0:d67999aa55a3 174 }
slowness 0:d67999aa55a3 175 }
slowness 0:d67999aa55a3 176
slowness 0:d67999aa55a3 177
slowness 0:d67999aa55a3 178 static void WriteChar(uint8_t *ch, Point_Typedef Point, DoublePoint_Typedef Colon, unsigned char Position)
slowness 0:d67999aa55a3 179 {
slowness 0:d67999aa55a3 180 uint32_t data = 0x00;
slowness 0:d67999aa55a3 181 /* To convert displayed character in segment in array digit */
slowness 0:d67999aa55a3 182 Convert(ch, (Point_Typedef)Point, (DoublePoint_Typedef)Colon);
slowness 0:d67999aa55a3 183
slowness 0:d67999aa55a3 184 switch (Position)
slowness 0:d67999aa55a3 185 {
slowness 0:d67999aa55a3 186 /* Position 1 on LCD (Digit1)*/
slowness 0:d67999aa55a3 187 case LCD_DIGIT_POSITION_1:
slowness 0:d67999aa55a3 188 data = ((Digit[0] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG1_SHIFT)
slowness 0:d67999aa55a3 189 | (((Digit[0] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG23_SHIFT);
slowness 0:d67999aa55a3 190 HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM0, LCD_DIGIT1_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 191
slowness 0:d67999aa55a3 192 data = ((Digit[1] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG1_SHIFT)
slowness 0:d67999aa55a3 193 | (((Digit[1] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG23_SHIFT);
slowness 0:d67999aa55a3 194 HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM1, LCD_DIGIT1_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 195
slowness 0:d67999aa55a3 196 data = ((Digit[2] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG1_SHIFT)
slowness 0:d67999aa55a3 197 | (((Digit[2] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG23_SHIFT);
slowness 0:d67999aa55a3 198 HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM2, LCD_DIGIT1_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 199
slowness 0:d67999aa55a3 200 data = ((Digit[3] & 0x1) << LCD_SEG0_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG1_SHIFT)
slowness 0:d67999aa55a3 201 | (((Digit[3] & 0x4) >> 2) << LCD_SEG22_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG23_SHIFT);
slowness 0:d67999aa55a3 202 HAL_LCD_Write(&LCDHandle, LCD_DIGIT1_COM3, LCD_DIGIT1_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 203 break;
slowness 0:d67999aa55a3 204
slowness 0:d67999aa55a3 205 /* Position 2 on LCD (Digit2)*/
slowness 0:d67999aa55a3 206 case LCD_DIGIT_POSITION_2:
slowness 0:d67999aa55a3 207 data = ((Digit[0] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG3_SHIFT)
slowness 0:d67999aa55a3 208 | (((Digit[0] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG21_SHIFT);
slowness 0:d67999aa55a3 209 HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM0, LCD_DIGIT2_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 210
slowness 0:d67999aa55a3 211 data = ((Digit[1] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG3_SHIFT)
slowness 0:d67999aa55a3 212 | (((Digit[1] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG21_SHIFT);
slowness 0:d67999aa55a3 213 HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM1, LCD_DIGIT2_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 214
slowness 0:d67999aa55a3 215 data = ((Digit[2] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG3_SHIFT)
slowness 0:d67999aa55a3 216 | (((Digit[2] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG21_SHIFT);
slowness 0:d67999aa55a3 217 HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM2, LCD_DIGIT2_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 218
slowness 0:d67999aa55a3 219 data = ((Digit[3] & 0x1) << LCD_SEG2_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG3_SHIFT)
slowness 0:d67999aa55a3 220 | (((Digit[3] & 0x4) >> 2) << LCD_SEG20_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG21_SHIFT);
slowness 0:d67999aa55a3 221 HAL_LCD_Write(&LCDHandle, LCD_DIGIT2_COM3, LCD_DIGIT2_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 222 break;
slowness 0:d67999aa55a3 223
slowness 0:d67999aa55a3 224 /* Position 3 on LCD (Digit3)*/
slowness 0:d67999aa55a3 225 case LCD_DIGIT_POSITION_3:
slowness 0:d67999aa55a3 226 data = ((Digit[0] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG5_SHIFT)
slowness 0:d67999aa55a3 227 | (((Digit[0] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG19_SHIFT);
slowness 0:d67999aa55a3 228 HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM0, LCD_DIGIT3_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 229
slowness 0:d67999aa55a3 230 data = ((Digit[1] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG5_SHIFT)
slowness 0:d67999aa55a3 231 | (((Digit[1] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG19_SHIFT);
slowness 0:d67999aa55a3 232 HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM1, LCD_DIGIT3_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 233
slowness 0:d67999aa55a3 234 data = ((Digit[2] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG5_SHIFT)
slowness 0:d67999aa55a3 235 | (((Digit[2] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG19_SHIFT);
slowness 0:d67999aa55a3 236 HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM2, LCD_DIGIT3_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 237
slowness 0:d67999aa55a3 238 data = ((Digit[3] & 0x1) << LCD_SEG4_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG5_SHIFT)
slowness 0:d67999aa55a3 239 | (((Digit[3] & 0x4) >> 2) << LCD_SEG18_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG19_SHIFT);
slowness 0:d67999aa55a3 240 HAL_LCD_Write(&LCDHandle, LCD_DIGIT3_COM3, LCD_DIGIT3_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 241 break;
slowness 0:d67999aa55a3 242
slowness 0:d67999aa55a3 243 /* Position 4 on LCD (Digit4)*/
slowness 0:d67999aa55a3 244 case LCD_DIGIT_POSITION_4:
slowness 0:d67999aa55a3 245 data = ((Digit[0] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG17_SHIFT);
slowness 0:d67999aa55a3 246 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM0, LCD_DIGIT4_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 247
slowness 0:d67999aa55a3 248 data = (((Digit[0] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[0] & 0x4) >> 2) << LCD_SEG16_SHIFT);
slowness 0:d67999aa55a3 249 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM0_1, LCD_DIGIT4_COM0_1_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 250
slowness 0:d67999aa55a3 251 data = ((Digit[1] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG17_SHIFT);
slowness 0:d67999aa55a3 252 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM1, LCD_DIGIT4_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 253
slowness 0:d67999aa55a3 254 data = (((Digit[1] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[1] & 0x4) >> 2) << LCD_SEG16_SHIFT);
slowness 0:d67999aa55a3 255 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM1_1, LCD_DIGIT4_COM1_1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 256
slowness 0:d67999aa55a3 257 data = ((Digit[2] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG17_SHIFT);
slowness 0:d67999aa55a3 258 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM2, LCD_DIGIT4_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 259
slowness 0:d67999aa55a3 260 data = (((Digit[2] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[2] & 0x4) >> 2) << LCD_SEG16_SHIFT);
slowness 0:d67999aa55a3 261 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM2_1, LCD_DIGIT4_COM2_1_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 262
slowness 0:d67999aa55a3 263 data = ((Digit[3] & 0x1) << LCD_SEG6_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG17_SHIFT);
slowness 0:d67999aa55a3 264 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM3, LCD_DIGIT4_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 265
slowness 0:d67999aa55a3 266 data = (((Digit[3] & 0x2) >> 1) << LCD_SEG7_SHIFT) | (((Digit[3] & 0x4) >> 2) << LCD_SEG16_SHIFT);
slowness 0:d67999aa55a3 267 HAL_LCD_Write(&LCDHandle, LCD_DIGIT4_COM3_1, LCD_DIGIT4_COM3_1_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 268 break;
slowness 0:d67999aa55a3 269
slowness 0:d67999aa55a3 270 /* Position 5 on LCD (Digit5)*/
slowness 0:d67999aa55a3 271 case LCD_DIGIT_POSITION_5:
slowness 0:d67999aa55a3 272 data = (((Digit[0] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[0] & 0x4) >> 2) << LCD_SEG14_SHIFT);
slowness 0:d67999aa55a3 273 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM0, LCD_DIGIT5_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 274
slowness 0:d67999aa55a3 275 data = ((Digit[0] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG15_SHIFT);
slowness 0:d67999aa55a3 276 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM0_1, LCD_DIGIT5_COM0_1_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 277
slowness 0:d67999aa55a3 278 data = (((Digit[1] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[1] & 0x4) >> 2) << LCD_SEG14_SHIFT);
slowness 0:d67999aa55a3 279 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM1, LCD_DIGIT5_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 280
slowness 0:d67999aa55a3 281 data = ((Digit[1] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG15_SHIFT);
slowness 0:d67999aa55a3 282 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM1_1, LCD_DIGIT5_COM1_1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 283
slowness 0:d67999aa55a3 284 data = (((Digit[2] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[2] & 0x4) >> 2) << LCD_SEG14_SHIFT);
slowness 0:d67999aa55a3 285 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM2, LCD_DIGIT5_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 286
slowness 0:d67999aa55a3 287 data = ((Digit[2] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG15_SHIFT);
slowness 0:d67999aa55a3 288 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM2_1, LCD_DIGIT5_COM2_1_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 289
slowness 0:d67999aa55a3 290 data = (((Digit[3] & 0x2) >> 1) << LCD_SEG9_SHIFT) | (((Digit[3] & 0x4) >> 2) << LCD_SEG14_SHIFT);
slowness 0:d67999aa55a3 291 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM3, LCD_DIGIT5_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 292
slowness 0:d67999aa55a3 293 data = ((Digit[3] & 0x1) << LCD_SEG8_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG15_SHIFT);
slowness 0:d67999aa55a3 294 HAL_LCD_Write(&LCDHandle, LCD_DIGIT5_COM3_1, LCD_DIGIT5_COM3_1_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 295 break;
slowness 0:d67999aa55a3 296
slowness 0:d67999aa55a3 297 /* Position 6 on LCD (Digit6)*/
slowness 0:d67999aa55a3 298 case LCD_DIGIT_POSITION_6:
slowness 0:d67999aa55a3 299 data = ((Digit[0] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[0] & 0x2) >> 1) << LCD_SEG11_SHIFT)
slowness 0:d67999aa55a3 300 | (((Digit[0] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[0] & 0x8) >> 3) << LCD_SEG13_SHIFT);
slowness 0:d67999aa55a3 301 HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM0, LCD_DIGIT6_COM0_SEG_MASK, data); /* 1G 1B 1M 1E */
slowness 0:d67999aa55a3 302
slowness 0:d67999aa55a3 303 data = ((Digit[1] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[1] & 0x2) >> 1) << LCD_SEG11_SHIFT)
slowness 0:d67999aa55a3 304 | (((Digit[1] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[1] & 0x8) >> 3) << LCD_SEG13_SHIFT);
slowness 0:d67999aa55a3 305 HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM1, LCD_DIGIT6_COM1_SEG_MASK, data) ; /* 1F 1A 1C 1D */
slowness 0:d67999aa55a3 306
slowness 0:d67999aa55a3 307 data = ((Digit[2] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[2] & 0x2) >> 1) << LCD_SEG11_SHIFT)
slowness 0:d67999aa55a3 308 | (((Digit[2] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[2] & 0x8) >> 3) << LCD_SEG13_SHIFT);
slowness 0:d67999aa55a3 309 HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM2, LCD_DIGIT6_COM2_SEG_MASK, data) ; /* 1Q 1K 1Col 1P */
slowness 0:d67999aa55a3 310
slowness 0:d67999aa55a3 311 data = ((Digit[3] & 0x1) << LCD_SEG10_SHIFT) | (((Digit[3] & 0x2) >> 1) << LCD_SEG11_SHIFT)
slowness 0:d67999aa55a3 312 | (((Digit[3] & 0x4) >> 2) << LCD_SEG12_SHIFT) | (((Digit[3] & 0x8) >> 3) << LCD_SEG13_SHIFT);
slowness 0:d67999aa55a3 313 HAL_LCD_Write(&LCDHandle, LCD_DIGIT6_COM3, LCD_DIGIT6_COM3_SEG_MASK, data) ; /* 1H 1J 1DP 1N */
slowness 0:d67999aa55a3 314 break;
slowness 0:d67999aa55a3 315
slowness 0:d67999aa55a3 316 default:
slowness 0:d67999aa55a3 317 break;
slowness 0:d67999aa55a3 318 }
slowness 0:d67999aa55a3 319 }
slowness 0:d67999aa55a3 320
slowness 0:d67999aa55a3 321
slowness 0:d67999aa55a3 322 void BSP_LCD_GLASS_DisplayString_iut_cachan(uint8_t *ptr)
slowness 0:d67999aa55a3 323 {
slowness 0:d67999aa55a3 324 unsigned char position = 0;
slowness 0:d67999aa55a3 325
slowness 0:d67999aa55a3 326 /* Send the string character by character on lCD */
slowness 0:d67999aa55a3 327 while ((*ptr != 0) & (position <= LCD_DIGIT_POSITION_6))
slowness 0:d67999aa55a3 328 {
slowness 0:d67999aa55a3 329 /* Write one character on LCD */
slowness 0:d67999aa55a3 330 if(*(ptr+1)=='.')
slowness 0:d67999aa55a3 331 {
slowness 0:d67999aa55a3 332 if(*(ptr+2)==':')
slowness 0:d67999aa55a3 333 {
slowness 0:d67999aa55a3 334 WriteChar(ptr, POINT_ON, DOUBLEPOINT_ON, position);
slowness 0:d67999aa55a3 335 ptr=ptr+3;
slowness 0:d67999aa55a3 336 }
slowness 0:d67999aa55a3 337 else
slowness 0:d67999aa55a3 338 {
slowness 0:d67999aa55a3 339 WriteChar(ptr, POINT_ON, DOUBLEPOINT_OFF, position);
slowness 0:d67999aa55a3 340 ptr=ptr+2;
slowness 0:d67999aa55a3 341 }
slowness 0:d67999aa55a3 342 }
slowness 0:d67999aa55a3 343 else if(*(ptr+1)==':')
slowness 0:d67999aa55a3 344 {
slowness 0:d67999aa55a3 345 if(*(ptr+2)=='.')
slowness 0:d67999aa55a3 346 {
slowness 0:d67999aa55a3 347 WriteChar(ptr, POINT_ON, DOUBLEPOINT_ON, position);
slowness 0:d67999aa55a3 348 ptr=ptr+3;
slowness 0:d67999aa55a3 349 }
slowness 0:d67999aa55a3 350 else
slowness 0:d67999aa55a3 351 {
slowness 0:d67999aa55a3 352 WriteChar(ptr, POINT_OFF, DOUBLEPOINT_ON, position);
slowness 0:d67999aa55a3 353 ptr=ptr+2;
slowness 0:d67999aa55a3 354 }
slowness 0:d67999aa55a3 355 }
slowness 0:d67999aa55a3 356 else
slowness 0:d67999aa55a3 357 {
slowness 0:d67999aa55a3 358 WriteChar(ptr, POINT_OFF, DOUBLEPOINT_OFF, position);
slowness 0:d67999aa55a3 359 /* Point on the next character */
slowness 0:d67999aa55a3 360 ptr++;
slowness 0:d67999aa55a3 361 }
slowness 0:d67999aa55a3 362 /* Increment the character counter */
slowness 0:d67999aa55a3 363 position++;
slowness 0:d67999aa55a3 364 }
slowness 0:d67999aa55a3 365 /* Update the LCD display */
slowness 0:d67999aa55a3 366 BSP_LCD_GLASS_SetBar(Global_Bar_Value);
slowness 0:d67999aa55a3 367 HAL_LCD_UpdateDisplayRequest(&LCDHandle);
slowness 0:d67999aa55a3 368
slowness 0:d67999aa55a3 369 }
slowness 0:d67999aa55a3 370
slowness 0:d67999aa55a3 371 // Constructor
slowness 0:d67999aa55a3 372 IHM_L476::IHM_L476()
slowness 0:d67999aa55a3 373 {
slowness 0:d67999aa55a3 374 BSP_LCD_GLASS_Init();
slowness 0:d67999aa55a3 375 }
slowness 0:d67999aa55a3 376
slowness 0:d67999aa55a3 377 // Destructor
slowness 0:d67999aa55a3 378 IHM_L476::~IHM_L476()
slowness 0:d67999aa55a3 379 {
slowness 0:d67999aa55a3 380 BSP_LCD_GLASS_DeInit();
slowness 0:d67999aa55a3 381 }
slowness 0:d67999aa55a3 382
slowness 0:d67999aa55a3 383 char stemp[64];
slowness 0:d67999aa55a3 384
slowness 0:d67999aa55a3 385 void IHM_L476::LCD_printf(const char* format, ...)
slowness 0:d67999aa55a3 386 {
slowness 0:d67999aa55a3 387 uint8_t i=0,real_length=0;
slowness 0:d67999aa55a3 388 va_list arg;
slowness 0:d67999aa55a3 389 va_start(arg,format);
slowness 0:d67999aa55a3 390 vsprintf(stemp,format,arg);
slowness 0:d67999aa55a3 391 va_end(arg);
slowness 0:d67999aa55a3 392 while(stemp[i]!='\0')
slowness 0:d67999aa55a3 393 {
slowness 0:d67999aa55a3 394 if(((stemp[i]!='.')&&(stemp[i]!=':')))
slowness 0:d67999aa55a3 395 real_length++;
slowness 0:d67999aa55a3 396 i++;
slowness 0:d67999aa55a3 397 }
slowness 0:d67999aa55a3 398 if(real_length<7)
slowness 0:d67999aa55a3 399 {
slowness 0:d67999aa55a3 400 ticker_scrool.detach();
slowness 0:d67999aa55a3 401 BSP_LCD_GLASS_CLEAR_WITHOUT_BAR();
slowness 0:d67999aa55a3 402 BSP_LCD_GLASS_DisplayString_iut_cachan((uint8_t*)stemp);
slowness 0:d67999aa55a3 403 }
slowness 0:d67999aa55a3 404 else
slowness 0:d67999aa55a3 405 {
slowness 0:d67999aa55a3 406 stemp[i]=255;
slowness 0:d67999aa55a3 407 stemp[i+1]='\0';
slowness 0:d67999aa55a3 408 real_length++;
slowness 0:d67999aa55a3 409 BSP_LCD_GLASS_ScrollSentence_iut_cachan((uint8_t*)stemp, real_length, 1, 200);
slowness 0:d67999aa55a3 410
slowness 0:d67999aa55a3 411 }
slowness 0:d67999aa55a3 412 }
slowness 0:d67999aa55a3 413
slowness 0:d67999aa55a3 414 uint8_t* ptr1;
slowness 0:d67999aa55a3 415 uint8_t str[6] = "";
slowness 0:d67999aa55a3 416 uint8_t sizestr = 0;
slowness 0:d67999aa55a3 417
slowness 0:d67999aa55a3 418 void Decalage_sentence(void)
slowness 0:d67999aa55a3 419 {
slowness 0:d67999aa55a3 420 static uint8_t nbrchar=0;
slowness 0:d67999aa55a3 421
slowness 0:d67999aa55a3 422 *(str) =* (ptr1+((nbrchar+1)%sizestr));
slowness 0:d67999aa55a3 423 *(str+1) =* (ptr1+((nbrchar+2)%sizestr));
slowness 0:d67999aa55a3 424 *(str+2) =* (ptr1+((nbrchar+3)%sizestr));
slowness 0:d67999aa55a3 425 *(str+3) =* (ptr1+((nbrchar+4)%sizestr));
slowness 0:d67999aa55a3 426 *(str+4) =* (ptr1+((nbrchar+5)%sizestr));
slowness 0:d67999aa55a3 427 *(str+5) =* (ptr1+((nbrchar+6)%sizestr));
slowness 0:d67999aa55a3 428 nbrchar++;
slowness 0:d67999aa55a3 429 BSP_LCD_GLASS_CLEAR_WITHOUT_BAR();
slowness 0:d67999aa55a3 430 BSP_LCD_GLASS_DisplayString_iut_cachan(str);
slowness 0:d67999aa55a3 431
slowness 0:d67999aa55a3 432 }
slowness 0:d67999aa55a3 433
slowness 0:d67999aa55a3 434 void BSP_LCD_GLASS_ScrollSentence_iut_cachan(uint8_t* ptr, uint8_t size, uint16_t nScroll, uint16_t ScrollSpeed)
slowness 0:d67999aa55a3 435 {
slowness 0:d67999aa55a3 436 ptr1 = ptr;
slowness 0:d67999aa55a3 437
slowness 0:d67999aa55a3 438 *(str) =* (ptr1);
slowness 0:d67999aa55a3 439 *(str+1) =* (ptr1+1);
slowness 0:d67999aa55a3 440 *(str+2) =* (ptr1+2);
slowness 0:d67999aa55a3 441 *(str+3) =* (ptr1+3);
slowness 0:d67999aa55a3 442 *(str+4) =* (ptr1+4);
slowness 0:d67999aa55a3 443 *(str+5) =* (ptr1+5);
slowness 0:d67999aa55a3 444 /* To calculate end of string */
slowness 0:d67999aa55a3 445 sizestr = size;
slowness 0:d67999aa55a3 446
slowness 0:d67999aa55a3 447
slowness 0:d67999aa55a3 448 /* BSP_LCD_GLASS_DisplayString(str);
slowness 0:d67999aa55a3 449 wait_ms(ScrollSpeed);*/
slowness 0:d67999aa55a3 450
slowness 0:d67999aa55a3 451 /* To shift the string for scrolling display*/
slowness 0:d67999aa55a3 452 BSP_LCD_GLASS_DisplayString_iut_cachan(str);
slowness 0:d67999aa55a3 453
slowness 0:d67999aa55a3 454 ticker_scrool.attach(&Decalage_sentence, (double)ScrollSpeed/1000.);
slowness 0:d67999aa55a3 455
slowness 0:d67999aa55a3 456 }
slowness 0:d67999aa55a3 457
slowness 0:d67999aa55a3 458 void IHM_L476::LCD_clear(void)
slowness 0:d67999aa55a3 459 {
slowness 0:d67999aa55a3 460 BSP_LCD_GLASS_CLEAR_WITHOUT_BAR();
slowness 0:d67999aa55a3 461 }
slowness 0:d67999aa55a3 462
slowness 0:d67999aa55a3 463 void IHM_L476::BAR_set(unsigned char valeur)
slowness 0:d67999aa55a3 464 {
slowness 0:d67999aa55a3 465 BSP_LCD_GLASS_SetBar(valeur);
slowness 0:d67999aa55a3 466 }