Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 /* 00002 00003 mbed VFD Control for GP1059A01 00004 00005 =============== 00006 Status LED 00007 ----------- 00008 LED1: 00009 LED2: 00010 LED3: 00011 LED4: 00012 00013 =============== 00014 GP1059A01 INTERFACE CONNECTION 00015 --------------- 00016 1 D0 2 D1 00017 3 D2 4 D3 00018 5 D4 6 D5 00019 7 D6 8 D7 00020 9 GND 10 INT 00021 11 WR 12 RD 00022 13 CS 14 C/D 00023 15 5V 16 5V 00024 17 5V 18 GND 00025 19 GND 20 ebb(+70V) 00026 00027 00028 00029 ===================== 00030 mbed CONNECTION 00031 --------------------- 00032 mbed GP1059A01(I/O) 00033 --------------------- 00034 p5 1 (D0) I/O 00035 p6 2 (D1) I/O 00036 p7 3 (D2) I/O 00037 p8 4 (D3) I/O 00038 p9 5 (D4) I/O 00039 p10 6 (D5) I/O 00040 p11 7 (D6) I/O 00041 p12 8 (D7) I/O 00042 p13 10 (INT) O 00043 p14 11 (WR) I 00044 p15 12 (RD) I 00045 p16 13 (CS) I 00046 p17 14 (C/D) I 00047 GND 9,18,19 (GND) 00048 ===================== 00049 00050 */ 00051 00052 #include "mbed.h" 00053 00054 Serial pc(USBTX, USBRX); 00055 LocalFileSystem local("local"); 00056 00057 // VFD DATA PORT 00058 BusOut DATA(p5, p6, p7, p8, p9, p10, p11, p12); 00059 // __ 00060 // Write Signal (WR) 00061 DigitalOut WR(p14); 00062 // __ 00063 // Read Signal (RD) 00064 DigitalOut RD(p15); 00065 // __ 00066 // Chip Select Signal (CS) 00067 DigitalOut CS(p16); 00068 // _ 00069 // Command / Data Select Signal (C/D) 00070 DigitalOut CD(p17); 00071 // 00072 // Frame Signal 00073 DigitalIn INT(p13); 00074 00075 // LED Status 00076 DigitalOut led1(LED1); 00077 DigitalOut led2(LED2); 00078 DigitalOut led3(LED3); 00079 DigitalOut led4(LED4); 00080 00081 00082 const uint8_t HIGH = 1; 00083 const uint8_t LOW = 0; 00084 const uint16_t MAX_ADDRESS = 0x01fff; 00085 00086 FILE *fp; 00087 char in_filename[] = "/local/rom1.bin"; 00088 00089 void send_cmd(uint8_t cmd) 00090 { 00091 CD = HIGH; // C/D SET HIGH 00092 DATA = cmd; // COMMAND SET 00093 CS = LOW; // CS SET LOW 00094 WR = LOW; // WR SET LOW 00095 wait_us(2); // wait 2us 00096 WR = HIGH; // WR SET HIGH 00097 CS = HIGH; // CS SET HIGH 00098 wait_us(4); // wait 4us 00099 00100 return; 00101 } 00102 00103 void send_data(uint8_t data) 00104 { 00105 CD = LOW; // C/D SET HIGH 00106 DATA = data; // DATA SET 00107 CS = LOW; // CS SET LOW 00108 WR = LOW; // WR SET LOW 00109 wait_us(2); // wait 2us 00110 WR = HIGH; // WR SET HIGH 00111 CS = HIGH; // CS SET HIGH 00112 wait_us(4); // wait 4us 00113 00114 return; 00115 } 00116 00117 // Luminance Adjustment (06H) 00118 void luminance_adjustment(uint8_t data) 00119 { 00120 send_cmd(6); 00121 send_data(data); 00122 00123 return; 00124 } 00125 00126 // 04H,05H,02H: Setting address of Write 00127 void set_write_read_address(uint16_t address){ 00128 send_cmd(4); // 04H: Setting lower address of Write-Read 00129 send_data((uint8_t)(address & 0x0ff)); // mask upper address 00130 00131 send_cmd(5); // 05H: Setting upper address of Write-Read 00132 send_data((uint8_t)(address >> 8)); // 8bit shift 00133 00134 send_cmd(2); // 02H: Data Write 00135 00136 return; 00137 } 00138 00139 // 07H,08H: Setting address display started 00140 void set_disp_start_address(uint16_t address){ 00141 send_cmd(7); // 07H: Setting lower address display started 00142 send_data((uint8_t)(address & 0x0ff)); 00143 00144 send_cmd(8); // 08H: Setting upper address display started 00145 send_data((uint8_t)(address >> 8)); 00146 00147 return; 00148 } 00149 00150 // TEST PATTERN 00151 void test_pattern(){ 00152 led1 = 1; 00153 set_disp_start_address(0); // Display address: 000000H 00154 led1 = 0; 00155 00156 led2 = 1; 00157 luminance_adjustment(0x0f); // 100% 00158 led2 = 0; 00159 00160 for (uint16_t d = 0; d < 256 ; d++){ 00161 led3 = 1; 00162 set_write_read_address(0); // Start address: 000000H 00163 led3 = 0; 00164 00165 for (uint16_t i = 0; i < MAX_ADDRESS; i++){ 00166 led4 = 1; 00167 send_data(d); 00168 led4 = 0; 00169 } 00170 } 00171 00172 return; 00173 } 00174 00175 void test_datafile(){ 00176 if ( NULL == (fp = fopen( in_filename, "r" )) ) { 00177 pc.printf("File open error.\n"); 00178 led1 = HIGH; 00179 return; 00180 } 00181 00182 led1 = 1; 00183 set_disp_start_address(0); // Display address: 000000H 00184 led1 = 0; 00185 00186 led2 = 1; 00187 luminance_adjustment(0x0f); // 100% 00188 led2 = 0; 00189 00190 led3 = 1; 00191 set_write_read_address(0); // Start address: 000000H 00192 led3 = 0; 00193 00194 char d[8]; // 1char 8byte buffer 00195 int char_cnt = 0; 00196 00197 // 8byte = 1CHAR 00198 while(fgets(d, 8, fp) != NULL && char_cnt < 10) { 00199 for (int byte_num = 0; byte_num < 8 ; byte_num++){ // byte 00200 pc.printf("d[%d]:%02x ",byte_num,d[byte_num]); 00201 uint8_t a = 0; 00202 for (int bit_num = 7; bit_num >= 0; bit_num--){ // bit 00203 if ((d[byte_num] & 0x80) != 0) { 00204 a = a + (2 ^ bit_num); 00205 } 00206 d[byte_num] = d[byte_num] << 1; 00207 pc.printf("a:%02x d:%02x ",a,d[byte_num]); 00208 } 00209 if ((d[byte_num] & 0x80) != 0) a++; 00210 00211 led4 = 1; 00212 pc.printf("A:%02x ",a); 00213 send_data(a); 00214 led4 = 0; 00215 00216 for (int e = 0; e < 7 ; e++) send_data(0); 00217 } 00218 char_cnt++; 00219 } 00220 fclose(fp); 00221 00222 return; 00223 } 00224 00225 void blink_LED() { 00226 for (int i = 0 ; i < 5 ; i++) { 00227 led4 = 1; 00228 wait(0.2); 00229 led4 = 0; 00230 wait(0.2); 00231 } 00232 return; 00233 } 00234 00235 int main() { 00236 00237 led1 = LOW; 00238 led2 = LOW; 00239 led3 = LOW; 00240 led4 = LOW; 00241 00242 CS = HIGH; 00243 WR = HIGH; 00244 RD = HIGH; 00245 CD = HIGH; 00246 00247 // Start Sign 00248 blink_LED(); 00249 00250 // TEST 00251 //test_pattern(); 00252 00253 test_datafile(); 00254 00255 // END Sign 00256 blink_LED(); 00257 }
Generated on Tue Jul 26 2022 19:09:55 by
1.7.2