Wednesday, October 16, 2013

Noritake Itron GU256X64-901A VFD(Vacuum Fluorescent Display)

Digital Thermometer vs. NTC thermistors


Why VFD (Vacuum fluorescent Display)?

Compared to LED, VFD (Vacuum Fluorescent Display) is compact and light weighted, has excellent readability with a wide viewing angle, high reliability and long life span. VFD is a self-illuminating display with high brightness and visibility whereas LCD can be seen only when there are added backlight since it does not emit backlight itself. VFD also has higher color representation, better graphic display quality than LED

That's the why.



A few month ago, i got a Vacuum-Fluorescent-Display (VFD),  Unfortunately No longer display the data
GU256X64-901A

GU256X64-901A 256 x 64 Dot Graphic VFD
Operating Temp -40°C to +85°C
Single 5V Supply.
High Brightness Blue Green Display
8 bit High Speed Parallel Interface
ASCII + Extended Character Font
Twin Graphic/Character RAM
4 Level Brightness Control Function

ELECTRICAL SPECIFICATION
Parameter Symbol Value Condition
Power Supply Voltage VCC 5.0VDC +/- 5% GND=0V
Power Supply Current ICC 1.4ADC typ. Vcc=5V
Logic High Input VIH 3.5VDC min. -
Logic Low Input VIL 1.5VDC max. -
Logic High Output VOH 4.0VDC min. IOH = -2mA
Logic Low Output VOL 0.4VDC max. IOL =4mA
The power on rise time should be less than 100ms.The inrush current at power on can be 2 x ICC






Some repair by the former owner, Missing Inductor, Damage PCB Trace, Crushed Capacitor
Are you all right?













Fuse OK, Soldered the damage trace and missing part back together(temporarily)
Fix Inductor, 47uH,DC Resistance Max : 0.079Ω, RMS Current (Irms) : 3.7A
after completing repairs

Self Test(Top Left Coner Pin 1,2 Short), 
VFD phosphors will burn in with repetitive images.
shows common legends from the convenience store Warning mesage
"19세 미만의 청소년에게는 술, 담배를 판매하지 않습니다" 
"We don't sell drink and cigarette for under 19"

Stil Alive! anyway.
Self Test(Top Left Coner Pin 1,2 Short)

Voilà!









Color filters(Smoke, Orange, Red)



Caveats: 
1. Font data to interface with a serial EEPROM using the I2C, refer to font.h
2. VFD module has Pixel orientation per Byte: D7..D0 (MSB First) characteristics,
refer to font.c

fonts.h
If you dont want Serial EEPROM, Modify fonts.h (see below, read comment)
#define FONT_EXTERNAL_EEPROM      1  // 1:External EEPROM,0:Internal Flash
#define FONT_HANGUL               1  // 1:Hangul are used in this program
/*
 * Internall Flash memory
 * Select desired fonts. (Simply comment out those not needed)
*/
/////#define FONT_ARIAL_NARROW_8_X12        
#define FONT_ARIAL_NARROW_9_X12B
/////#define FONT_ARIAL_NARROW_12_X16
/////#define FONT_ARIAL_NARROW_13_X16B
/////#define FONT_ARIAL_NARROW_18_X23B

font.c
static uint8_t _reverse_bits(uint8_t data)
/*
 * Reverse Bits of a byte
 *
 * Why reverse bits?
 *
 * I do not create work, use existing Column Major Font Data.
 * SAMSUNG KS0108 is a representative Controller of the Column Major
 * And Pixel orientation per Byte: D0..D7 (LSB First) characteristics.
 * LSB First rules generally apply to Column Major Coltroller
 * But Noritake VFD is D7..D0(MSB First) that is the reverse (Futaba Dot Matrix VFD are the same)
 *
 * That's the why.
 *
 * Column Major Display Pixel orientation per Byte (from top to bottom)
 *
 *      row             most cases   Noritake,Futaba
 *       0                 0               7
 *       1                 1               6
 *       2                 2               5
 *       3                 3               4
 *       4                 4               3
 *       5                 5               2
 *       6                 6               1
 *       7                 7               0
 *       8                 0               7
 *       9                 1               6
 *      10                 2               5
 *       .                 .               .
 *       .                 .               .
 *       .                 .               .
 *      64                 7               0
 *
 * Time Complexity: O(log n)
 *
 * O(n log n) is better performace but i cannot found googgle
 * http://www-graphics.stanford.edu/~seander/bithacks.html#BitReverseTable
 *
 */


Useful Links
in 1967, He is the inventor of a Vacuum fluorescent display called the VFD
has passed away on March 25, 2013.

17 comments:

  1. Hi, can you help me to use a GU256x64-372 with arduino? Thanks.

    ReplyDelete
    Replies
    1. Hi Camacho,
      I had GU256x64-372 Datasheet, There is no different GU256X64-901A
      Which part diffcult the most?
      Please be more specific.

      You should understand Datasheet
      There are information you want inside its.

      Delete
    2. Hi, thanks for your reply.

      In your code, how can I define D0-D7? pin by pin.

      Or create a small code for init and write data. Please take a look at this library: http://www.noritake-elec.com/specification.php?id=Arduino_Noritake_VFD_GU7000&category=10&type=gu7000, inside has a GU7000_Parallel.h file, maybe change this can communicate corretly with the display.

      Or in your code, try to use pinMode(pin, OUTPUT), pinMode(pin, INPUT), digitalWrite(pin, HIGH) and digitalWrite(pin, LOW)...

      Thanks a lot.

      Delete
    3. Look at the data&control Port Definition in the vfd.h

      // data port
      #define VFD_DATA_PORT PORTB
      #define VFD_DATA_INPUT PINB
      #define VFD_DATA_DDR DDRB

      // control port
      #define VFD_CTRL_PORT PORTA
      #define VFD_CTRL_DDR DDRA

      // control signals
      #define VFD_WR_PIN PA5 // Write Signal signal. (Input)
      #define VFD_CD_PIN PA6 // Command/Data Select Signal (Input), CD= 1':Command, CD='0':Data
      #define VFD_RD_PIN PA7 // Read Signall signal. (Input)

      GU256X64 is Seems like SAMSUNG KS0108 128x64 Dot Matrix LCD
      Here are the some Keyword "Arduino KS0108 128x64"
      Check out Google for more information.

      Good Luck~

      Delete
  2. Okay. Thanks.

    About your code, when I try to compile in WinAVR 4.3.3:

    In file included from main.c:48:
    ../bitmaps.h:44:42: error: ./bitmaps/_252x32_noritake.h: No such file or directory
    ../bitmaps.h:48:41: error: ./bitmaps/_196x32_manmool.h: No such file or directory
    ../bitmaps.h:52:39: error: ./bitmaps/_misc_bitmaps.h: No such file or directory

    Can you include this library in your source?

    Thanks.

    ReplyDelete
    Replies
    1. Oh.. This is a serious omission.
      I have corrected,
      So, You can download parts of a bitmap, or a bitmaps folder or the full source.zip ^^;;
      Camacho, thanks for letting me know~

      Delete
    2. Now it's possible to compile. Thanks.

      But I have a lot of modifications to run it in arduino, every attempt without sucess.

      This controller is not a KS0108 compatible, since there is no reset pin.

      Thanks.

      Delete
  3. Will this library work with Noritake Itron GU256X-312? The datasheets look very similar.

    ReplyDelete
    Replies
    1. Hi,
      Yes, that’s right
      Except Size they are identical in all ways.

      Delete
    2. Hi,
      thank you for this post.
      Please, can you answer, will your code work with GU256x64D-3900 VFD?

      Delete
    3. Hello,
      I’m not sure, I think you need a test.
      Merry X-mas~.

      Delete
  4. Well, my display is GU256X64-312R. It does not work with your library. Maybe i did something wrong. Anyway, the library looks like a huge piece of work. Thanks for that. By the way, why isn't CS connected anywhere? And what is the purpose of that 100R resistor at WR pin? Is it necessary?

    ReplyDelete
    Replies
    1. Hi,
      Please check again, This is more difficult as you think

      So,
      /CS(Chip Select Signal) is Active Low, That is why
      100Ohm Resistor is might be reduce the risk of malfunctioning(over or under shooting. etc) you can Omit.

      Good Luck.

      Delete
    2. So I connected the /CS pin to GND and now it works. Thank you again. Later I will do some more experiments.

      Delete
  5. My GU256X64-312R works when I use my own program WITHOUT your library. Here it is: http://www.youtube.com/watch?v=-iUlpHyCg4c

    ReplyDelete
    Replies
    1. I use ATmega644 with a 16MHz crystal. Can that be a problem?

      Delete
    2. Well, not. Now it works with ATmega644 and with 16 MHz crystal.

      Delete