VFD command test program

Dependencies:   mbed

Committer:
kanpapa
Date:
Mon May 02 13:57:58 2016 +0000
Revision:
1:05518314979e
Parent:
0:b2dddd322c12
test version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kanpapa 0:b2dddd322c12 1 /*
kanpapa 0:b2dddd322c12 2
kanpapa 0:b2dddd322c12 3 mbed VFD Control for GP1059A01
kanpapa 0:b2dddd322c12 4
kanpapa 0:b2dddd322c12 5 ===============
kanpapa 0:b2dddd322c12 6 Status LED
kanpapa 0:b2dddd322c12 7 -----------
kanpapa 0:b2dddd322c12 8 LED1:
kanpapa 0:b2dddd322c12 9 LED2:
kanpapa 0:b2dddd322c12 10 LED3:
kanpapa 0:b2dddd322c12 11 LED4:
kanpapa 0:b2dddd322c12 12
kanpapa 0:b2dddd322c12 13 ===============
kanpapa 0:b2dddd322c12 14 GP1059A01 INTERFACE CONNECTION
kanpapa 0:b2dddd322c12 15 ---------------
kanpapa 0:b2dddd322c12 16 1 D0 2 D1
kanpapa 0:b2dddd322c12 17 3 D2 4 D3
kanpapa 0:b2dddd322c12 18 5 D4 6 D5
kanpapa 0:b2dddd322c12 19 7 D6 8 D7
kanpapa 0:b2dddd322c12 20 9 GND 10 INT
kanpapa 0:b2dddd322c12 21 11 WR 12 RD
kanpapa 0:b2dddd322c12 22 13 CS 14 C/D
kanpapa 0:b2dddd322c12 23 15 5V 16 5V
kanpapa 0:b2dddd322c12 24 17 5V 18 GND
kanpapa 0:b2dddd322c12 25 19 GND 20 ebb(+70V)
kanpapa 0:b2dddd322c12 26
kanpapa 0:b2dddd322c12 27
kanpapa 0:b2dddd322c12 28
kanpapa 0:b2dddd322c12 29 =====================
kanpapa 0:b2dddd322c12 30 mbed CONNECTION
kanpapa 0:b2dddd322c12 31 ---------------------
kanpapa 0:b2dddd322c12 32 mbed GP1059A01(I/O)
kanpapa 0:b2dddd322c12 33 ---------------------
kanpapa 0:b2dddd322c12 34 p5 1 (D0) I/O
kanpapa 0:b2dddd322c12 35 p6 2 (D1) I/O
kanpapa 0:b2dddd322c12 36 p7 3 (D2) I/O
kanpapa 0:b2dddd322c12 37 p8 4 (D3) I/O
kanpapa 0:b2dddd322c12 38 p9 5 (D4) I/O
kanpapa 0:b2dddd322c12 39 p10 6 (D5) I/O
kanpapa 0:b2dddd322c12 40 p11 7 (D6) I/O
kanpapa 0:b2dddd322c12 41 p12 8 (D7) I/O
kanpapa 0:b2dddd322c12 42 p13 10 (INT) O
kanpapa 0:b2dddd322c12 43 p14 11 (WR) I
kanpapa 0:b2dddd322c12 44 p15 12 (RD) I
kanpapa 0:b2dddd322c12 45 p16 13 (CS) I
kanpapa 0:b2dddd322c12 46 p17 14 (C/D) I
kanpapa 0:b2dddd322c12 47 GND 9,18,19 (GND)
kanpapa 0:b2dddd322c12 48 =====================
kanpapa 0:b2dddd322c12 49
kanpapa 0:b2dddd322c12 50 */
kanpapa 0:b2dddd322c12 51
kanpapa 0:b2dddd322c12 52 #include "mbed.h"
kanpapa 0:b2dddd322c12 53
kanpapa 0:b2dddd322c12 54 Serial pc(USBTX, USBRX);
kanpapa 1:05518314979e 55 LocalFileSystem local("local");
kanpapa 0:b2dddd322c12 56
kanpapa 0:b2dddd322c12 57 // VFD DATA PORT
kanpapa 1:05518314979e 58 BusOut DATA(p5, p6, p7, p8, p9, p10, p11, p12);
kanpapa 0:b2dddd322c12 59 // __
kanpapa 0:b2dddd322c12 60 // Write Signal (WR)
kanpapa 0:b2dddd322c12 61 DigitalOut WR(p14);
kanpapa 0:b2dddd322c12 62 // __
kanpapa 0:b2dddd322c12 63 // Read Signal (RD)
kanpapa 0:b2dddd322c12 64 DigitalOut RD(p15);
kanpapa 0:b2dddd322c12 65 // __
kanpapa 0:b2dddd322c12 66 // Chip Select Signal (CS)
kanpapa 0:b2dddd322c12 67 DigitalOut CS(p16);
kanpapa 0:b2dddd322c12 68 // _
kanpapa 0:b2dddd322c12 69 // Command / Data Select Signal (C/D)
kanpapa 0:b2dddd322c12 70 DigitalOut CD(p17);
kanpapa 0:b2dddd322c12 71 //
kanpapa 0:b2dddd322c12 72 // Frame Signal
kanpapa 0:b2dddd322c12 73 DigitalIn INT(p13);
kanpapa 0:b2dddd322c12 74
kanpapa 0:b2dddd322c12 75 // LED Status
kanpapa 1:05518314979e 76 DigitalOut led1(LED1);
kanpapa 1:05518314979e 77 DigitalOut led2(LED2);
kanpapa 1:05518314979e 78 DigitalOut led3(LED3);
kanpapa 1:05518314979e 79 DigitalOut led4(LED4);
kanpapa 1:05518314979e 80
kanpapa 0:b2dddd322c12 81
kanpapa 0:b2dddd322c12 82 const uint8_t HIGH = 1;
kanpapa 0:b2dddd322c12 83 const uint8_t LOW = 0;
kanpapa 0:b2dddd322c12 84 const uint16_t MAX_ADDRESS = 0x01fff;
kanpapa 0:b2dddd322c12 85
kanpapa 1:05518314979e 86 FILE *fp;
kanpapa 1:05518314979e 87 char in_filename[] = "/local/rom1.bin";
kanpapa 0:b2dddd322c12 88
kanpapa 0:b2dddd322c12 89 void send_cmd(uint8_t cmd)
kanpapa 0:b2dddd322c12 90 {
kanpapa 1:05518314979e 91 CD = HIGH; // C/D SET HIGH
kanpapa 1:05518314979e 92 DATA = cmd; // COMMAND SET
kanpapa 1:05518314979e 93 CS = LOW; // CS SET LOW
kanpapa 1:05518314979e 94 WR = LOW; // WR SET LOW
kanpapa 1:05518314979e 95 wait_us(2); // wait 2us
kanpapa 1:05518314979e 96 WR = HIGH; // WR SET HIGH
kanpapa 1:05518314979e 97 CS = HIGH; // CS SET HIGH
kanpapa 1:05518314979e 98 wait_us(4); // wait 4us
kanpapa 0:b2dddd322c12 99
kanpapa 0:b2dddd322c12 100 return;
kanpapa 0:b2dddd322c12 101 }
kanpapa 0:b2dddd322c12 102
kanpapa 0:b2dddd322c12 103 void send_data(uint8_t data)
kanpapa 0:b2dddd322c12 104 {
kanpapa 1:05518314979e 105 CD = LOW; // C/D SET HIGH
kanpapa 1:05518314979e 106 DATA = data; // DATA SET
kanpapa 1:05518314979e 107 CS = LOW; // CS SET LOW
kanpapa 1:05518314979e 108 WR = LOW; // WR SET LOW
kanpapa 1:05518314979e 109 wait_us(2); // wait 2us
kanpapa 1:05518314979e 110 WR = HIGH; // WR SET HIGH
kanpapa 1:05518314979e 111 CS = HIGH; // CS SET HIGH
kanpapa 1:05518314979e 112 wait_us(4); // wait 4us
kanpapa 0:b2dddd322c12 113
kanpapa 0:b2dddd322c12 114 return;
kanpapa 0:b2dddd322c12 115 }
kanpapa 0:b2dddd322c12 116
kanpapa 0:b2dddd322c12 117 // Luminance Adjustment (06H)
kanpapa 0:b2dddd322c12 118 void luminance_adjustment(uint8_t data)
kanpapa 0:b2dddd322c12 119 {
kanpapa 0:b2dddd322c12 120 send_cmd(6);
kanpapa 0:b2dddd322c12 121 send_data(data);
kanpapa 0:b2dddd322c12 122
kanpapa 0:b2dddd322c12 123 return;
kanpapa 0:b2dddd322c12 124 }
kanpapa 0:b2dddd322c12 125
kanpapa 1:05518314979e 126 // 04H,05H,02H: Setting address of Write
kanpapa 0:b2dddd322c12 127 void set_write_read_address(uint16_t address){
kanpapa 0:b2dddd322c12 128 send_cmd(4); // 04H: Setting lower address of Write-Read
kanpapa 1:05518314979e 129 send_data((uint8_t)(address & 0x0ff)); // mask upper address
kanpapa 0:b2dddd322c12 130
kanpapa 0:b2dddd322c12 131 send_cmd(5); // 05H: Setting upper address of Write-Read
kanpapa 1:05518314979e 132 send_data((uint8_t)(address >> 8)); // 8bit shift
kanpapa 1:05518314979e 133
kanpapa 1:05518314979e 134 send_cmd(2); // 02H: Data Write
kanpapa 0:b2dddd322c12 135
kanpapa 0:b2dddd322c12 136 return;
kanpapa 0:b2dddd322c12 137 }
kanpapa 0:b2dddd322c12 138
kanpapa 0:b2dddd322c12 139 // 07H,08H: Setting address display started
kanpapa 0:b2dddd322c12 140 void set_disp_start_address(uint16_t address){
kanpapa 0:b2dddd322c12 141 send_cmd(7); // 07H: Setting lower address display started
kanpapa 1:05518314979e 142 send_data((uint8_t)(address & 0x0ff));
kanpapa 0:b2dddd322c12 143
kanpapa 0:b2dddd322c12 144 send_cmd(8); // 08H: Setting upper address display started
kanpapa 0:b2dddd322c12 145 send_data((uint8_t)(address >> 8));
kanpapa 0:b2dddd322c12 146
kanpapa 0:b2dddd322c12 147 return;
kanpapa 0:b2dddd322c12 148 }
kanpapa 0:b2dddd322c12 149
kanpapa 0:b2dddd322c12 150 // TEST PATTERN
kanpapa 0:b2dddd322c12 151 void test_pattern(){
kanpapa 1:05518314979e 152 led1 = 1;
kanpapa 1:05518314979e 153 set_disp_start_address(0); // Display address: 000000H
kanpapa 1:05518314979e 154 led1 = 0;
kanpapa 0:b2dddd322c12 155
kanpapa 1:05518314979e 156 led2 = 1;
kanpapa 1:05518314979e 157 luminance_adjustment(0x0f); // 100%
kanpapa 1:05518314979e 158 led2 = 0;
kanpapa 0:b2dddd322c12 159
kanpapa 1:05518314979e 160 for (uint16_t d = 0; d < 256 ; d++){
kanpapa 1:05518314979e 161 led3 = 1;
kanpapa 1:05518314979e 162 set_write_read_address(0); // Start address: 000000H
kanpapa 1:05518314979e 163 led3 = 0;
kanpapa 0:b2dddd322c12 164
kanpapa 1:05518314979e 165 for (uint16_t i = 0; i < MAX_ADDRESS; i++){
kanpapa 1:05518314979e 166 led4 = 1;
kanpapa 1:05518314979e 167 send_data(d);
kanpapa 1:05518314979e 168 led4 = 0;
kanpapa 1:05518314979e 169 }
kanpapa 0:b2dddd322c12 170 }
kanpapa 0:b2dddd322c12 171
kanpapa 0:b2dddd322c12 172 return;
kanpapa 0:b2dddd322c12 173 }
kanpapa 0:b2dddd322c12 174
kanpapa 1:05518314979e 175 void test_datafile(){
kanpapa 1:05518314979e 176 if ( NULL == (fp = fopen( in_filename, "r" )) ) {
kanpapa 1:05518314979e 177 pc.printf("File open error.\n");
kanpapa 1:05518314979e 178 led1 = HIGH;
kanpapa 1:05518314979e 179 return;
kanpapa 1:05518314979e 180 }
kanpapa 1:05518314979e 181
kanpapa 1:05518314979e 182 led1 = 1;
kanpapa 1:05518314979e 183 set_disp_start_address(0); // Display address: 000000H
kanpapa 1:05518314979e 184 led1 = 0;
kanpapa 1:05518314979e 185
kanpapa 1:05518314979e 186 led2 = 1;
kanpapa 1:05518314979e 187 luminance_adjustment(0x0f); // 100%
kanpapa 1:05518314979e 188 led2 = 0;
kanpapa 1:05518314979e 189
kanpapa 1:05518314979e 190 led3 = 1;
kanpapa 1:05518314979e 191 set_write_read_address(0); // Start address: 000000H
kanpapa 1:05518314979e 192 led3 = 0;
kanpapa 1:05518314979e 193
kanpapa 1:05518314979e 194 char d[8]; // 1char 8byte buffer
kanpapa 1:05518314979e 195 int char_cnt = 0;
kanpapa 1:05518314979e 196
kanpapa 1:05518314979e 197 // 8byte = 1CHAR
kanpapa 1:05518314979e 198 while(fgets(d, 8, fp) != NULL && char_cnt < 10) {
kanpapa 1:05518314979e 199 for (int byte_num = 0; byte_num < 8 ; byte_num++){ // byte
kanpapa 1:05518314979e 200 pc.printf("d[%d]:%02x ",byte_num,d[byte_num]);
kanpapa 1:05518314979e 201 uint8_t a = 0;
kanpapa 1:05518314979e 202 for (int bit_num = 7; bit_num >= 0; bit_num--){ // bit
kanpapa 1:05518314979e 203 if ((d[byte_num] & 0x80) != 0) {
kanpapa 1:05518314979e 204 a = a + (2 ^ bit_num);
kanpapa 1:05518314979e 205 }
kanpapa 1:05518314979e 206 d[byte_num] = d[byte_num] << 1;
kanpapa 1:05518314979e 207 pc.printf("a:%02x d:%02x ",a,d[byte_num]);
kanpapa 1:05518314979e 208 }
kanpapa 1:05518314979e 209 if ((d[byte_num] & 0x80) != 0) a++;
kanpapa 1:05518314979e 210
kanpapa 1:05518314979e 211 led4 = 1;
kanpapa 1:05518314979e 212 pc.printf("A:%02x ",a);
kanpapa 1:05518314979e 213 send_data(a);
kanpapa 1:05518314979e 214 led4 = 0;
kanpapa 1:05518314979e 215
kanpapa 1:05518314979e 216 for (int e = 0; e < 7 ; e++) send_data(0);
kanpapa 1:05518314979e 217 }
kanpapa 1:05518314979e 218 char_cnt++;
kanpapa 1:05518314979e 219 }
kanpapa 1:05518314979e 220 fclose(fp);
kanpapa 1:05518314979e 221
kanpapa 1:05518314979e 222 return;
kanpapa 1:05518314979e 223 }
kanpapa 1:05518314979e 224
kanpapa 0:b2dddd322c12 225 void blink_LED() {
kanpapa 1:05518314979e 226 for (int i = 0 ; i < 5 ; i++) {
kanpapa 1:05518314979e 227 led4 = 1;
kanpapa 0:b2dddd322c12 228 wait(0.2);
kanpapa 1:05518314979e 229 led4 = 0;
kanpapa 0:b2dddd322c12 230 wait(0.2);
kanpapa 0:b2dddd322c12 231 }
kanpapa 0:b2dddd322c12 232 return;
kanpapa 0:b2dddd322c12 233 }
kanpapa 0:b2dddd322c12 234
kanpapa 0:b2dddd322c12 235 int main() {
kanpapa 0:b2dddd322c12 236
kanpapa 0:b2dddd322c12 237 led1 = LOW;
kanpapa 0:b2dddd322c12 238 led2 = LOW;
kanpapa 0:b2dddd322c12 239 led3 = LOW;
kanpapa 1:05518314979e 240 led4 = LOW;
kanpapa 0:b2dddd322c12 241
kanpapa 0:b2dddd322c12 242 CS = HIGH;
kanpapa 0:b2dddd322c12 243 WR = HIGH;
kanpapa 0:b2dddd322c12 244 RD = HIGH;
kanpapa 0:b2dddd322c12 245 CD = HIGH;
kanpapa 0:b2dddd322c12 246
kanpapa 0:b2dddd322c12 247 // Start Sign
kanpapa 0:b2dddd322c12 248 blink_LED();
kanpapa 0:b2dddd322c12 249
kanpapa 0:b2dddd322c12 250 // TEST
kanpapa 1:05518314979e 251 //test_pattern();
kanpapa 1:05518314979e 252
kanpapa 1:05518314979e 253 test_datafile();
kanpapa 0:b2dddd322c12 254
kanpapa 0:b2dddd322c12 255 // END Sign
kanpapa 0:b2dddd322c12 256 blink_LED();
kanpapa 0:b2dddd322c12 257 }