VFD modular clock firmware

Dependencies:   DipCortex-EEprom RTC flw mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers font_7seg.cpp Source File

font_7seg.cpp

00001 /*
00002  * VFD Modular Clock - mbed
00003  * (C) 2011-14 Akafugu Corporation
00004  *
00005  * This program is free software; you can redistribute it and/or modify it under the
00006  * terms of the GNU General Public License as published by the Free Software
00007  * Foundation; either version 2 of the License, or (at your option) any later
00008  * version.
00009  *
00010  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
00011  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
00012  * PARTICULAR PURPOSE.  See the GNU General Public License for more details.
00013  *
00014  */
00015 
00016 #include "mbed.h"
00017 
00018 uint8_t calculate_segments_7(uint8_t character);
00019 
00020 #define A   0
00021 #define B   1
00022 #define C   2
00023 #define D   3
00024 #define E   4
00025 #define F   5
00026 #define G   6
00027 #define DP  7
00028 
00029 uint8_t calculate_segments_7(uint8_t character)
00030 {
00031     uint8_t segments = 0;
00032     
00033     switch (character)
00034     {
00035         case 0:
00036             segments = 0;
00037             break;
00038         case '0':
00039         case 'O':
00040             segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
00041             break;
00042         case 1:
00043         case '1':
00044         case 'l':
00045             segments = (1<<B)|(1<<C);
00046             break;
00047         case 2:
00048         case '2':
00049             segments = (1<<A)|(1<<B)|(1<<D)|(1<<E)|(1<<G);
00050             break;
00051         case 3:
00052         case '3':
00053             segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<G);
00054             break;
00055         case 4:
00056         case '4':
00057             segments = (1<<B)|(1<<C)|(1<<F)|(1<<G);
00058             break;
00059         case 5:
00060         case '5':
00061         case 'S':
00062         case 's':
00063             segments = (1<<A)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
00064             break;
00065         case 6:
00066         case '6':
00067             segments = (1<<A)|(1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
00068             break;
00069         case 7:
00070         case '7':
00071             segments = (1<<A)|(1<<B)|(1<<C);
00072             break;
00073         case 8:
00074         case '8':
00075             segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
00076             break;
00077         case 9:
00078         case '9':
00079         case 'g':
00080             segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
00081             break;
00082         case 10:
00083         case 'A':
00084         case 'a':
00085             segments = (1<<A)|(1<<B)|(1<<C)|(1<<E)|(1<<F)|(1<<G);
00086             break;
00087         case 11:
00088         case 'B':
00089         case 'b':
00090             segments = (1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
00091             break;
00092         case 12:
00093         case 'C':
00094             segments = (1<<A)|(1<<D)|(1<<E)|(1<<F);
00095             break;
00096         case 'c':
00097             segments = (1<<D)|(1<<E)|(1<<G);
00098             break;
00099         case 13:
00100         case 'D':
00101         case 'd':
00102             segments = (1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<G);
00103             break;
00104         case 14:
00105         case 'E':
00106             segments = (1<<A)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
00107             break;
00108         case 'e':
00109             segments = (1<<A)|(1<<B)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
00110             break;
00111         case 15:
00112         case 'F':
00113         case 'f':
00114             segments = (1<<A)|(1<<E)|(1<<F)|(1<<G);
00115             break;
00116         case 'G':
00117             segments = (1<<A)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
00118             break;
00119         case 'H':
00120             segments = (1<<B)|(1<<C)|(1<<E)|(1<<F)|(1<<G);
00121             break;
00122         case 'h':
00123             segments = (1<<C)|(1<<E)|(1<<F)|(1<<G);
00124             break;
00125         case 'I':
00126             segments = (1<<B)|(1<<C);
00127             break;
00128         case 'i':
00129             segments = (1<<C);
00130             break;
00131         case 'J':
00132         case 'j':
00133             segments = (1<<B)|(1<<C)|(1<<D)|(1<<E);
00134             break;
00135         case 'K':
00136         case 'k':
00137             segments = (1<<E)|(1<<F)|(1<<G);
00138             break;
00139         case 'L':
00140             segments = (1<<D)|(1<<E)|(1<<F);
00141             break;
00142         case 'M':
00143         case 'm':
00144             segments = (1<<A)|(1<<C)|(1<<E)|(1<<G);
00145             break;
00146         case 'N':
00147         case 'n':
00148             segments = (1<<C)|(1<<E)|(1<<G);
00149             break;
00150         case 'o':
00151             segments = (1<<C)|(1<<D)|(1<<E)|(1<<G);
00152             break;
00153         case 'P':
00154         case 'p':
00155             segments = (1<<A)|(1<<B)|(1<<E)|(1<<F)|(1<<G);
00156             break;
00157         case 'Q':
00158         case 'q':
00159             segments = (1<<A)|(1<<B)|(1<<C)|(1<<F)|(1<<G);
00160             break;
00161         case 'R':
00162         case 'r':
00163             segments = (1<<E)|(1<<G);
00164             break;
00165         case 'T':
00166         case 't':
00167             segments = (1<<D)|(1<<E)|(1<<F)|(1<<G);
00168             break;
00169         case 'U':
00170             segments = (1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
00171             break;
00172         case 'u':
00173             segments = (1<<C)|(1<<D)|(1<<E);
00174             break;
00175         case 'V':
00176         case 'v':
00177             segments = (1<<C)|(1<<D)|(1<<E);
00178             break;
00179         case 'W':
00180         case 'w':
00181             segments = (1<<A)|(1<<C)|(1<<D)|(1<<E);
00182             break;
00183         case 'X':
00184         case 'x':
00185             segments = (1<<B)|(1<<C)|(1<<E)|(1<<F);
00186             break;
00187         case 'Y':
00188         case 'y':
00189             segments = (1<<B)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
00190             break;
00191         case 'Z':
00192         case 'z':
00193             segments = (1<<A)|(1<<D)|(1<<G);
00194             break;
00195         case '-':
00196             segments = (1<<G);
00197             break;
00198         case '"':
00199             segments = (1<<B)|(1<<F);
00200             break;
00201         case 0x27:  // "'"
00202             segments = (1<<B);
00203             break;
00204         case '_':
00205             segments = (1<<D);
00206             break;
00207         case ' ':
00208         default:
00209             segments = 0;
00210             break;
00211     }
00212     
00213     return segments;
00214 }