v3

Committer:
slowness
Date:
Thu Oct 31 16:39:52 2019 +0000
Revision:
0:244ca2910e55
ihm_L476 V3

Who changed what in which revision?

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