FireBirdLib - Topfield TMS PVR TAP Programming Library
VFD_SetDisplayDigit.c
Go to the documentation of this file.
1#include "FBLib_tmsvfd.h"
2
3void VFD_SetDisplayDigit(byte* DisplayBuffer, byte Character, DISPLAYSTYLE DisplayStyle, byte Digit)
4{
6
7 switch(DisplayStyle)
8 {
9 case VFD_7:
10 {
11 if(Digit < 4) DisplayBuffer[Digit] = VFD_TranslateSegments(Character, VFD_7);
12 break;
13 }
14
15 case VFD_14:
16 {
17 dword s = VFD_TranslateSegments(Character, VFD_14);
18
19 // 7 6 5 4 3 2 1 0
20 //01 1d 1e 1c 1l
21 //02 1m 1k 1g1 1g2 1b 1f 1j 1h
22 //03 1i 1a 2d 2e 2c 2l 2m 2k 2d<>2l
23 //04 2g1 2g2 2b 2f 2j 2h 2i 2a
24 //05 3d 3e 3c 3l 3m 3k 3g1
25 //06 3g2 3b 3f 3j 3h 3i 3a
26 //07 4d 4e 4c 4l 4m 4k
27 //08 4g1 4g2 4b 4f 4j 4h 4i 4a
28
29 switch(Digit)
30 {
31 //Source: m l k j i h g2 g1 f e d c b a
32 case 0:
33 {
34 DisplayBuffer[33] = (DisplayBuffer[33] & 0xf0) |
35 ((s >> 12) & 0x01) |
36 ((s >> 1) & 0x02) |
37 ((s >> 2) & 0x04) |
38 ( s & 0x08);
39
40 DisplayBuffer[34] = ((s >> 8) & 0x01) |
41 ((s >> 9) & 0x02) |
42 ((s >> 3) & 0x04) |
43 ((s << 2) & 0x08) |
44 ((s >> 3) & 0x10) |
45 ((s >> 1) & 0x20) |
46 ((s >> 5) & 0x40) |
47 ((s >> 6) & 0x80);
48
49 DisplayBuffer[35] = (DisplayBuffer[35] & 0x3f) |
50 ((s << 6) & 0x40) |
51 ((s >> 2) & 0x80);
52
53 break;
54 }
55
56 case 1:
57 {
58 DisplayBuffer[35] = (DisplayBuffer[35] & 0xc0) |
59 ((s >> 11) & 0x01) |
60 ((s >> 12) & 0x02) |
61 ((s >> 10) & 0x04) |
62 ((s << 1) & 0x08) |
63 ( s & 0x10) |
64 ((s << 2) & 0x20);
65
66 DisplayBuffer[36] = ( s & 0x01) |
67 ((s >> 8) & 0x02) |
68 ((s >> 6) & 0x04) |
69 ((s >> 7) & 0x08) |
70 ((s >> 1) & 0x10) |
71 ((s << 4) & 0x20) |
72 ((s >> 1) & 0x40) |
73 ((s << 1) & 0x80);
74
75 break;
76 }
77
78 case 2:
79 {
80 DisplayBuffer[37] = (DisplayBuffer[37] & 0x80) |
81 ((s >> 6) & 0x01) |
82 ((s >> 10) & 0x02) |
83 ((s >> 11) & 0x04) |
84 ((s >> 9) & 0x08) |
85 ((s << 2) & 0x10) |
86 ((s << 1) & 0x20) |
87 ((s << 3) & 0x40);
88
89 DisplayBuffer[38] = (DisplayBuffer[6] & 0x01) |
90 ((s << 1) & 0x02) |
91 ((s >> 7) & 0x04) |
92 ((s >> 5) & 0x08) |
93 ((s >> 6) & 0x10) |
94 ( s & 0x20) |
95 ((s << 5) & 0x40) |
96 ( s & 0x80);
97
98 break;
99 }
100
101 case 3:
102 {
103 DisplayBuffer[39] = (DisplayBuffer[39] & 0xc0) |
104 ((s >> 11) & 0x01) |
105 ((s >> 12) & 0x02) |
106 ((s >> 10) & 0x04) |
107 ((s << 1) & 0x08) |
108 ( s & 0x10) |
109 ((s << 2) & 0x20);
110
111 DisplayBuffer[40] = ( s & 0x01) |
112 ((s >> 8) & 0x02) |
113 ((s >> 6) & 0x04) |
114 ((s >> 7) & 0x08) |
115 ((s >> 1) & 0x10) |
116 ((s << 4) & 0x20) |
117 ((s >> 1) & 0x40) |
118 ((s << 1) & 0x80);
119
120 break;
121 }
122
123 default:
124 ;
125
126
127 }
128
129 break;
130 }
131
132 case VFD_17:
133 {
134
135 dword s = VFD_TranslateSegments(Character, VFD_17);
136
137 //Source: m l k j i h g3 g2 g1 f e d2 d1 c b a2 a1
138 switch(Digit)
139 {
140 case 0:
141 {
142 DisplayBuffer[1] = (DisplayBuffer[1] & 0xd5) |
143 ((s >> 5) & 0x02) |
144 ((s >> 2) & 0x08) |
145 ((s << 1) & 0x20);
146
147 DisplayBuffer[2] = (DisplayBuffer[2] & 0x55) |
148 ((s >> 13) & 0x02) |
149 ((s >> 13) & 0x08) |
150 ((s >> 10) & 0x20) |
151 ((s << 4) & 0x80);
152
153 DisplayBuffer[3] = (DisplayBuffer[3] & 0x55) |
154 ((s >> 1) & 0x02) |
155 ((s >> 7) & 0x08) |
156 ((s >> 4) & 0x20) |
157 ((s >> 1) & 0x80);
158
159 DisplayBuffer[4] = (DisplayBuffer[4] & 0x55) |
160 ((s >> 11) & 0x02) |
161 ((s >> 8) & 0x08) |
162 ((s >> 8) & 0x20) |
163 ( s & 0x80);
164
165 DisplayBuffer[5] = (DisplayBuffer[5] & 0x55) |
166 ((s << 4) & 0x20) |
167 ((s << 7) & 0x80);
168 break;
169 }
170
171 case 1:
172 {
173 DisplayBuffer[17] = (DisplayBuffer[17] & 0xd5) |
174 ((s >> 5) & 0x02) |
175 ((s >> 2) & 0x08) |
176 ((s << 1) & 0x20);
177
178 DisplayBuffer[18] = (DisplayBuffer[18] & 0x55) |
179 ((s >> 13) & 0x02) |
180 ((s >> 13) & 0x08) |
181 ((s >> 10) & 0x20) |
182 ((s << 4) & 0x80);
183
184 DisplayBuffer[19] = (DisplayBuffer[19] & 0x55) |
185 ((s >> 1) & 0x02) |
186 ((s >> 7) & 0x08) |
187 ((s >> 4) & 0x20) |
188 ((s >> 1) & 0x80);
189
190 DisplayBuffer[20] = (DisplayBuffer[20] & 0x55) |
191 ((s >> 11) & 0x02) |
192 ((s >> 8) & 0x08) |
193 ((s >> 8) & 0x20) |
194 ( s & 0x80);
195
196 DisplayBuffer[21] = (DisplayBuffer[21] & 0x55) |
197 ((s << 4) & 0x20) |
198 ((s << 7) & 0x80);
199 break;
200 }
201
202 case 2:
203 {
204 DisplayBuffer[17] = (DisplayBuffer[17] & 0xea) |
205 ((s >> 6) & 0x01) |
206 ((s >> 3) & 0x04) |
207 ( s & 0x10);
208
209 DisplayBuffer[18] = (DisplayBuffer[18] & 0xaa) |
210 ((s >> 14) & 0x01) |
211 ((s >> 14) & 0x04) |
212 ((s >> 11) & 0x10) |
213 ((s << 3) & 0x40);
214
215 DisplayBuffer[19] = (DisplayBuffer[19] & 0xaa) |
216 ((s >> 2) & 0x01) |
217 ((s >> 8) & 0x04) |
218 ((s >> 5) & 0x10) |
219 ((s >> 2) & 0x40);
220
221 DisplayBuffer[20] = (DisplayBuffer[20] & 0xaa) |
222 ((s >> 12) & 0x01) |
223 ((s >> 9) & 0x04) |
224 ((s >> 9) & 0x10) |
225 ((s >> 1) & 0x40);
226
227 DisplayBuffer[21] = (DisplayBuffer[21] & 0xaf) |
228 ((s << 3) & 0x10) |
229 ((s << 6) & 0x40);
230 break;
231 }
232
233 case 3:
234 {
235 DisplayBuffer[5] = (DisplayBuffer[5] & 0xf5) |
236 ((s >> 4) & 0x02) |
237 ((s >> 1) & 0x08);
238
239 DisplayBuffer[6] = (DisplayBuffer[6] & 0x55) |
240 ((s >> 15) & 0x02) |
241 ((s >> 12) & 0x08) |
242 ((s << 2) & 0x20) |
243 ((s << 1) & 0x80);
244
245 DisplayBuffer[7] = (DisplayBuffer[7] & 0x55) |
246 ((s >> 9) & 0x02) |
247 ((s >> 6) & 0x08) |
248 ((s >> 3) & 0x20) |
249 ((s >> 7) & 0x80);
250
251 DisplayBuffer[8] = (DisplayBuffer[8] & 0x55) |
252 ((s >> 10) & 0x02) |
253 ((s >> 10) & 0x08) |
254 ((s >> 2) & 0x20) |
255 ((s << 5) & 0x80);
256
257 DisplayBuffer[9] = (DisplayBuffer[9] & 0x57) |
258 ((s << 2) & 0x08) |
259 ((s << 5) & 0x20) |
260 ((s >> 5) & 0x80);
261 break;
262 }
263
264 case 4:
265 {
266 DisplayBuffer[5] = (DisplayBuffer[5] & 0xfa) |
267 ((s >> 5) & 0x01) |
268 ((s >> 2) & 0x04);
269
270 DisplayBuffer[6] = (DisplayBuffer[6] & 0xaa) |
271 ((s >> 16) & 0x01) |
272 ((s >> 13) & 0x04) |
273 ((s << 1) & 0x10) |
274 ( s & 0x40);
275
276 DisplayBuffer[7] = (DisplayBuffer[7] & 0xaa) |
277 ((s >> 10) & 0x01) |
278 ((s >> 7) & 0x04) |
279 ((s >> 4) & 0x10) |
280 ((s >> 8) & 0x40);
281
282 DisplayBuffer[8] = (DisplayBuffer[8] & 0xaa) |
283 ((s >> 11) & 0x01) |
284 ((s >> 11) & 0x04) |
285 ((s >> 3) & 0x10) |
286 ((s << 4) & 0x40);
287
288 DisplayBuffer[9] = (DisplayBuffer[9] & 0xab) |
289 ((s << 1) & 0x04) |
290 ((s << 4) & 0x10) |
291 ((s >> 6) & 0x40);
292
293 break;
294 }
295
296 case 5:
297 {
298 DisplayBuffer[21] = (DisplayBuffer[21] & 0xf5) |
299 ((s >> 4) & 0x02) |
300 ((s >> 1) & 0x08);
301
302 DisplayBuffer[22] = (DisplayBuffer[22] & 0x55) |
303 ((s >> 15) & 0x02) |
304 ((s >> 12) & 0x08) |
305 ((s << 2) & 0x20) |
306 ((s << 1) & 0x80);
307
308 DisplayBuffer[23] = (DisplayBuffer[23] & 0x55) |
309 ((s >> 9) & 0x02) |
310 ((s >> 6) & 0x08) |
311 ((s >> 3) & 0x20) |
312 ((s >> 7) & 0x80);
313
314 DisplayBuffer[24] = (DisplayBuffer[24] & 0x55) |
315 ((s >> 10) & 0x02) |
316 ((s >> 10) & 0x08) |
317 ((s >> 2) & 0x20) |
318 ((s << 5) & 0x80);
319
320 DisplayBuffer[25] = (DisplayBuffer[25] & 0x57) |
321 ((s << 2) & 0x08) |
322 ((s << 5) & 0x20) |
323 ((s >> 5) & 0x80);
324 break;
325 }
326
327 case 6:
328 {
329 DisplayBuffer[21] = (DisplayBuffer[21] & 0xfa) |
330 ((s >> 5) & 0x01) |
331 ((s >> 2) & 0x04);
332
333 DisplayBuffer[22] = (DisplayBuffer[22] & 0xaa) |
334 ((s >> 16) & 0x01) |
335 ((s >> 13) & 0x04) |
336 ((s << 1) & 0x10) |
337 ( s & 0x40);
338
339 DisplayBuffer[23] = (DisplayBuffer[23] & 0xaa) |
340 ((s >> 10) & 0x01) |
341 ((s >> 7) & 0x04) |
342 ((s >> 4) & 0x10) |
343 ((s >> 8) & 0x40);
344
345 DisplayBuffer[24] = (DisplayBuffer[24] & 0xaa) |
346 ((s >> 11) & 0x01) |
347 ((s >> 11) & 0x04) |
348 ((s >> 3) & 0x10) |
349 ((s << 4) & 0x40);
350
351 DisplayBuffer[25] = (DisplayBuffer[25] & 0xab) |
352 ((s << 1) & 0x04) |
353 ((s << 4) & 0x10) |
354 ((s >> 6) & 0x40);
355 break;
356 }
357
358 case 7:
359 {
360 DisplayBuffer[1] = (DisplayBuffer[1] & 0xea) |
361 ((s >> 6) & 0x01) |
362 ((s >> 3) & 0x04) |
363 ( s & 0x10);
364
365 DisplayBuffer[2] = (DisplayBuffer[2] & 0xaa) |
366 ((s >> 14) & 0x01) |
367 ((s >> 14) & 0x04) |
368 ((s >> 11) & 0x10) |
369 ((s << 3) & 0x40);
370
371 DisplayBuffer[3] = (DisplayBuffer[3] & 0xaa) |
372 ((s >> 2) & 0x01) |
373 ((s >> 8) & 0x04) |
374 ((s >> 5) & 0x10) |
375 ((s >> 2) & 0x40);
376
377 DisplayBuffer[4] = (DisplayBuffer[4] & 0xaa) |
378 ((s >> 12) & 0x01) |
379 ((s >> 9) & 0x04) |
380 ((s >> 9) & 0x10) |
381 ((s >> 1) & 0x40);
382
383 DisplayBuffer[5] = (DisplayBuffer[5] & 0xaf) |
384 ((s << 3) & 0x10) |
385 ((s << 6) & 0x40);
386
387 break;
388 }
389 }
390
391 break;
392 }
393 }
394
395 TRACEEXIT();
396}
DISPLAYSTYLE
Definition: FBLib_tmsvfd.h:7
@ VFD_17
Definition: FBLib_tmsvfd.h:10
@ VFD_14
Definition: FBLib_tmsvfd.h:9
@ VFD_7
Definition: FBLib_tmsvfd.h:8
dword VFD_TranslateSegments(byte Character, DISPLAYSTYLE DisplayStyle)
void VFD_SetDisplayDigit(byte *DisplayBuffer, byte Character, DISPLAYSTYLE DisplayStyle, byte Digit)
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243