This is a driver library for the popular QDSP-6064 bubble display. These miniature displays can be leveraged for small breadboard projects in order to display debug information or even in larger projects where LCD displays are unpractical.

Dependents:   QDSP-6064-hello

Fork of BubbleDisplay by Michael Dushkoff

Committer:
MACRUM
Date:
Tue Mar 29 07:51:47 2016 +0000
Revision:
3:1d85399fdea3
Parent:
2:3604f34e944b
Add a write(uint16_t) method

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mdu7078 0:cc6e3bfecab4 1 /* * * * * * * * * * * * * * * * * * * * * * * * * * *
mdu7078 2:3604f34e944b 2 * This drives the popular QDSP-6064 bubble display. *
mdu7078 0:cc6e3bfecab4 3 * *
mdu7078 0:cc6e3bfecab4 4 * Created by: Michael Dushkoff (mad1841@rit.edu) *
mdu7078 0:cc6e3bfecab4 5 * * * * * * * * * * * * * * * * * * * * * * * * * * */
mdu7078 0:cc6e3bfecab4 6
mdu7078 0:cc6e3bfecab4 7 #ifndef BUBBLE_DISPLAY_H
mdu7078 0:cc6e3bfecab4 8 #define BUBBLE_DISPLAY_H
mdu7078 0:cc6e3bfecab4 9
mdu7078 0:cc6e3bfecab4 10 #include "mbed.h"
mdu7078 0:cc6e3bfecab4 11
mdu7078 0:cc6e3bfecab4 12 // Definitions
mdu7078 0:cc6e3bfecab4 13 #define DEF_DISPL_FREQ (10000.0) // 10kHz display frequency
mdu7078 0:cc6e3bfecab4 14
mdu7078 0:cc6e3bfecab4 15 // LUT for character to display
mdu7078 0:cc6e3bfecab4 16 const char dispTabl[] = {
mdu7078 0:cc6e3bfecab4 17 0x7E, // 0
mdu7078 0:cc6e3bfecab4 18 0x30, // 1
mdu7078 0:cc6e3bfecab4 19 0x6D, // 2
mdu7078 0:cc6e3bfecab4 20 0x79, // 3
mdu7078 0:cc6e3bfecab4 21 0x33, // 4
mdu7078 0:cc6e3bfecab4 22 0x5B, // 5
mdu7078 0:cc6e3bfecab4 23 0x5F, // 6
mdu7078 0:cc6e3bfecab4 24 0x70, // 7
mdu7078 0:cc6e3bfecab4 25 0x7F, // 8
mdu7078 0:cc6e3bfecab4 26 0x7B, // 9
mdu7078 0:cc6e3bfecab4 27 0x77, // 10 "A"
mdu7078 0:cc6e3bfecab4 28 0x1F, // 11 "B"
mdu7078 0:cc6e3bfecab4 29 0x4E, // 12 "C"
mdu7078 0:cc6e3bfecab4 30 0x3D, // 13 "D"
mdu7078 0:cc6e3bfecab4 31 0x4F, // 14 "E"
mdu7078 0:cc6e3bfecab4 32 0x47, // 15 "F"
mdu7078 0:cc6e3bfecab4 33 0x00, // 16 NO DISPLAY
mdu7078 0:cc6e3bfecab4 34 0x00, // 17 NO DISPLAY
mdu7078 0:cc6e3bfecab4 35 0x00, // 18 NO DISPLAY
mdu7078 0:cc6e3bfecab4 36 0x00, // 19 NO DISPLAY
mdu7078 0:cc6e3bfecab4 37 0x00, // 20 NO DISPLAY
mdu7078 0:cc6e3bfecab4 38 0x00, // 21 NO DISPLAY
mdu7078 0:cc6e3bfecab4 39 0x00, // 22 NO DISPLAY
mdu7078 0:cc6e3bfecab4 40 0x00, // 23 NO DISPLAY
mdu7078 0:cc6e3bfecab4 41 0x00, // 24 NO DISPLAY
mdu7078 0:cc6e3bfecab4 42 0x00, // 25 NO DISPLAY
mdu7078 0:cc6e3bfecab4 43 0x00, // 26 NO DISPLAY
mdu7078 0:cc6e3bfecab4 44 0x00, // 27 NO DISPLAY
mdu7078 0:cc6e3bfecab4 45 0x00, // 28 NO DISPLAY
mdu7078 0:cc6e3bfecab4 46 0x00, // 29 NO DISPLAY
mdu7078 0:cc6e3bfecab4 47 0x00, // 30 NO DISPLAY
mdu7078 0:cc6e3bfecab4 48 0x00, // 31 NO DISPLAY
mdu7078 0:cc6e3bfecab4 49 0x00, // 32 ' '
mdu7078 0:cc6e3bfecab4 50 0x00, // 33 '!' NO DISPLAY
mdu7078 0:cc6e3bfecab4 51 0x22, // 34 '"'
mdu7078 0:cc6e3bfecab4 52 0x00, // 35 '#' NO DISPLAY
mdu7078 0:cc6e3bfecab4 53 0x00, // 36 '$' NO DISPLAY
mdu7078 0:cc6e3bfecab4 54 0x00, // 37 '%' NO DISPLAY
mdu7078 0:cc6e3bfecab4 55 0x00, // 38 '&' NO DISPLAY
mdu7078 0:cc6e3bfecab4 56 0x20, // 39 '''
mdu7078 0:cc6e3bfecab4 57 0x4E, // 40 '('
mdu7078 0:cc6e3bfecab4 58 0x78, // 41 ')'
mdu7078 0:cc6e3bfecab4 59 0x00, // 42 '*' NO DISPLAY
mdu7078 0:cc6e3bfecab4 60 0x00, // 43 '+' NO DISPLAY
mdu7078 0:cc6e3bfecab4 61 0x04, // 44 ','
mdu7078 0:cc6e3bfecab4 62 0x01, // 45 '-'
mdu7078 0:cc6e3bfecab4 63 0x80, // 46 '.' Decimal
mdu7078 0:cc6e3bfecab4 64 0x00, // 47 '/' NO DISPLAY
mdu7078 0:cc6e3bfecab4 65 0x7E, // 48 '0'
mdu7078 0:cc6e3bfecab4 66 0x30, // 49 '1'
mdu7078 0:cc6e3bfecab4 67 0x6D, // 50 '2'
mdu7078 0:cc6e3bfecab4 68 0x79, // 51 '3'
mdu7078 0:cc6e3bfecab4 69 0x33, // 52 '4'
mdu7078 0:cc6e3bfecab4 70 0x5B, // 53 '5'
mdu7078 0:cc6e3bfecab4 71 0x5F, // 54 '6'
mdu7078 0:cc6e3bfecab4 72 0x70, // 55 '7'
mdu7078 0:cc6e3bfecab4 73 0x7F, // 56 '8'
mdu7078 0:cc6e3bfecab4 74 0x7B, // 57 '9'
mdu7078 0:cc6e3bfecab4 75 0x00, // 58 ':' NO DISPLAY
mdu7078 0:cc6e3bfecab4 76 0x00, // 59 ';' NO DISPLAY
mdu7078 0:cc6e3bfecab4 77 0x00, // 60 '<' NO DISPLAY
mdu7078 0:cc6e3bfecab4 78 0x00, // 61 '=' NO DISPLAY
mdu7078 0:cc6e3bfecab4 79 0x00, // 62 '>' NO DISPLAY
mdu7078 0:cc6e3bfecab4 80 0x00, // 63 '?' NO DISPLAY
mdu7078 0:cc6e3bfecab4 81 0x00, // 64 '@' NO DISPLAY
mdu7078 0:cc6e3bfecab4 82 0x77, // 65 'A'
mdu7078 0:cc6e3bfecab4 83 0x1F, // 66 'B'
mdu7078 0:cc6e3bfecab4 84 0x4E, // 67 'C'
mdu7078 0:cc6e3bfecab4 85 0x3D, // 68 'D'
mdu7078 0:cc6e3bfecab4 86 0x4F, // 69 'E'
mdu7078 0:cc6e3bfecab4 87 0x47, // 70 'F'
mdu7078 0:cc6e3bfecab4 88 0x5E, // 71 'G'
mdu7078 0:cc6e3bfecab4 89 0x37, // 72 'H'
mdu7078 0:cc6e3bfecab4 90 0x30, // 73 'I'
mdu7078 0:cc6e3bfecab4 91 0x38, // 74 'J'
mdu7078 0:cc6e3bfecab4 92 0x00, // 75 'K' NO DISPLAY
mdu7078 0:cc6e3bfecab4 93 0x0E, // 76 'L'
mdu7078 0:cc6e3bfecab4 94 0x00, // 77 'M' NO DISPLAY
mdu7078 0:cc6e3bfecab4 95 0x15, // 78 'N'
mdu7078 0:cc6e3bfecab4 96 0x7E, // 79 'O'
mdu7078 0:cc6e3bfecab4 97 0x67, // 80 'P'
mdu7078 0:cc6e3bfecab4 98 0x73, // 81 'Q'
mdu7078 0:cc6e3bfecab4 99 0x05, // 82 'R'
mdu7078 0:cc6e3bfecab4 100 0x5B, // 83 'S'
mdu7078 0:cc6e3bfecab4 101 0x0F, // 84 'T'
mdu7078 0:cc6e3bfecab4 102 0x3E, // 85 'U'
mdu7078 0:cc6e3bfecab4 103 0x00, // 86 'V' NO DISPLAY
mdu7078 0:cc6e3bfecab4 104 0x00, // 87 'W' NO DISPLAY
mdu7078 0:cc6e3bfecab4 105 0x00, // 88 'X' NO DISPLAY
mdu7078 0:cc6e3bfecab4 106 0x3B, // 89 'Y'
mdu7078 0:cc6e3bfecab4 107 0x00, // 90 'Z' NO DISPLAY
mdu7078 0:cc6e3bfecab4 108 0x4E, // 91 '['
mdu7078 0:cc6e3bfecab4 109 0x00, // 92 '\' NO DISPLAY
mdu7078 0:cc6e3bfecab4 110 0x78, // 93 ']'
mdu7078 0:cc6e3bfecab4 111 0x00, // 94 '^' NO DISPLAY
mdu7078 1:0dd75913f211 112 0x08, // 95 '_'
mdu7078 0:cc6e3bfecab4 113 0x02, // 96 '`'
mdu7078 0:cc6e3bfecab4 114 0x77, // 97 'a' SAME AS CAP
mdu7078 0:cc6e3bfecab4 115 0x1F, // 98 'b' SAME AS CAP
mdu7078 0:cc6e3bfecab4 116 0x0D, // 99 'c'
mdu7078 0:cc6e3bfecab4 117 0x3D, // 100 'd' SAME AS CAP
mdu7078 0:cc6e3bfecab4 118 0x6F, // 101 'e'
mdu7078 0:cc6e3bfecab4 119 0x47, // 102 'f' SAME AS CAP
mdu7078 0:cc6e3bfecab4 120 0x5E, // 103 'g' SAME AS CAP
mdu7078 0:cc6e3bfecab4 121 0x17, // 104 'h'
mdu7078 0:cc6e3bfecab4 122 0x10, // 105 'i'
mdu7078 0:cc6e3bfecab4 123 0x38, // 106 'j' SAME AS CAP
mdu7078 0:cc6e3bfecab4 124 0x00, // 107 'k' NO DISPLAY
mdu7078 0:cc6e3bfecab4 125 0x30, // 108 'l'
mdu7078 0:cc6e3bfecab4 126 0x00, // 109 'm' NO DISPLAY
mdu7078 0:cc6e3bfecab4 127 0x15, // 110 'n' SAME AS CAP
mdu7078 0:cc6e3bfecab4 128 0x1D, // 111 'o'
mdu7078 0:cc6e3bfecab4 129 0x67, // 112 'p' SAME AS CAP
mdu7078 0:cc6e3bfecab4 130 0x73, // 113 'q' SAME AS CAP
mdu7078 0:cc6e3bfecab4 131 0x05, // 114 'r' SAME AS CAP
mdu7078 0:cc6e3bfecab4 132 0x5B, // 115 's' SAME AS CAP
mdu7078 0:cc6e3bfecab4 133 0x0F, // 116 't' SAME AS CAP
mdu7078 0:cc6e3bfecab4 134 0x1C, // 117 'u'
mdu7078 0:cc6e3bfecab4 135 0x00, // 118 'b' NO DISPLAY
mdu7078 0:cc6e3bfecab4 136 0x00, // 119 'w' NO DISPLAY
mdu7078 0:cc6e3bfecab4 137 0x00, // 120 'x' NO DISPLAY
mdu7078 0:cc6e3bfecab4 138 0x00, // 121 'y' NO DISPLAY
mdu7078 0:cc6e3bfecab4 139 0x00, // 122 'z' NO DISPLAY
mdu7078 0:cc6e3bfecab4 140 0x00, // 123 '0b' NO DISPLAY
mdu7078 0:cc6e3bfecab4 141 0x00, // 124 '|' NO DISPLAY
mdu7078 0:cc6e3bfecab4 142 0x00, // 125 ',' NO DISPLAY
mdu7078 0:cc6e3bfecab4 143 0x00, // 126 '~' NO DISPLAY
mdu7078 0:cc6e3bfecab4 144 0x00, // 127 'DEL' NO DISPLAY
mdu7078 0:cc6e3bfecab4 145 };
mdu7078 0:cc6e3bfecab4 146
mdu7078 0:cc6e3bfecab4 147 class BubbleDisplay{
mdu7078 0:cc6e3bfecab4 148 public:
mdu7078 0:cc6e3bfecab4 149 /*
mdu7078 0:cc6e3bfecab4 150 * This is the default BubbleDisplay constructor that
mdu7078 0:cc6e3bfecab4 151 * maps the pins in a simple way for the LPC11U24.
mdu7078 0:cc6e3bfecab4 152 */
mdu7078 0:cc6e3bfecab4 153 BubbleDisplay();
mdu7078 0:cc6e3bfecab4 154
mdu7078 0:cc6e3bfecab4 155 /*
mdu7078 0:cc6e3bfecab4 156 * This allows a user to map the pins of the bubble display
mdu7078 0:cc6e3bfecab4 157 * to any possible pin that they desire.
mdu7078 0:cc6e3bfecab4 158 */
mdu7078 0:cc6e3bfecab4 159 BubbleDisplay(PinName m0, PinName m1, PinName m2, PinName m3,
mdu7078 0:cc6e3bfecab4 160 PinName m4, PinName m5, PinName m6, PinName m7,
mdu7078 0:cc6e3bfecab4 161 PinName m8, PinName m9, PinName m10, PinName m11);
mdu7078 0:cc6e3bfecab4 162
mdu7078 0:cc6e3bfecab4 163 /*
mdu7078 0:cc6e3bfecab4 164 * Default destructor
mdu7078 0:cc6e3bfecab4 165 */
mdu7078 0:cc6e3bfecab4 166 ~BubbleDisplay();
mdu7078 0:cc6e3bfecab4 167
mdu7078 0:cc6e3bfecab4 168 /*
mdu7078 0:cc6e3bfecab4 169 * This sets the cycle frequency to a specific value instead of the
mdu7078 0:cc6e3bfecab4 170 * default 10kHz.
mdu7078 0:cc6e3bfecab4 171 */
mdu7078 0:cc6e3bfecab4 172 void setFreq(double freq);
mdu7078 0:cc6e3bfecab4 173
mdu7078 0:cc6e3bfecab4 174 /*
mdu7078 0:cc6e3bfecab4 175 * This writes a sequence of characters from left to right
mdu7078 0:cc6e3bfecab4 176 * to the seven-segment displays.
mdu7078 0:cc6e3bfecab4 177 */
mdu7078 0:cc6e3bfecab4 178 void write(char c1, char c2, char c3, char c4);
mdu7078 0:cc6e3bfecab4 179
mdu7078 0:cc6e3bfecab4 180 /*
mdu7078 0:cc6e3bfecab4 181 * This writes a sequence of characters from left to right
mdu7078 0:cc6e3bfecab4 182 * to the seven-segment displays.
mdu7078 0:cc6e3bfecab4 183 */
mdu7078 0:cc6e3bfecab4 184 void write(char* c);
MACRUM 3:1d85399fdea3 185
MACRUM 3:1d85399fdea3 186 /*
MACRUM 3:1d85399fdea3 187 * This writes a sequence of integer number
MACRUM 3:1d85399fdea3 188 * to the seven-segment displays.
MACRUM 3:1d85399fdea3 189 */
MACRUM 3:1d85399fdea3 190 void write(uint16_t num);
MACRUM 3:1d85399fdea3 191
mdu7078 0:cc6e3bfecab4 192 private:
mdu7078 0:cc6e3bfecab4 193 /*
mdu7078 0:cc6e3bfecab4 194 * This is a constructor helper function
mdu7078 0:cc6e3bfecab4 195 */
mdu7078 0:cc6e3bfecab4 196 void init(PinName m0, PinName m1, PinName m2, PinName m3,
mdu7078 0:cc6e3bfecab4 197 PinName m4, PinName m5, PinName m6, PinName m7,
mdu7078 0:cc6e3bfecab4 198 PinName m8, PinName m9, PinName m10, PinName m11);
mdu7078 0:cc6e3bfecab4 199
mdu7078 0:cc6e3bfecab4 200 /*
mdu7078 0:cc6e3bfecab4 201 * This cycles through the four seven segment displays on the
mdu7078 0:cc6e3bfecab4 202 * bubble display by switching on and off the correct cathodes.
mdu7078 0:cc6e3bfecab4 203 */
mdu7078 0:cc6e3bfecab4 204 void cycle();
mdu7078 0:cc6e3bfecab4 205
mdu7078 0:cc6e3bfecab4 206 /* Private variables */
mdu7078 0:cc6e3bfecab4 207 Ticker _cycler;
mdu7078 0:cc6e3bfecab4 208 double _freq; // The cycle frequency
mdu7078 0:cc6e3bfecab4 209 char _seg; // The current display number
mdu7078 0:cc6e3bfecab4 210 // All of the pins
mdu7078 0:cc6e3bfecab4 211 DigitalOut* _cat1;
mdu7078 0:cc6e3bfecab4 212 DigitalOut* _anE;
mdu7078 0:cc6e3bfecab4 213 DigitalOut* _anC;
mdu7078 0:cc6e3bfecab4 214 DigitalOut* _cat3;
mdu7078 0:cc6e3bfecab4 215 DigitalOut* _anDP;
mdu7078 0:cc6e3bfecab4 216 DigitalOut* _cat4;
mdu7078 0:cc6e3bfecab4 217 DigitalOut* _anG;
mdu7078 0:cc6e3bfecab4 218 DigitalOut* _anD;
mdu7078 0:cc6e3bfecab4 219 DigitalOut* _anF;
mdu7078 0:cc6e3bfecab4 220 DigitalOut* _cat2;
mdu7078 0:cc6e3bfecab4 221 DigitalOut* _anB;
mdu7078 0:cc6e3bfecab4 222 DigitalOut* _anA;
mdu7078 0:cc6e3bfecab4 223 // Segement values
mdu7078 0:cc6e3bfecab4 224 char _chrs[4];
mdu7078 0:cc6e3bfecab4 225 };
mdu7078 0:cc6e3bfecab4 226
mdu7078 0:cc6e3bfecab4 227 #endif