VFD modular clock firmware

Dependencies:   DipCortex-EEprom RTC flw mbed

Committer:
Backstr?m
Date:
Tue Feb 24 23:01:40 2015 +0900
Revision:
12:dfb422107412
Parent:
0:f6e68b4ce169
Added tag v1.0.2 for changeset 34b344fdec98

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Backstrom 0:f6e68b4ce169 1 /*
Backstrom 0:f6e68b4ce169 2 * VFD Modular Clock - mbed
Backstrom 0:f6e68b4ce169 3 * (C) 2011-14 Akafugu Corporation
Backstrom 0:f6e68b4ce169 4 *
Backstrom 0:f6e68b4ce169 5 * This program is free software; you can redistribute it and/or modify it under the
Backstrom 0:f6e68b4ce169 6 * terms of the GNU General Public License as published by the Free Software
Backstrom 0:f6e68b4ce169 7 * Foundation; either version 2 of the License, or (at your option) any later
Backstrom 0:f6e68b4ce169 8 * version.
Backstrom 0:f6e68b4ce169 9 *
Backstrom 0:f6e68b4ce169 10 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
Backstrom 0:f6e68b4ce169 11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
Backstrom 0:f6e68b4ce169 12 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
Backstrom 0:f6e68b4ce169 13 *
Backstrom 0:f6e68b4ce169 14 */
Backstrom 0:f6e68b4ce169 15
Backstrom 0:f6e68b4ce169 16 #include "mbed.h"
Backstrom 0:f6e68b4ce169 17
Backstrom 0:f6e68b4ce169 18 uint8_t calculate_segments_7(uint8_t character);
Backstrom 0:f6e68b4ce169 19
Backstrom 0:f6e68b4ce169 20 #define A 0
Backstrom 0:f6e68b4ce169 21 #define B 1
Backstrom 0:f6e68b4ce169 22 #define C 2
Backstrom 0:f6e68b4ce169 23 #define D 3
Backstrom 0:f6e68b4ce169 24 #define E 4
Backstrom 0:f6e68b4ce169 25 #define F 5
Backstrom 0:f6e68b4ce169 26 #define G 6
Backstrom 0:f6e68b4ce169 27 #define DP 7
Backstrom 0:f6e68b4ce169 28
Backstrom 0:f6e68b4ce169 29 uint8_t calculate_segments_7(uint8_t character)
Backstrom 0:f6e68b4ce169 30 {
Backstrom 0:f6e68b4ce169 31 uint8_t segments = 0;
Backstrom 0:f6e68b4ce169 32
Backstrom 0:f6e68b4ce169 33 switch (character)
Backstrom 0:f6e68b4ce169 34 {
Backstrom 0:f6e68b4ce169 35 case 0:
Backstrom 0:f6e68b4ce169 36 segments = 0;
Backstrom 0:f6e68b4ce169 37 break;
Backstrom 0:f6e68b4ce169 38 case '0':
Backstrom 0:f6e68b4ce169 39 case 'O':
Backstrom 0:f6e68b4ce169 40 segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 41 break;
Backstrom 0:f6e68b4ce169 42 case 1:
Backstrom 0:f6e68b4ce169 43 case '1':
Backstrom 0:f6e68b4ce169 44 case 'l':
Backstrom 0:f6e68b4ce169 45 segments = (1<<B)|(1<<C);
Backstrom 0:f6e68b4ce169 46 break;
Backstrom 0:f6e68b4ce169 47 case 2:
Backstrom 0:f6e68b4ce169 48 case '2':
Backstrom 0:f6e68b4ce169 49 segments = (1<<A)|(1<<B)|(1<<D)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 50 break;
Backstrom 0:f6e68b4ce169 51 case 3:
Backstrom 0:f6e68b4ce169 52 case '3':
Backstrom 0:f6e68b4ce169 53 segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<G);
Backstrom 0:f6e68b4ce169 54 break;
Backstrom 0:f6e68b4ce169 55 case 4:
Backstrom 0:f6e68b4ce169 56 case '4':
Backstrom 0:f6e68b4ce169 57 segments = (1<<B)|(1<<C)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 58 break;
Backstrom 0:f6e68b4ce169 59 case 5:
Backstrom 0:f6e68b4ce169 60 case '5':
Backstrom 0:f6e68b4ce169 61 case 'S':
Backstrom 0:f6e68b4ce169 62 case 's':
Backstrom 0:f6e68b4ce169 63 segments = (1<<A)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 64 break;
Backstrom 0:f6e68b4ce169 65 case 6:
Backstrom 0:f6e68b4ce169 66 case '6':
Backstrom 0:f6e68b4ce169 67 segments = (1<<A)|(1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 68 break;
Backstrom 0:f6e68b4ce169 69 case 7:
Backstrom 0:f6e68b4ce169 70 case '7':
Backstrom 0:f6e68b4ce169 71 segments = (1<<A)|(1<<B)|(1<<C);
Backstrom 0:f6e68b4ce169 72 break;
Backstrom 0:f6e68b4ce169 73 case 8:
Backstrom 0:f6e68b4ce169 74 case '8':
Backstrom 0:f6e68b4ce169 75 segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 76 break;
Backstrom 0:f6e68b4ce169 77 case 9:
Backstrom 0:f6e68b4ce169 78 case '9':
Backstrom 0:f6e68b4ce169 79 case 'g':
Backstrom 0:f6e68b4ce169 80 segments = (1<<A)|(1<<B)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 81 break;
Backstrom 0:f6e68b4ce169 82 case 10:
Backstrom 0:f6e68b4ce169 83 case 'A':
Backstrom 0:f6e68b4ce169 84 case 'a':
Backstrom 0:f6e68b4ce169 85 segments = (1<<A)|(1<<B)|(1<<C)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 86 break;
Backstrom 0:f6e68b4ce169 87 case 11:
Backstrom 0:f6e68b4ce169 88 case 'B':
Backstrom 0:f6e68b4ce169 89 case 'b':
Backstrom 0:f6e68b4ce169 90 segments = (1<<C)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 91 break;
Backstrom 0:f6e68b4ce169 92 case 12:
Backstrom 0:f6e68b4ce169 93 case 'C':
Backstrom 0:f6e68b4ce169 94 segments = (1<<A)|(1<<D)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 95 break;
Backstrom 0:f6e68b4ce169 96 case 'c':
Backstrom 0:f6e68b4ce169 97 segments = (1<<D)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 98 break;
Backstrom 0:f6e68b4ce169 99 case 13:
Backstrom 0:f6e68b4ce169 100 case 'D':
Backstrom 0:f6e68b4ce169 101 case 'd':
Backstrom 0:f6e68b4ce169 102 segments = (1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 103 break;
Backstrom 0:f6e68b4ce169 104 case 14:
Backstrom 0:f6e68b4ce169 105 case 'E':
Backstrom 0:f6e68b4ce169 106 segments = (1<<A)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 107 break;
Backstrom 0:f6e68b4ce169 108 case 'e':
Backstrom 0:f6e68b4ce169 109 segments = (1<<A)|(1<<B)|(1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 110 break;
Backstrom 0:f6e68b4ce169 111 case 15:
Backstrom 0:f6e68b4ce169 112 case 'F':
Backstrom 0:f6e68b4ce169 113 case 'f':
Backstrom 0:f6e68b4ce169 114 segments = (1<<A)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 115 break;
Backstrom 0:f6e68b4ce169 116 case 'G':
Backstrom 0:f6e68b4ce169 117 segments = (1<<A)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 118 break;
Backstrom 0:f6e68b4ce169 119 case 'H':
Backstrom 0:f6e68b4ce169 120 segments = (1<<B)|(1<<C)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 121 break;
Backstrom 0:f6e68b4ce169 122 case 'h':
Backstrom 0:f6e68b4ce169 123 segments = (1<<C)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 124 break;
Backstrom 0:f6e68b4ce169 125 case 'I':
Backstrom 0:f6e68b4ce169 126 segments = (1<<B)|(1<<C);
Backstrom 0:f6e68b4ce169 127 break;
Backstrom 0:f6e68b4ce169 128 case 'i':
Backstrom 0:f6e68b4ce169 129 segments = (1<<C);
Backstrom 0:f6e68b4ce169 130 break;
Backstrom 0:f6e68b4ce169 131 case 'J':
Backstrom 0:f6e68b4ce169 132 case 'j':
Backstrom 0:f6e68b4ce169 133 segments = (1<<B)|(1<<C)|(1<<D)|(1<<E);
Backstrom 0:f6e68b4ce169 134 break;
Backstrom 0:f6e68b4ce169 135 case 'K':
Backstrom 0:f6e68b4ce169 136 case 'k':
Backstrom 0:f6e68b4ce169 137 segments = (1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 138 break;
Backstrom 0:f6e68b4ce169 139 case 'L':
Backstrom 0:f6e68b4ce169 140 segments = (1<<D)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 141 break;
Backstrom 0:f6e68b4ce169 142 case 'M':
Backstrom 0:f6e68b4ce169 143 case 'm':
Backstrom 0:f6e68b4ce169 144 segments = (1<<A)|(1<<C)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 145 break;
Backstrom 0:f6e68b4ce169 146 case 'N':
Backstrom 0:f6e68b4ce169 147 case 'n':
Backstrom 0:f6e68b4ce169 148 segments = (1<<C)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 149 break;
Backstrom 0:f6e68b4ce169 150 case 'o':
Backstrom 0:f6e68b4ce169 151 segments = (1<<C)|(1<<D)|(1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 152 break;
Backstrom 0:f6e68b4ce169 153 case 'P':
Backstrom 0:f6e68b4ce169 154 case 'p':
Backstrom 0:f6e68b4ce169 155 segments = (1<<A)|(1<<B)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 156 break;
Backstrom 0:f6e68b4ce169 157 case 'Q':
Backstrom 0:f6e68b4ce169 158 case 'q':
Backstrom 0:f6e68b4ce169 159 segments = (1<<A)|(1<<B)|(1<<C)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 160 break;
Backstrom 0:f6e68b4ce169 161 case 'R':
Backstrom 0:f6e68b4ce169 162 case 'r':
Backstrom 0:f6e68b4ce169 163 segments = (1<<E)|(1<<G);
Backstrom 0:f6e68b4ce169 164 break;
Backstrom 0:f6e68b4ce169 165 case 'T':
Backstrom 0:f6e68b4ce169 166 case 't':
Backstrom 0:f6e68b4ce169 167 segments = (1<<D)|(1<<E)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 168 break;
Backstrom 0:f6e68b4ce169 169 case 'U':
Backstrom 0:f6e68b4ce169 170 segments = (1<<B)|(1<<C)|(1<<D)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 171 break;
Backstrom 0:f6e68b4ce169 172 case 'u':
Backstrom 0:f6e68b4ce169 173 segments = (1<<C)|(1<<D)|(1<<E);
Backstrom 0:f6e68b4ce169 174 break;
Backstrom 0:f6e68b4ce169 175 case 'V':
Backstrom 0:f6e68b4ce169 176 case 'v':
Backstrom 0:f6e68b4ce169 177 segments = (1<<C)|(1<<D)|(1<<E);
Backstrom 0:f6e68b4ce169 178 break;
Backstrom 0:f6e68b4ce169 179 case 'W':
Backstrom 0:f6e68b4ce169 180 case 'w':
Backstrom 0:f6e68b4ce169 181 segments = (1<<A)|(1<<C)|(1<<D)|(1<<E);
Backstrom 0:f6e68b4ce169 182 break;
Backstrom 0:f6e68b4ce169 183 case 'X':
Backstrom 0:f6e68b4ce169 184 case 'x':
Backstrom 0:f6e68b4ce169 185 segments = (1<<B)|(1<<C)|(1<<E)|(1<<F);
Backstrom 0:f6e68b4ce169 186 break;
Backstrom 0:f6e68b4ce169 187 case 'Y':
Backstrom 0:f6e68b4ce169 188 case 'y':
Backstrom 0:f6e68b4ce169 189 segments = (1<<B)|(1<<C)|(1<<D)|(1<<F)|(1<<G);
Backstrom 0:f6e68b4ce169 190 break;
Backstrom 0:f6e68b4ce169 191 case 'Z':
Backstrom 0:f6e68b4ce169 192 case 'z':
Backstrom 0:f6e68b4ce169 193 segments = (1<<A)|(1<<D)|(1<<G);
Backstrom 0:f6e68b4ce169 194 break;
Backstrom 0:f6e68b4ce169 195 case '-':
Backstrom 0:f6e68b4ce169 196 segments = (1<<G);
Backstrom 0:f6e68b4ce169 197 break;
Backstrom 0:f6e68b4ce169 198 case '"':
Backstrom 0:f6e68b4ce169 199 segments = (1<<B)|(1<<F);
Backstrom 0:f6e68b4ce169 200 break;
Backstrom 0:f6e68b4ce169 201 case 0x27: // "'"
Backstrom 0:f6e68b4ce169 202 segments = (1<<B);
Backstrom 0:f6e68b4ce169 203 break;
Backstrom 0:f6e68b4ce169 204 case '_':
Backstrom 0:f6e68b4ce169 205 segments = (1<<D);
Backstrom 0:f6e68b4ce169 206 break;
Backstrom 0:f6e68b4ce169 207 case ' ':
Backstrom 0:f6e68b4ce169 208 default:
Backstrom 0:f6e68b4ce169 209 segments = 0;
Backstrom 0:f6e68b4ce169 210 break;
Backstrom 0:f6e68b4ce169 211 }
Backstrom 0:f6e68b4ce169 212
Backstrom 0:f6e68b4ce169 213 return segments;
Backstrom 0:f6e68b4ce169 214 }