VFD(FUTABA GP1059A01)にFONTX2形式の16ドットフォントを表示します。

Dependencies:   mbed

Committer:
kanpapa
Date:
Sat Nov 12 05:47:37 2011 +0000
Revision:
1:c40b9c81a2ba
Parent:
0:f4f140765442
aplha rev.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kanpapa 0:f4f140765442 1 /*
kanpapa 0:f4f140765442 2
kanpapa 0:f4f140765442 3 VFD Control class for GP1059A01
kanpapa 0:f4f140765442 4
kanpapa 0:f4f140765442 5 ===============
kanpapa 0:f4f140765442 6 GP1059A01 INTERFACE CONNECTION
kanpapa 0:f4f140765442 7 ---------------
kanpapa 0:f4f140765442 8 1 D0 2 D1
kanpapa 0:f4f140765442 9 3 D2 4 D3
kanpapa 0:f4f140765442 10 5 D4 6 D5
kanpapa 0:f4f140765442 11 7 D6 8 D7
kanpapa 0:f4f140765442 12 9 GND 10 INT
kanpapa 0:f4f140765442 13 11 WR 12 RD
kanpapa 0:f4f140765442 14 13 CS 14 C/D
kanpapa 0:f4f140765442 15 15 5V 16 5V
kanpapa 0:f4f140765442 16 17 5V 18 GND
kanpapa 0:f4f140765442 17 19 GND 20 ebb(+70V)
kanpapa 0:f4f140765442 18
kanpapa 0:f4f140765442 19 =====================
kanpapa 0:f4f140765442 20 mbed CONNECTION
kanpapa 0:f4f140765442 21 ---------------------
kanpapa 0:f4f140765442 22 mbed GP1059A01(I/O)
kanpapa 0:f4f140765442 23 ---------------------
kanpapa 0:f4f140765442 24 p5 1 (D0) I/O
kanpapa 0:f4f140765442 25 p6 2 (D1) I/O
kanpapa 0:f4f140765442 26 p7 3 (D2) I/O
kanpapa 0:f4f140765442 27 p8 4 (D3) I/O
kanpapa 0:f4f140765442 28 p9 5 (D4) I/O
kanpapa 0:f4f140765442 29 p10 6 (D5) I/O
kanpapa 0:f4f140765442 30 p11 7 (D6) I/O
kanpapa 0:f4f140765442 31 p12 8 (D7) I/O
kanpapa 0:f4f140765442 32 p13 10 (INT) O
kanpapa 0:f4f140765442 33 p14 11 (WR) I
kanpapa 0:f4f140765442 34 p15 12 (RD) I
kanpapa 0:f4f140765442 35 p16 13 (CS) I
kanpapa 0:f4f140765442 36 p17 14 (C/D) I
kanpapa 0:f4f140765442 37 GND 9,18,19 (GND)
kanpapa 0:f4f140765442 38 =====================
kanpapa 0:f4f140765442 39
kanpapa 0:f4f140765442 40 */
kanpapa 0:f4f140765442 41
kanpapa 0:f4f140765442 42 #ifndef __VFD_GP1059_H__
kanpapa 0:f4f140765442 43 #define __VFD_GP1059_H__
kanpapa 0:f4f140765442 44
kanpapa 0:f4f140765442 45 #include "mbed.h"
kanpapa 0:f4f140765442 46
kanpapa 0:f4f140765442 47 class VFD_GP1059 {
kanpapa 0:f4f140765442 48 private:
kanpapa 0:f4f140765442 49 BusOut data;
kanpapa 0:f4f140765442 50 DigitalOut wr,rd,cs,cd;
kanpapa 0:f4f140765442 51 DigitalIn intr;
kanpapa 0:f4f140765442 52
kanpapa 0:f4f140765442 53 void init(){
kanpapa 0:f4f140765442 54 cs = 1;
kanpapa 0:f4f140765442 55 wr = 1;
kanpapa 0:f4f140765442 56 rd = 1;
kanpapa 0:f4f140765442 57 cd = 1;
kanpapa 0:f4f140765442 58 }
kanpapa 0:f4f140765442 59
kanpapa 0:f4f140765442 60 public:
kanpapa 0:f4f140765442 61 // constructor
kanpapa 0:f4f140765442 62 VFD_GP1059(PinName d0_pin,
kanpapa 0:f4f140765442 63 PinName d1_pin,
kanpapa 0:f4f140765442 64 PinName d2_pin,
kanpapa 0:f4f140765442 65 PinName d3_pin,
kanpapa 0:f4f140765442 66 PinName d4_pin,
kanpapa 0:f4f140765442 67 PinName d5_pin,
kanpapa 0:f4f140765442 68 PinName d6_pin,
kanpapa 0:f4f140765442 69 PinName d7_pin,
kanpapa 0:f4f140765442 70 PinName intr_pin,
kanpapa 0:f4f140765442 71 PinName wr_pin,
kanpapa 0:f4f140765442 72 PinName rd_pin,
kanpapa 0:f4f140765442 73 PinName cs_pin,
kanpapa 0:f4f140765442 74 PinName cd_pin) :
kanpapa 0:f4f140765442 75 data(d0_pin, d1_pin, d2_pin, d3_pin, d4_pin, d5_pin, d6_pin, d7_pin),
kanpapa 0:f4f140765442 76 intr(intr_pin),
kanpapa 0:f4f140765442 77 wr(wr_pin),
kanpapa 0:f4f140765442 78 rd(rd_pin),
kanpapa 0:f4f140765442 79 cs(cs_pin),
kanpapa 0:f4f140765442 80 cd(cd_pin) {
kanpapa 0:f4f140765442 81 init();
kanpapa 0:f4f140765442 82 cls();
kanpapa 0:f4f140765442 83 }
kanpapa 0:f4f140765442 84
kanpapa 0:f4f140765442 85 void send_cmd(uint8_t cmd){
kanpapa 0:f4f140765442 86 cd = 1; // C/D SET HIGH
kanpapa 0:f4f140765442 87 data = cmd; // COMMAND SET
kanpapa 0:f4f140765442 88 cs = 0; // CS SET LOW
kanpapa 0:f4f140765442 89 wr = 0; // WR SET LOW
kanpapa 0:f4f140765442 90 wait_us(2); // wait 2us
kanpapa 0:f4f140765442 91 wr = 1; // WR SET HIGH
kanpapa 0:f4f140765442 92 cs = 1; // CS SET HIGH
kanpapa 0:f4f140765442 93 wait_us(4); // wait 4us
kanpapa 0:f4f140765442 94
kanpapa 0:f4f140765442 95 return;
kanpapa 0:f4f140765442 96 }
kanpapa 0:f4f140765442 97
kanpapa 0:f4f140765442 98 void send_data(uint8_t data_value){
kanpapa 0:f4f140765442 99 cd = 0; // C/D SET HIGH
kanpapa 0:f4f140765442 100 data = data_value; // DATA SET
kanpapa 0:f4f140765442 101 cs = 0; // CS SET LOW
kanpapa 0:f4f140765442 102 wr = 0; // WR SET LOW
kanpapa 0:f4f140765442 103 wait_us(2); // wait 2us
kanpapa 0:f4f140765442 104 wr = 1; // WR SET HIGH
kanpapa 0:f4f140765442 105 cs = 1; // CS SET HIGH
kanpapa 0:f4f140765442 106 wait_us(4); // wait 4us
kanpapa 0:f4f140765442 107
kanpapa 0:f4f140765442 108 return;
kanpapa 0:f4f140765442 109 }
kanpapa 0:f4f140765442 110
kanpapa 0:f4f140765442 111 // Luminance Adjustment (06H)
kanpapa 0:f4f140765442 112 void luminance_adjustment(uint8_t data){
kanpapa 0:f4f140765442 113 send_cmd(6);
kanpapa 0:f4f140765442 114 send_data(data);
kanpapa 0:f4f140765442 115
kanpapa 0:f4f140765442 116 return;
kanpapa 0:f4f140765442 117 }
kanpapa 0:f4f140765442 118
kanpapa 0:f4f140765442 119 // 04H,05H,02H: Setting address of Write
kanpapa 0:f4f140765442 120 void set_write_read_address(uint16_t address){
kanpapa 0:f4f140765442 121 send_cmd(4); // 04H: Setting lower address of Write-Read
kanpapa 0:f4f140765442 122 send_data((uint8_t)(address & 0x0ff)); // mask upper address
kanpapa 0:f4f140765442 123
kanpapa 0:f4f140765442 124 send_cmd(5); // 05H: Setting upper address of Write-Read
kanpapa 0:f4f140765442 125 send_data((uint8_t)(address >> 8)); // 8bit shift
kanpapa 0:f4f140765442 126
kanpapa 0:f4f140765442 127 send_cmd(2); // 02H: Data Write
kanpapa 0:f4f140765442 128
kanpapa 0:f4f140765442 129 return;
kanpapa 0:f4f140765442 130 }
kanpapa 0:f4f140765442 131
kanpapa 0:f4f140765442 132 // 07H,08H: Setting address display started
kanpapa 0:f4f140765442 133 void set_disp_start_address(uint16_t address){
kanpapa 0:f4f140765442 134 send_cmd(7); // 07H: Setting lower address display started
kanpapa 0:f4f140765442 135 send_data((uint8_t)(address & 0x0ff));
kanpapa 0:f4f140765442 136
kanpapa 0:f4f140765442 137 send_cmd(8); // 08H: Setting upper address display started
kanpapa 0:f4f140765442 138 send_data((uint8_t)(address >> 8));
kanpapa 0:f4f140765442 139
kanpapa 0:f4f140765442 140 return;
kanpapa 0:f4f140765442 141 }
kanpapa 0:f4f140765442 142
kanpapa 0:f4f140765442 143 // Clear display memory
kanpapa 0:f4f140765442 144 void cls(){
kanpapa 0:f4f140765442 145 set_disp_start_address(0);
kanpapa 0:f4f140765442 146 set_write_read_address(0);
kanpapa 0:f4f140765442 147 for (int i = 0; i < 0x1fff; i++){
kanpapa 0:f4f140765442 148 send_data(0);
kanpapa 0:f4f140765442 149 }
kanpapa 0:f4f140765442 150 return;
kanpapa 0:f4f140765442 151 }
kanpapa 0:f4f140765442 152
kanpapa 0:f4f140765442 153 };
kanpapa 0:f4f140765442 154
kanpapa 0:f4f140765442 155 #endif