Kazuhiro Ouchi
/
VFD_fontx2_test1
VFD(FUTABA GP1059A01)にFONTX2形式の16ドットフォントを表示します。
Embed:
(wiki syntax)
Show/hide line numbers
vfd_gp1059.h
00001 /* 00002 00003 VFD Control class for GP1059A01 00004 00005 =============== 00006 GP1059A01 INTERFACE CONNECTION 00007 --------------- 00008 1 D0 2 D1 00009 3 D2 4 D3 00010 5 D4 6 D5 00011 7 D6 8 D7 00012 9 GND 10 INT 00013 11 WR 12 RD 00014 13 CS 14 C/D 00015 15 5V 16 5V 00016 17 5V 18 GND 00017 19 GND 20 ebb(+70V) 00018 00019 ===================== 00020 mbed CONNECTION 00021 --------------------- 00022 mbed GP1059A01(I/O) 00023 --------------------- 00024 p5 1 (D0) I/O 00025 p6 2 (D1) I/O 00026 p7 3 (D2) I/O 00027 p8 4 (D3) I/O 00028 p9 5 (D4) I/O 00029 p10 6 (D5) I/O 00030 p11 7 (D6) I/O 00031 p12 8 (D7) I/O 00032 p13 10 (INT) O 00033 p14 11 (WR) I 00034 p15 12 (RD) I 00035 p16 13 (CS) I 00036 p17 14 (C/D) I 00037 GND 9,18,19 (GND) 00038 ===================== 00039 00040 */ 00041 00042 #ifndef __VFD_GP1059_H__ 00043 #define __VFD_GP1059_H__ 00044 00045 #include "mbed.h" 00046 00047 class VFD_GP1059 { 00048 private: 00049 BusOut data; 00050 DigitalOut wr,rd,cs,cd; 00051 DigitalIn intr; 00052 00053 void init(){ 00054 cs = 1; 00055 wr = 1; 00056 rd = 1; 00057 cd = 1; 00058 } 00059 00060 public: 00061 // constructor 00062 VFD_GP1059(PinName d0_pin, 00063 PinName d1_pin, 00064 PinName d2_pin, 00065 PinName d3_pin, 00066 PinName d4_pin, 00067 PinName d5_pin, 00068 PinName d6_pin, 00069 PinName d7_pin, 00070 PinName intr_pin, 00071 PinName wr_pin, 00072 PinName rd_pin, 00073 PinName cs_pin, 00074 PinName cd_pin) : 00075 data(d0_pin, d1_pin, d2_pin, d3_pin, d4_pin, d5_pin, d6_pin, d7_pin), 00076 intr(intr_pin), 00077 wr(wr_pin), 00078 rd(rd_pin), 00079 cs(cs_pin), 00080 cd(cd_pin) { 00081 init(); 00082 cls(); 00083 } 00084 00085 void send_cmd(uint8_t cmd){ 00086 cd = 1; // C/D SET HIGH 00087 data = cmd; // COMMAND SET 00088 cs = 0; // CS SET LOW 00089 wr = 0; // WR SET LOW 00090 wait_us(2); // wait 2us 00091 wr = 1; // WR SET HIGH 00092 cs = 1; // CS SET HIGH 00093 wait_us(4); // wait 4us 00094 00095 return; 00096 } 00097 00098 void send_data(uint8_t data_value){ 00099 cd = 0; // C/D SET HIGH 00100 data = data_value; // DATA SET 00101 cs = 0; // CS SET LOW 00102 wr = 0; // WR SET LOW 00103 wait_us(2); // wait 2us 00104 wr = 1; // WR SET HIGH 00105 cs = 1; // CS SET HIGH 00106 wait_us(4); // wait 4us 00107 00108 return; 00109 } 00110 00111 // Luminance Adjustment (06H) 00112 void luminance_adjustment(uint8_t data){ 00113 send_cmd(6); 00114 send_data(data); 00115 00116 return; 00117 } 00118 00119 // 04H,05H,02H: Setting address of Write 00120 void set_write_read_address(uint16_t address){ 00121 send_cmd(4); // 04H: Setting lower address of Write-Read 00122 send_data((uint8_t)(address & 0x0ff)); // mask upper address 00123 00124 send_cmd(5); // 05H: Setting upper address of Write-Read 00125 send_data((uint8_t)(address >> 8)); // 8bit shift 00126 00127 send_cmd(2); // 02H: Data Write 00128 00129 return; 00130 } 00131 00132 // 07H,08H: Setting address display started 00133 void set_disp_start_address(uint16_t address){ 00134 send_cmd(7); // 07H: Setting lower address display started 00135 send_data((uint8_t)(address & 0x0ff)); 00136 00137 send_cmd(8); // 08H: Setting upper address display started 00138 send_data((uint8_t)(address >> 8)); 00139 00140 return; 00141 } 00142 00143 // Clear display memory 00144 void cls(){ 00145 set_disp_start_address(0); 00146 set_write_read_address(0); 00147 for (int i = 0; i < 0x1fff; i++){ 00148 send_data(0); 00149 } 00150 return; 00151 } 00152 00153 }; 00154 00155 #endif
Generated on Wed Jul 13 2022 01:18:25 by 1.7.2