Test program for Princeton PT6302 VFD controller. Note the PT6302 is identical to the OKI ML9208.

Dependencies:   mbed PT6302

More information is here.

Committer:
wim
Date:
Sun Jun 13 13:24:30 2021 +0000
Revision:
2:34c6e623a2c4
Parent:
0:a99bfc8384e4
Minor comments.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:a99bfc8384e4 1 /* mbed PT6302 Test program, for Princeton PT6302 VFD controller
wim 0:a99bfc8384e4 2 * Note the PT6302 is identical to the OKI ML9208
wim 0:a99bfc8384e4 3 *
wim 0:a99bfc8384e4 4 * Copyright (c) 2017, v01: WH, Initial version
wim 0:a99bfc8384e4 5 *
wim 0:a99bfc8384e4 6 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:a99bfc8384e4 7 * of this software and associated documentation files (the "Software"), to deal
wim 0:a99bfc8384e4 8 * in the Software without restriction, including without limitation the rights
wim 0:a99bfc8384e4 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:a99bfc8384e4 10 * copies of the Software, and to permit persons to whom the Software is
wim 0:a99bfc8384e4 11 * furnished to do so, subject to the following conditions:
wim 0:a99bfc8384e4 12 *
wim 0:a99bfc8384e4 13 * The above copyright notice and this permission notice shall be included in
wim 0:a99bfc8384e4 14 * all copies or substantial portions of the Software.
wim 0:a99bfc8384e4 15 *
wim 0:a99bfc8384e4 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:a99bfc8384e4 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:a99bfc8384e4 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:a99bfc8384e4 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:a99bfc8384e4 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:a99bfc8384e4 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:a99bfc8384e4 22 * THE SOFTWARE.
wim 0:a99bfc8384e4 23 */
wim 0:a99bfc8384e4 24 #include "mbed.h"
wim 0:a99bfc8384e4 25 #include "PT6302.h"
wim 0:a99bfc8384e4 26
wim 2:34c6e623a2c4 27
wim 0:a99bfc8384e4 28 // Select one of the testboards for Princeton PT6302 VFD controller
wim 0:a99bfc8384e4 29 #include "PT6302_Config.h"
wim 0:a99bfc8384e4 30
wim 0:a99bfc8384e4 31 #if (HANNSTAR_TEST == 1)
wim 0:a99bfc8384e4 32
wim 0:a99bfc8384e4 33 // PT6302 Test
wim 0:a99bfc8384e4 34 #include "mbed.h"
wim 0:a99bfc8384e4 35 #include "PT6302.h"
wim 0:a99bfc8384e4 36
wim 0:a99bfc8384e4 37 DigitalOut myled(LED1);
wim 0:a99bfc8384e4 38 Serial pc(USBTX, USBRX);
wim 0:a99bfc8384e4 39
wim 0:a99bfc8384e4 40 //PT6302_HANNSTAR PT6302(p5, p7, p8);
wim 0:a99bfc8384e4 41 PT6302_HANNSTAR PT6302(p11, p13, p14);
wim 0:a99bfc8384e4 42
wim 0:a99bfc8384e4 43 void show_menu() {
wim 0:a99bfc8384e4 44 // pc.printf("0: Exit\n\r");
wim 0:a99bfc8384e4 45 pc.printf("1: All\n\r");
wim 0:a99bfc8384e4 46 pc.printf("2: Show UDC chars\n\r");
wim 0:a99bfc8384e4 47 pc.printf("3: Show all chars\n\r");
wim 0:a99bfc8384e4 48 pc.printf("4: Show all digits\n\r");
wim 0:a99bfc8384e4 49 // pc.printf("5: Show all icons\n\r");
wim 0:a99bfc8384e4 50 pc.printf("6: Counter\n\r");
wim 0:a99bfc8384e4 51 pc.printf("7: Floats\n\r");
wim 0:a99bfc8384e4 52 pc.printf("8: Kitt\n\r");
wim 0:a99bfc8384e4 53 pc.printf("9: Cls\n\r");
wim 0:a99bfc8384e4 54 pc.printf("A/B: LED On/Off\n\r");
wim 0:a99bfc8384e4 55 pc.printf("C: Bye\n\r");
wim 0:a99bfc8384e4 56 }
wim 0:a99bfc8384e4 57
wim 0:a99bfc8384e4 58
wim 0:a99bfc8384e4 59 int main() {
wim 0:a99bfc8384e4 60 pc.printf("Hello World: PT6302 Hannstar test\n\r");
wim 0:a99bfc8384e4 61
wim 0:a99bfc8384e4 62 PT6302.locate(0);
wim 0:a99bfc8384e4 63 PT6302.printf("Hello mbed");
wim 0:a99bfc8384e4 64
wim 0:a99bfc8384e4 65 PT6302.setBrightness(PT6302_BRT_7);
wim 0:a99bfc8384e4 66 wait(1);
wim 0:a99bfc8384e4 67 PT6302.setBrightness(PT6302_BRT_0);
wim 0:a99bfc8384e4 68 wait(1);
wim 0:a99bfc8384e4 69 PT6302.setBrightness(PT6302_BRT_DEF);
wim 0:a99bfc8384e4 70 wait(1);
wim 0:a99bfc8384e4 71
wim 0:a99bfc8384e4 72 char cmd, cmd2 = '0';
wim 0:a99bfc8384e4 73 while (1) {
wim 0:a99bfc8384e4 74
wim 0:a99bfc8384e4 75 show_menu();
wim 0:a99bfc8384e4 76 cmd2 = pc.getc();
wim 0:a99bfc8384e4 77
wim 0:a99bfc8384e4 78 switch (cmd2) {
wim 0:a99bfc8384e4 79 case '1' : {
wim 0:a99bfc8384e4 80 pc.printf("all\r\n");
wim 0:a99bfc8384e4 81 PT6302.cls();
wim 0:a99bfc8384e4 82 PT6302.printf("Hello mbed");
wim 0:a99bfc8384e4 83 break;
wim 0:a99bfc8384e4 84 }
wim 0:a99bfc8384e4 85
wim 0:a99bfc8384e4 86
wim 0:a99bfc8384e4 87 case '2' : {
wim 0:a99bfc8384e4 88 pc.printf("UDC\r\n");
wim 0:a99bfc8384e4 89 PT6302.cls();
wim 0:a99bfc8384e4 90
wim 0:a99bfc8384e4 91 // Store UDC_idx=0, 1
wim 0:a99bfc8384e4 92 PT6302.setUDC(0, (char *) udc_LAR); // Left Arrow
wim 0:a99bfc8384e4 93 PT6302.setUDC(1, (char *) udc_RAR); // Right Arrow
wim 0:a99bfc8384e4 94
wim 0:a99bfc8384e4 95 // Show UDC_idx=0, 1
wim 0:a99bfc8384e4 96 PT6302.locate(0);
wim 0:a99bfc8384e4 97 PT6302.putc((char) 0);
wim 0:a99bfc8384e4 98 PT6302.putc((char) 1);
wim 0:a99bfc8384e4 99
wim 0:a99bfc8384e4 100 break;
wim 0:a99bfc8384e4 101 }
wim 0:a99bfc8384e4 102
wim 0:a99bfc8384e4 103 case '3' : {
wim 0:a99bfc8384e4 104 #if(1)
wim 0:a99bfc8384e4 105 //test to show all chars
wim 0:a99bfc8384e4 106 pc.printf("Show all alpha chars\r\n");
wim 0:a99bfc8384e4 107 wait(1);
wim 0:a99bfc8384e4 108 PT6302.cls();
wim 0:a99bfc8384e4 109
wim 0:a99bfc8384e4 110 for (int i=0; i<26; i++) {
wim 0:a99bfc8384e4 111 PT6302.printf("%c", char(i + 'A'));
wim 0:a99bfc8384e4 112 PT6302.printf("%c", char(i + 'a'));
wim 0:a99bfc8384e4 113 wait(0.25);
wim 0:a99bfc8384e4 114 }
wim 0:a99bfc8384e4 115 pc.printf("Show all alpha chars done\r\n");
wim 0:a99bfc8384e4 116 #endif
wim 0:a99bfc8384e4 117 break;
wim 0:a99bfc8384e4 118 }
wim 0:a99bfc8384e4 119
wim 0:a99bfc8384e4 120 case '4': {
wim 0:a99bfc8384e4 121 #if(0)
wim 0:a99bfc8384e4 122 //test to show all digits (base is 10)
wim 0:a99bfc8384e4 123 pc.printf("Show all digits\r\n");
wim 0:a99bfc8384e4 124 wait(1);
wim 0:a99bfc8384e4 125 PT6302.cls();
wim 0:a99bfc8384e4 126
wim 0:a99bfc8384e4 127 for (int i=0; i<PT6302_NR_DIGITS; i++) {
wim 0:a99bfc8384e4 128
wim 0:a99bfc8384e4 129 for (int cnt=0; cnt<10; cnt++) {
wim 0:a99bfc8384e4 130 PT6302.locate(i);
wim 0:a99bfc8384e4 131 PT6302.printf("%0d", cnt);
wim 0:a99bfc8384e4 132
wim 0:a99bfc8384e4 133 // wait(0.5);
wim 0:a99bfc8384e4 134 cmd = pc.getc(); // wait for key
wim 0:a99bfc8384e4 135 }
wim 0:a99bfc8384e4 136 }
wim 0:a99bfc8384e4 137 pc.printf("\r\nShow all digits done\r\n");
wim 0:a99bfc8384e4 138 #endif
wim 0:a99bfc8384e4 139
wim 0:a99bfc8384e4 140 #if(1)
wim 0:a99bfc8384e4 141 //test to show all digits (base is 0x10)
wim 0:a99bfc8384e4 142 pc.printf("Show all hex digits\r\n");
wim 0:a99bfc8384e4 143 wait(1);
wim 0:a99bfc8384e4 144 PT6302.cls();
wim 0:a99bfc8384e4 145
wim 0:a99bfc8384e4 146 PT6302.printf("%010X", 0x0123ABCDEF);
wim 0:a99bfc8384e4 147 cmd = pc.getc(); // wait for key
wim 0:a99bfc8384e4 148 PT6302.locate(0);
wim 0:a99bfc8384e4 149 PT6302.printf("%016X", 0x0);
wim 0:a99bfc8384e4 150
wim 0:a99bfc8384e4 151 for (int i=0; i<HANNSTAR_NR_DIGITS; i++) {
wim 0:a99bfc8384e4 152 // for (int i=0; i<1; i++) {
wim 0:a99bfc8384e4 153
wim 0:a99bfc8384e4 154 for (int cnt=0; cnt<0x10; cnt++) {
wim 0:a99bfc8384e4 155 PT6302.locate(i);
wim 0:a99bfc8384e4 156 PT6302.printf("%0X", cnt);
wim 0:a99bfc8384e4 157 // pc.printf("%0X", cnt);
wim 0:a99bfc8384e4 158 // wait(0.5);
wim 0:a99bfc8384e4 159 cmd = pc.getc(); // wait for key
wim 0:a99bfc8384e4 160 }
wim 0:a99bfc8384e4 161 }
wim 0:a99bfc8384e4 162 pc.printf("\r\nShow all hex digits done\r\n");
wim 0:a99bfc8384e4 163 #endif
wim 0:a99bfc8384e4 164 break;
wim 0:a99bfc8384e4 165 }
wim 0:a99bfc8384e4 166
wim 0:a99bfc8384e4 167 case '5': {
wim 0:a99bfc8384e4 168 break;
wim 0:a99bfc8384e4 169 }
wim 0:a99bfc8384e4 170
wim 0:a99bfc8384e4 171 case '6': {
wim 0:a99bfc8384e4 172 pc.printf("Show counter\r\n");
wim 0:a99bfc8384e4 173 PT6302.cls(); // clear all, preserve Icons
wim 0:a99bfc8384e4 174
wim 0:a99bfc8384e4 175 #if(1)
wim 0:a99bfc8384e4 176 PT6302.locate(0);
wim 0:a99bfc8384e4 177 PT6302.printf("Cnt=");
wim 0:a99bfc8384e4 178 for (int cnt=0; cnt<=0xFF; cnt++) {
wim 0:a99bfc8384e4 179 PT6302.locate(8);
wim 0:a99bfc8384e4 180 PT6302.printf("%02X", cnt);
wim 0:a99bfc8384e4 181 wait(0.2);
wim 0:a99bfc8384e4 182 }
wim 0:a99bfc8384e4 183 #endif
wim 0:a99bfc8384e4 184 break;
wim 0:a99bfc8384e4 185 }
wim 0:a99bfc8384e4 186
wim 0:a99bfc8384e4 187 case '7': {
wim 0:a99bfc8384e4 188 pc.printf("Show floats\r\n");
wim 0:a99bfc8384e4 189
wim 0:a99bfc8384e4 190 PT6302.cls(); // clear all, preserve Icons
wim 0:a99bfc8384e4 191 PT6302.printf("%1.7f", -0.1234567); // test decimal point display
wim 0:a99bfc8384e4 192 wait(0.5);
wim 0:a99bfc8384e4 193 PT6302.cls(); // clear all, preserve Icons
wim 0:a99bfc8384e4 194 PT6302.printf("%3.6f", 123.456789); // test decimal point display
wim 0:a99bfc8384e4 195 break;
wim 0:a99bfc8384e4 196 }
wim 0:a99bfc8384e4 197
wim 0:a99bfc8384e4 198 case '8': {
wim 0:a99bfc8384e4 199
wim 0:a99bfc8384e4 200 #if(1)
wim 0:a99bfc8384e4 201 //test to show KITT
wim 0:a99bfc8384e4 202 pc.printf("Show KITT scanner\r\n");
wim 0:a99bfc8384e4 203
wim 0:a99bfc8384e4 204 // 0123456789
wim 0:a99bfc8384e4 205 const char KITT[][11] = {{"8 "},
wim 0:a99bfc8384e4 206 {"38 "},
wim 0:a99bfc8384e4 207 {" 38 "},
wim 0:a99bfc8384e4 208 {" 38 "},
wim 0:a99bfc8384e4 209 {" 38 "},
wim 0:a99bfc8384e4 210 {" 38 "},
wim 0:a99bfc8384e4 211 {" 38 "},
wim 0:a99bfc8384e4 212 {" 38 "},
wim 0:a99bfc8384e4 213 {" 38 "},
wim 0:a99bfc8384e4 214 {" 38"},
wim 0:a99bfc8384e4 215 {" 3"},
wim 0:a99bfc8384e4 216 {" "},
wim 0:a99bfc8384e4 217 {" 8"},
wim 0:a99bfc8384e4 218 {" 8E"},
wim 0:a99bfc8384e4 219 {" 8E "},
wim 0:a99bfc8384e4 220 {" 8E "},
wim 0:a99bfc8384e4 221 {" 8E "},
wim 0:a99bfc8384e4 222 {" 8E "},
wim 0:a99bfc8384e4 223 {" 8E "},
wim 0:a99bfc8384e4 224 {" 8E "},
wim 0:a99bfc8384e4 225 {" 8E "},
wim 0:a99bfc8384e4 226 {"8E "},
wim 0:a99bfc8384e4 227 {"E "},
wim 0:a99bfc8384e4 228 {" "}
wim 0:a99bfc8384e4 229 };
wim 0:a99bfc8384e4 230
wim 0:a99bfc8384e4 231 PT6302.cls(); // clear all, preserve Icons
wim 0:a99bfc8384e4 232
wim 0:a99bfc8384e4 233 while (!pc.readable()) { // wait for key
wim 0:a99bfc8384e4 234 for (int i=0; i < (sizeof(KITT) / 11) ; i++) {
wim 0:a99bfc8384e4 235 PT6302.locate(0);
wim 0:a99bfc8384e4 236 PT6302.printf("%s", KITT[i]);
wim 0:a99bfc8384e4 237 wait(0.1);
wim 0:a99bfc8384e4 238 }
wim 0:a99bfc8384e4 239 }
wim 0:a99bfc8384e4 240 cmd = pc.getc(); // read key
wim 0:a99bfc8384e4 241 pc.printf("Show KITT done\r\n");
wim 0:a99bfc8384e4 242 #endif
wim 0:a99bfc8384e4 243 break;
wim 0:a99bfc8384e4 244 }
wim 0:a99bfc8384e4 245
wim 0:a99bfc8384e4 246
wim 0:a99bfc8384e4 247 case '9': {
wim 0:a99bfc8384e4 248 PT6302.cls(true); // clear all, including Icons
wim 0:a99bfc8384e4 249 break;
wim 0:a99bfc8384e4 250 }
wim 0:a99bfc8384e4 251
wim 0:a99bfc8384e4 252 case 'A': {
wim 0:a99bfc8384e4 253 pc.printf("LED On\r\n");
wim 0:a99bfc8384e4 254 PT6302.setPort(0x02);
wim 0:a99bfc8384e4 255 break;
wim 0:a99bfc8384e4 256 }
wim 0:a99bfc8384e4 257
wim 0:a99bfc8384e4 258 case 'B': {
wim 0:a99bfc8384e4 259 pc.printf("LED Off\r\n");
wim 0:a99bfc8384e4 260 PT6302.setPort(0x00);
wim 0:a99bfc8384e4 261 break;
wim 0:a99bfc8384e4 262 }
wim 0:a99bfc8384e4 263
wim 0:a99bfc8384e4 264 case 'C': {
wim 0:a99bfc8384e4 265 PT6302.cls(); // clear all, preserve Icons
wim 0:a99bfc8384e4 266 PT6302.printf("Bye");
wim 0:a99bfc8384e4 267
wim 0:a99bfc8384e4 268 break;
wim 0:a99bfc8384e4 269 }
wim 0:a99bfc8384e4 270
wim 0:a99bfc8384e4 271 default : {
wim 0:a99bfc8384e4 272 break;
wim 0:a99bfc8384e4 273 }
wim 0:a99bfc8384e4 274
wim 0:a99bfc8384e4 275 } //switch cmd
wim 0:a99bfc8384e4 276
wim 0:a99bfc8384e4 277 myled = !myled;
wim 0:a99bfc8384e4 278 wait(0.3);
wim 0:a99bfc8384e4 279 }
wim 0:a99bfc8384e4 280 }
wim 0:a99bfc8384e4 281 #endif
wim 0:a99bfc8384e4 282
wim 0:a99bfc8384e4 283
wim 0:a99bfc8384e4 284 #if (PT6302_TEST == 1)
wim 0:a99bfc8384e4 285
wim 0:a99bfc8384e4 286 // PT6302 Bare Metal Test
wim 0:a99bfc8384e4 287 #include "mbed.h"
wim 0:a99bfc8384e4 288 #include "PT6302.h"
wim 0:a99bfc8384e4 289
wim 0:a99bfc8384e4 290 DigitalOut myled(LED1);
wim 0:a99bfc8384e4 291 Serial pc(USBTX, USBRX);
wim 0:a99bfc8384e4 292
wim 0:a99bfc8384e4 293 // PT6302 declaration, Default setting 16 Grids @ 35 Segments
wim 0:a99bfc8384e4 294 PT6302 PT6302(p5, p7, p8); // DI, CLK, CS
wim 0:a99bfc8384e4 295
wim 0:a99bfc8384e4 296 int main() {
wim 0:a99bfc8384e4 297 pc.printf("Hello World: PT6302 test\n\r");
wim 0:a99bfc8384e4 298
wim 0:a99bfc8384e4 299 PT6302.writeData((char)'H', 9);
wim 0:a99bfc8384e4 300 PT6302.writeData((char)'e', 8);
wim 0:a99bfc8384e4 301 PT6302.writeData((char)'l', 7);
wim 0:a99bfc8384e4 302 PT6302.writeData((char)'l', 6);
wim 0:a99bfc8384e4 303 PT6302.writeData((char)'o', 5);
wim 0:a99bfc8384e4 304
wim 0:a99bfc8384e4 305 PT6302.setBlink(true, (PT6302_GR10 | PT6302_GR9 | PT6302_GR8 | PT6302_GR7 | PT6302_GR6) );
wim 0:a99bfc8384e4 306
wim 0:a99bfc8384e4 307 while(1) {
wim 0:a99bfc8384e4 308 myled = !myled;
wim 0:a99bfc8384e4 309 wait(1);
wim 0:a99bfc8384e4 310 }
wim 0:a99bfc8384e4 311 }
wim 0:a99bfc8384e4 312 #endif