use table for 7 segments characters
This commit is contained in:
parent
f21120aa0c
commit
7894df3bb3
358
main.c
358
main.c
@ -110,6 +110,107 @@ static void vfd_transmit(void)
|
||||
}
|
||||
*/
|
||||
|
||||
/* ASCII characters encoded for 7 segments display
|
||||
* starts with space, ends with tilde
|
||||
*/
|
||||
static const uint8_t ascii_7segments[] = {
|
||||
0b00000000, // space
|
||||
0b00110000, // ! (I)
|
||||
0b00100010, // "
|
||||
0b01011100, // # (o)
|
||||
0b01101101, // $ (s)
|
||||
0b01010010, // % (/)
|
||||
0b01111101, // & (6)
|
||||
0b00100000, // '
|
||||
0b00111001, // ( ([)
|
||||
0b00001111, // )
|
||||
0b01110000, // *
|
||||
0b01000110, // +
|
||||
0b00010000, // ,
|
||||
0b01000000, // -
|
||||
0b00010000, // . (,)
|
||||
0b01010010, // /
|
||||
0b00111111, // 0
|
||||
0b00000110, // 1
|
||||
0b01011011, // 2
|
||||
0b01001111, // 3
|
||||
0b01100110, // 4
|
||||
0b01101101, // 5
|
||||
0b01111101, // 6
|
||||
0b00000111, // 7
|
||||
0b01111111, // 8
|
||||
0b01101111, // 9
|
||||
0b01001000, // : (=)
|
||||
0b01001000, // ; (=)
|
||||
0b01011000, // <
|
||||
0b01001000, // =
|
||||
0b01001100, // >
|
||||
0b01010011, // ?
|
||||
0b01111011, // @
|
||||
0b01110111, // A
|
||||
0b01111111, // B
|
||||
0b00111001, // C
|
||||
0b01011110, // D
|
||||
0b01111001, // E
|
||||
0b01110001, // F
|
||||
0b00111101, // G
|
||||
0b01110110, // H
|
||||
0b00110000, // I
|
||||
0b00011110, // J
|
||||
0b01110110, // K
|
||||
0b00111000, // L
|
||||
0b00110111, // M
|
||||
0b00110111, // N
|
||||
0b00111111, // O
|
||||
0b01110011, // P
|
||||
0b01101011, // Q
|
||||
0b00110011, // R
|
||||
0b01101101, // S
|
||||
0b01111000, // T
|
||||
0b00111110, // U
|
||||
0b00111110, // V (U)
|
||||
0b00111110, // W (U)
|
||||
0b01110110, // X (H)
|
||||
0b01101110, // Y
|
||||
0b01011011, // Z
|
||||
0b00111001, // [
|
||||
0b01100100, // '\'
|
||||
0b00001111, // /
|
||||
0b00100011, // ^
|
||||
0b00001000, // _
|
||||
0b00000010, // `
|
||||
0b01011111, // a
|
||||
0b01111100, // b
|
||||
0b01011000, // c
|
||||
0b01011110, // d
|
||||
0b01111011, // e
|
||||
0b01110001, // f
|
||||
0b01101111, // g
|
||||
0b01110100, // h
|
||||
0b00010000, // i
|
||||
0b00001100, // j
|
||||
0b01110110, // k
|
||||
0b00110000, // l
|
||||
0b01010100, // m
|
||||
0b01010100, // n
|
||||
0b01011100, // o
|
||||
0b01110011, // p
|
||||
0b01100111, // q
|
||||
0b01010000, // r
|
||||
0b01101101, // s
|
||||
0b01111000, // t
|
||||
0b00011100, // u
|
||||
0b00011100, // v (u)
|
||||
0b00011100, // w (u)
|
||||
0b01110110, // x
|
||||
0b01101110, // y
|
||||
0b01011011, // z
|
||||
0b00111001, // { ([)
|
||||
0b00110000, // |
|
||||
0b00001111, // } ([)
|
||||
0b01000000, // ~
|
||||
};
|
||||
|
||||
/* put digit into memory */
|
||||
static void vfd_digit(uint8_t nb, char c)
|
||||
{
|
||||
@ -135,257 +236,12 @@ static void vfd_digit(uint8_t nb, char c)
|
||||
}
|
||||
if (false) { // add the comma (not encoded)
|
||||
vfd_data[1] |= (1<<(16));
|
||||
}
|
||||
uint8_t segment = 0;
|
||||
switch (c&0x7f) {
|
||||
case '0':
|
||||
segment = 0b00111111;
|
||||
break;
|
||||
case '1':
|
||||
segment = 0b00000110;
|
||||
break;
|
||||
case '2':
|
||||
segment = 0b01011011;
|
||||
break;
|
||||
case '3':
|
||||
segment = 0b01001111;
|
||||
break;
|
||||
case '4':
|
||||
segment = 0b01100110;
|
||||
break;
|
||||
case '5':
|
||||
segment = 0b01101101;
|
||||
break;
|
||||
case '6':
|
||||
segment = 0b01111101;
|
||||
break;
|
||||
case '7':
|
||||
segment = 0b00000111;
|
||||
break;
|
||||
case '8':
|
||||
segment = 0b01111111;
|
||||
break;
|
||||
case '9':
|
||||
segment = 0b01101111;
|
||||
break;
|
||||
case 'a':
|
||||
segment = 0b01011111;
|
||||
break;
|
||||
case 'b':
|
||||
segment = 0b01111100;
|
||||
break;
|
||||
case 'c':
|
||||
segment = 0b01011000;
|
||||
break;
|
||||
case 'd':
|
||||
segment = 0b01011110;
|
||||
break;
|
||||
case 'e':
|
||||
segment = 0b01111011;
|
||||
break;
|
||||
case 'f':
|
||||
segment = 0b01110001;
|
||||
break;
|
||||
case 'g':
|
||||
segment = 0b01101111;
|
||||
break;
|
||||
case 'h':
|
||||
segment = 0b01110100;
|
||||
break;
|
||||
case 'i':
|
||||
segment = 0b00010000;
|
||||
break;
|
||||
case 'j':
|
||||
segment = 0b00001100;
|
||||
break;
|
||||
case 'k':
|
||||
segment = 0b01110110;
|
||||
break;
|
||||
case 'l':
|
||||
segment = 0b00110000;
|
||||
break;
|
||||
case 'm':
|
||||
segment = 0b01010100;
|
||||
break;
|
||||
case 'n':
|
||||
segment = 0b01010100;
|
||||
break;
|
||||
case 'o':
|
||||
segment = 0b01011100;
|
||||
break;
|
||||
case 'p':
|
||||
segment = 0b01110011;
|
||||
break;
|
||||
case 'q':
|
||||
segment = 0b01100111;
|
||||
break;
|
||||
case 'r':
|
||||
segment = 0b01010000;
|
||||
break;
|
||||
case 's':
|
||||
segment = 0b01101101;
|
||||
break;
|
||||
case 't':
|
||||
segment = 0b01111000;
|
||||
break;
|
||||
case 'u':
|
||||
segment = 0b00011100;
|
||||
break;
|
||||
case 'v':
|
||||
segment = 0b00011100;
|
||||
break;
|
||||
case 'w':
|
||||
segment = 0b00011100;
|
||||
break;
|
||||
case 'x':
|
||||
segment = 0b01110110;
|
||||
break;
|
||||
case 'y':
|
||||
segment = 0b01101110;
|
||||
break;
|
||||
case 'z':
|
||||
segment = 0b01011011;
|
||||
break;
|
||||
case 'A':
|
||||
segment = 0b01110111;
|
||||
break;
|
||||
case 'B':
|
||||
segment = 0b01111111;
|
||||
break;
|
||||
case 'C':
|
||||
segment = 0b00111001;
|
||||
break;
|
||||
case 'D':
|
||||
segment = 0b01011110;
|
||||
break;
|
||||
case 'E':
|
||||
segment = 0b01111001;
|
||||
break;
|
||||
case 'F':
|
||||
segment = 0b01110001;
|
||||
break;
|
||||
case 'G':
|
||||
segment = 0b00111101;
|
||||
break;
|
||||
case 'H':
|
||||
segment = 0b01110110;
|
||||
break;
|
||||
case 'I':
|
||||
segment = 0b00110000;
|
||||
break;
|
||||
case 'J':
|
||||
segment = 0b00011110;
|
||||
break;
|
||||
case 'K':
|
||||
segment = 0b01110110;
|
||||
break;
|
||||
case 'L':
|
||||
segment = 0b00111000;
|
||||
break;
|
||||
case 'M':
|
||||
segment = 0b00110111;
|
||||
break;
|
||||
case 'N':
|
||||
segment = 0b00110111;
|
||||
break;
|
||||
case 'O':
|
||||
segment = 0b00111111;
|
||||
break;
|
||||
case 'P':
|
||||
segment = 0b01110011;
|
||||
break;
|
||||
case 'Q':
|
||||
segment = 0b01101011;
|
||||
break;
|
||||
case 'R':
|
||||
segment = 0b00110011;
|
||||
break;
|
||||
case 'S':
|
||||
segment = 0b01101101;
|
||||
break;
|
||||
case 'T':
|
||||
segment = 0b01111000;
|
||||
break;
|
||||
case 'U':
|
||||
segment = 0b00111110;
|
||||
break;
|
||||
case 'V':
|
||||
segment = 0b00111110;
|
||||
break;
|
||||
case 'W':
|
||||
segment = 0b00111110;
|
||||
break;
|
||||
case 'X':
|
||||
segment = 0b01110110;
|
||||
break;
|
||||
case 'Y':
|
||||
segment = 0b01101110;
|
||||
break;
|
||||
case 'Z':
|
||||
segment = 0b01011011;
|
||||
break;
|
||||
case '_':
|
||||
segment = 0b00001000;
|
||||
break;
|
||||
case '-':
|
||||
segment = 0b01000000;
|
||||
break;
|
||||
case ' ':
|
||||
segment = 0b00000000;
|
||||
break;
|
||||
case '\'':
|
||||
segment = 0b00100000;
|
||||
break;
|
||||
case '"':
|
||||
segment = 0b00100010;
|
||||
break;
|
||||
case '/':
|
||||
segment = 0b01010010;
|
||||
break;
|
||||
case '\\':
|
||||
segment = 0b01100100;
|
||||
break;
|
||||
case '=':
|
||||
segment = 0b01001000;
|
||||
break;
|
||||
case ',':
|
||||
segment = 0b00010000;
|
||||
break;
|
||||
case '>':
|
||||
segment = 0b01001100;
|
||||
break;
|
||||
case '<':
|
||||
segment = 0b01011000;
|
||||
break;
|
||||
case '(':
|
||||
case '[':
|
||||
case '{':
|
||||
segment = 0b00111001;
|
||||
break;
|
||||
case ')':
|
||||
case ']':
|
||||
case '}':
|
||||
segment = 0b00001111;
|
||||
break;
|
||||
case '@':
|
||||
segment = 0b01111011;
|
||||
break;
|
||||
case '^':
|
||||
segment = 0b00100011;
|
||||
break;
|
||||
case '`':
|
||||
segment = 0b00000010;
|
||||
break;
|
||||
case '|':
|
||||
segment = 0b00110000;
|
||||
break;
|
||||
case '~':
|
||||
segment = 0b01000000;
|
||||
break;
|
||||
default:
|
||||
segment = 0x00;
|
||||
}
|
||||
vfd_data[1] |= (segment<<(17)); // add the segment to memory
|
||||
}
|
||||
if (((c&0x7f)<' ') || ((c&0x7f)>'~')) { // unknown ASCII character
|
||||
vfd_data[1] |= (ascii_7segments[' '-' ']<<(17)); // add empty segments to memory
|
||||
} else {
|
||||
vfd_data[1] |= (ascii_7segments[c-' ']<<(17)); // add encoded segments to memory
|
||||
}
|
||||
|
||||
vfd_data[2] = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user