VFD command test program

Dependencies:   mbed

Committer:
kanpapa
Date:
Sun Oct 02 12:01:29 2011 +0000
Revision:
0:b2dddd322c12
Child:
1:05518314979e
1st commit.

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 0:b2dddd322c12 55
kanpapa 0:b2dddd322c12 56 // VFD DATA PORT
kanpapa 0:b2dddd322c12 57 BusInOut DATA(p5, p6, p7, p8, p9, p10, p11, p12);
kanpapa 0:b2dddd322c12 58 // __
kanpapa 0:b2dddd322c12 59 // Write Signal (WR)
kanpapa 0:b2dddd322c12 60 DigitalOut WR(p14);
kanpapa 0:b2dddd322c12 61 // __
kanpapa 0:b2dddd322c12 62 // Read Signal (RD)
kanpapa 0:b2dddd322c12 63 DigitalOut RD(p15);
kanpapa 0:b2dddd322c12 64 // __
kanpapa 0:b2dddd322c12 65 // Chip Select Signal (CS)
kanpapa 0:b2dddd322c12 66 DigitalOut CS(p16);
kanpapa 0:b2dddd322c12 67 // _
kanpapa 0:b2dddd322c12 68 // Command / Data Select Signal (C/D)
kanpapa 0:b2dddd322c12 69 DigitalOut CD(p17);
kanpapa 0:b2dddd322c12 70 //
kanpapa 0:b2dddd322c12 71 // Frame Signal
kanpapa 0:b2dddd322c12 72 DigitalIn INT(p13);
kanpapa 0:b2dddd322c12 73
kanpapa 0:b2dddd322c12 74 // LED Status
kanpapa 0:b2dddd322c12 75 DigitalOut led1(LED2);
kanpapa 0:b2dddd322c12 76 DigitalOut led2(LED3);
kanpapa 0:b2dddd322c12 77 DigitalOut led3(LED4);
kanpapa 0:b2dddd322c12 78
kanpapa 0:b2dddd322c12 79 const uint8_t HIGH = 1;
kanpapa 0:b2dddd322c12 80 const uint8_t LOW = 0;
kanpapa 0:b2dddd322c12 81
kanpapa 0:b2dddd322c12 82 const uint16_t MAX_ADDRESS = 0x01fff;
kanpapa 0:b2dddd322c12 83
kanpapa 0:b2dddd322c12 84
kanpapa 0:b2dddd322c12 85 void send_cmd(uint8_t cmd)
kanpapa 0:b2dddd322c12 86 {
kanpapa 0:b2dddd322c12 87 // LED ON
kanpapa 0:b2dddd322c12 88 led1 = HIGH;
kanpapa 0:b2dddd322c12 89
kanpapa 0:b2dddd322c12 90 // C/D SET HIGH
kanpapa 0:b2dddd322c12 91 CD = HIGH;
kanpapa 0:b2dddd322c12 92 wait_us(1);
kanpapa 0:b2dddd322c12 93
kanpapa 0:b2dddd322c12 94 // CS SET LOW
kanpapa 0:b2dddd322c12 95 CS = LOW;
kanpapa 0:b2dddd322c12 96 wait_us(1);
kanpapa 0:b2dddd322c12 97
kanpapa 0:b2dddd322c12 98 // WR SET LOW
kanpapa 0:b2dddd322c12 99 WR = LOW;
kanpapa 0:b2dddd322c12 100 wait_us(1);
kanpapa 0:b2dddd322c12 101
kanpapa 0:b2dddd322c12 102 // COMMAND SET
kanpapa 0:b2dddd322c12 103 DATA = cmd;
kanpapa 0:b2dddd322c12 104 wait_us(1);
kanpapa 0:b2dddd322c12 105
kanpapa 0:b2dddd322c12 106 // WR SET HIGH
kanpapa 0:b2dddd322c12 107 WR = HIGH;
kanpapa 0:b2dddd322c12 108 wait_us(1);
kanpapa 0:b2dddd322c12 109
kanpapa 0:b2dddd322c12 110 // CS SET HIGH
kanpapa 0:b2dddd322c12 111 CS = HIGH;
kanpapa 0:b2dddd322c12 112 wait_us(1);
kanpapa 0:b2dddd322c12 113
kanpapa 0:b2dddd322c12 114 // LED OFF
kanpapa 0:b2dddd322c12 115 led1 = LOW;
kanpapa 0:b2dddd322c12 116
kanpapa 0:b2dddd322c12 117 return;
kanpapa 0:b2dddd322c12 118 }
kanpapa 0:b2dddd322c12 119
kanpapa 0:b2dddd322c12 120 void send_data(uint8_t data)
kanpapa 0:b2dddd322c12 121 {
kanpapa 0:b2dddd322c12 122 // LED ON
kanpapa 0:b2dddd322c12 123 led2 = HIGH;
kanpapa 0:b2dddd322c12 124
kanpapa 0:b2dddd322c12 125 // C/D SET HIGH
kanpapa 0:b2dddd322c12 126 CD = LOW;
kanpapa 0:b2dddd322c12 127 wait_us(1);
kanpapa 0:b2dddd322c12 128
kanpapa 0:b2dddd322c12 129 // CS SET LOW
kanpapa 0:b2dddd322c12 130 CS = LOW;
kanpapa 0:b2dddd322c12 131 wait_us(1);
kanpapa 0:b2dddd322c12 132
kanpapa 0:b2dddd322c12 133 // WR SET LOW
kanpapa 0:b2dddd322c12 134 WR = LOW;
kanpapa 0:b2dddd322c12 135 wait_us(1);
kanpapa 0:b2dddd322c12 136
kanpapa 0:b2dddd322c12 137 // DATA SET
kanpapa 0:b2dddd322c12 138 DATA = data;
kanpapa 0:b2dddd322c12 139 wait_us(1);
kanpapa 0:b2dddd322c12 140
kanpapa 0:b2dddd322c12 141 // WR SET HIGH
kanpapa 0:b2dddd322c12 142 WR = HIGH;
kanpapa 0:b2dddd322c12 143 wait_us(1);
kanpapa 0:b2dddd322c12 144
kanpapa 0:b2dddd322c12 145 // CS SET HIGH
kanpapa 0:b2dddd322c12 146 CS = HIGH;
kanpapa 0:b2dddd322c12 147 wait_us(1);
kanpapa 0:b2dddd322c12 148
kanpapa 0:b2dddd322c12 149 // LED OFF
kanpapa 0:b2dddd322c12 150 led2 = LOW;
kanpapa 0:b2dddd322c12 151
kanpapa 0:b2dddd322c12 152 return;
kanpapa 0:b2dddd322c12 153 }
kanpapa 0:b2dddd322c12 154
kanpapa 0:b2dddd322c12 155 // Write/Read address is automatically incremented (00H)
kanpapa 0:b2dddd322c12 156 void cmd_00H(){
kanpapa 0:b2dddd322c12 157 send_cmd(0);
kanpapa 0:b2dddd322c12 158 return;
kanpapa 0:b2dddd322c12 159 }
kanpapa 0:b2dddd322c12 160
kanpapa 0:b2dddd322c12 161 void cmd_01H(){
kanpapa 0:b2dddd322c12 162 send_cmd(1);
kanpapa 0:b2dddd322c12 163 return;
kanpapa 0:b2dddd322c12 164 }
kanpapa 0:b2dddd322c12 165
kanpapa 0:b2dddd322c12 166 // Luminance Adjustment (06H)
kanpapa 0:b2dddd322c12 167 void luminance_adjustment(uint8_t data)
kanpapa 0:b2dddd322c12 168 {
kanpapa 0:b2dddd322c12 169 send_cmd(6);
kanpapa 0:b2dddd322c12 170 send_data(data);
kanpapa 0:b2dddd322c12 171
kanpapa 0:b2dddd322c12 172 return;
kanpapa 0:b2dddd322c12 173 }
kanpapa 0:b2dddd322c12 174
kanpapa 0:b2dddd322c12 175 // Data Write/Read(02H,03H);
kanpapa 0:b2dddd322c12 176 void write_display_data(uint8_t data){
kanpapa 0:b2dddd322c12 177 send_cmd(2); // 04H
kanpapa 0:b2dddd322c12 178 send_data(data);
kanpapa 0:b2dddd322c12 179
kanpapa 0:b2dddd322c12 180 return;
kanpapa 0:b2dddd322c12 181 }
kanpapa 0:b2dddd322c12 182
kanpapa 0:b2dddd322c12 183 // 04H,05H: Setting address of Write-Read
kanpapa 0:b2dddd322c12 184 void set_write_read_address(uint16_t address){
kanpapa 0:b2dddd322c12 185 send_cmd(4); // 04H: Setting lower address of Write-Read
kanpapa 0:b2dddd322c12 186 send_data((uint8_t)(address && 0x0ff)); // mask upper address
kanpapa 0:b2dddd322c12 187
kanpapa 0:b2dddd322c12 188 send_cmd(5); // 05H: Setting upper address of Write-Read
kanpapa 0:b2dddd322c12 189 send_data((uint8_t)(address >> 8)); // 8bit shift
kanpapa 0:b2dddd322c12 190
kanpapa 0:b2dddd322c12 191 return;
kanpapa 0:b2dddd322c12 192 }
kanpapa 0:b2dddd322c12 193
kanpapa 0:b2dddd322c12 194 // 07H,08H: Setting address display started
kanpapa 0:b2dddd322c12 195 void set_disp_start_address(uint16_t address){
kanpapa 0:b2dddd322c12 196 send_cmd(7); // 07H: Setting lower address display started
kanpapa 0:b2dddd322c12 197 send_data((uint8_t)(address && 0x0ff));
kanpapa 0:b2dddd322c12 198
kanpapa 0:b2dddd322c12 199 send_cmd(8); // 08H: Setting upper address display started
kanpapa 0:b2dddd322c12 200 send_data((uint8_t)(address >> 8));
kanpapa 0:b2dddd322c12 201
kanpapa 0:b2dddd322c12 202 return;
kanpapa 0:b2dddd322c12 203 }
kanpapa 0:b2dddd322c12 204
kanpapa 0:b2dddd322c12 205 // TEST PATTERN
kanpapa 0:b2dddd322c12 206 void test_pattern(){
kanpapa 0:b2dddd322c12 207 uint8_t d = 0;
kanpapa 0:b2dddd322c12 208
kanpapa 0:b2dddd322c12 209 //cmd_00H(); // Write/Read address is automatically incremented
kanpapa 0:b2dddd322c12 210
kanpapa 0:b2dddd322c12 211 luminance_adjustment(8); // 51.9%
kanpapa 0:b2dddd322c12 212
kanpapa 0:b2dddd322c12 213 set_write_read_address(0); // Start address: 000000H
kanpapa 0:b2dddd322c12 214
kanpapa 0:b2dddd322c12 215 set_disp_start_address(0); // Display address: 000000H
kanpapa 0:b2dddd322c12 216
kanpapa 0:b2dddd322c12 217 for (uint16_t i = 0; i < MAX_ADDRESS; i++){
kanpapa 0:b2dddd322c12 218 write_display_data(d++);
kanpapa 0:b2dddd322c12 219 if (d > 255) { d = 0; }
kanpapa 0:b2dddd322c12 220 }
kanpapa 0:b2dddd322c12 221
kanpapa 0:b2dddd322c12 222 return;
kanpapa 0:b2dddd322c12 223 }
kanpapa 0:b2dddd322c12 224
kanpapa 0:b2dddd322c12 225 void blink_LED() {
kanpapa 0:b2dddd322c12 226 for (int i = 0 ; i < 10 ; i++) {
kanpapa 0:b2dddd322c12 227 led3 = 1;
kanpapa 0:b2dddd322c12 228 wait(0.2);
kanpapa 0:b2dddd322c12 229 led3 = 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 0:b2dddd322c12 240
kanpapa 0:b2dddd322c12 241 CS = HIGH;
kanpapa 0:b2dddd322c12 242 WR = HIGH;
kanpapa 0:b2dddd322c12 243 RD = HIGH;
kanpapa 0:b2dddd322c12 244 CD = HIGH;
kanpapa 0:b2dddd322c12 245
kanpapa 0:b2dddd322c12 246 // Start Sign
kanpapa 0:b2dddd322c12 247 blink_LED();
kanpapa 0:b2dddd322c12 248
kanpapa 0:b2dddd322c12 249 // TEST
kanpapa 0:b2dddd322c12 250 test_pattern();
kanpapa 0:b2dddd322c12 251
kanpapa 0:b2dddd322c12 252 // END Sign
kanpapa 0:b2dddd322c12 253 blink_LED();
kanpapa 0:b2dddd322c12 254 }