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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers vfd_gp1059.h Source File

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