>>Torretje/Projects/Futaba/

Futaba NA202SD08FA driven by Arduino



Bought this nice Vacuum Fluorescent Display with 2x20 chars.
Every character is formed with a 5x7 dot matrix.
It took some time to figure out how to connect this old school display.
After some probing and searches finaly found the best matching data-sheet IEE_03601-96_2x40_VFD.pdf.

This vfd has a 8bit interface and 1 write strobe to command the display.
You can control the display with a set of predefined characters and cursor commands.
For example hex 0x14 resets the display hex 0x14 shows an ! After every byte the write strobe is set to high for 250 micro sec.


Pinouts NA202SD08FA VFD.

The j1 header(see pic) contains 14 pins with pin 1 not attached.
Pin assignment form top to bottom:
-14 Reset
-13 NC
-12 GND
-11 +5V
-10 - 3 Data Lines D0 - D7
-2 Write Strobe
-1 Busy? is not connected

See also the data sheet:IEE_03601-96_2x40_VFD.pdf
This data-sheet is not an exact match but the closest I could find!

Code VFD driven with arduino:

/* NA202SD08FA VFD Display
 Karel Reinhard 04/13/2016
 Basic code for NA202SD08FA 20x2 VFD
 With 13 pin connector see http://torretje.nl/futaba for pin-out and data-sheet
 */
 
//NA202SD08FA 14 pin connector 2 pins for power-supply and pin 1 and 13 NC :
const int RST = 11; //J1-14
const int WR =  10; //J1-2
const int DB0 =  2; //J1-10
const int DB1 =  3; //J1-9
const int DB2 =  4; //J1-8
const int DB3 =  5; //J1-7
const int DB4 =  6; //J1-6
const int DB5 =  7; //J1-5
const int DB6 =  8; //J1-4
const int DB7 =  9; //J1-3
//Add all data ports to an Array 
int outData[8]={DB0,DB1,DB2,DB3,DB4,DB5,DB6,DB7};



void setup() {
  // set the digital pin as output:
  pinMode(RST, OUTPUT);   
  pinMode(WR, OUTPUT);      
  pinMode(DB0, OUTPUT);      
  pinMode(DB1, OUTPUT);      
  pinMode(DB2, OUTPUT);      
  pinMode(DB3, OUTPUT);      
  pinMode(DB4, OUTPUT);      
  pinMode(DB5, OUTPUT);      
  pinMode(DB6, OUTPUT);      
  pinMode(DB7, OUTPUT);
  //RESET      
  digitalWrite(RST, 1);
  delay(500);
  digitalWrite(RST, 0);
}

void loop()
{
  
  setData(0x1F);

  for(int y=0x20;y<0x7F;y++){
    setData(0x16);//Soft RESET
    for(int i=0;i<40;i++){
        setData(y);
     }
           delay(100);
  }

    for(int y=0xA0;y<0xFF;y++){
    setData(0x16);//Soft RESET

      for(int i=0;i<40;i++){
        setData(y);
        
      }
      delay(100);
    }

}

void setData(byte data){
   int i=0;
   for (byte mask = B00000001; mask>0; mask <<= 1) { 
     if (data & mask){ // if bitwise AND resolves to true
       digitalWrite(outData[i],HIGH);
    }else{ //if bitwise and resolves to false
       digitalWrite(outData[i],LOW);
    }
    i++;
  }
  digitalWrite(WR, 1);
  delayMicroseconds(250);
  digitalWrite(WR, 0);
}

Arduino example file:FUBATAVFD.ino

Code on GitHub:futabavfd