vfd_driver
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
vfd_driver [2016/01/27 11:31] – add segments kingkevin | vfd_driver [2016/03/31 17:56] – update git link kingkevin | ||
---|---|---|---|
Line 1: | Line 1: | ||
The firefly conductor is a vacuum fluorescent display (VFD) driver/ | The firefly conductor is a vacuum fluorescent display (VFD) driver/ | ||
- | {{: | + | {{: |
Main parts: | Main parts: | ||
Line 26: | Line 26: | ||
==== introduction ==== | ==== introduction ==== | ||
- | {{ : | + | {{: |
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
The SER6500 VFD comes with 3 {{: | The SER6500 VFD comes with 3 {{: | ||
They each can driver 32 channels (up to 90V). | They each can driver 32 channels (up to 90V). | ||
- | The VFD segments start already to be visible at 5V, but to get them bright you need higher voltages (I use 60V). | + | The VFD segments start already to be visible at 5V, but to get them bright you need higher voltages (I use 50V). |
This is particularly important because you have to drive the digits and matrix one after each other. | This is particularly important because you have to drive the digits and matrix one after each other. | ||
If you do it fast enough, thanks to the persistence of vision they will not appear as flickering. | If you do it fast enough, thanks to the persistence of vision they will not appear as flickering. | ||
Line 68: | Line 73: | ||
- DIN: to shift the data in | - DIN: to shift the data in | ||
- CLK: clock to shift the data, on the clock rise | - CLK: clock to shift the data, on the clock rise | ||
- | - NLE: enable latch on low | + | - #LE: enable latch on low (aka. negative LE, or NLE) |
- STR: strobe the shifted data | - STR: strobe the shifted data | ||
- | - GND: ground | + | - AUX: connected to ground |
{{ : | {{ : | ||
Line 76: | Line 81: | ||
The second VFD has 10 digits, and is a copy of the 10 digits from the main VFD (minus comma and underline). | The second VFD has 10 digits, and is a copy of the 10 digits from the main VFD (minus comma and underline). | ||
- | If you don't have the auxiliary VFD connected, the main VFD will not light up. | + | The AUX pin of CN2 is shorted to ground when the auxiliary VFD is connected. |
- | To circumvent this protection | + | You can use the AUX pin to detect if the auxiliary |
+ | You can also the use AUX pin as second ground pin (i.e. for the VPP power suply). | ||
+ | If the auxiliary VFD is not present, | ||
==== segments ==== | ==== segments ==== | ||
Line 87: | Line 94: | ||
{{ : | {{ : | ||
+ | grid selection (for digits and dot matrix) | ||
^ hex value (3x32 bits) ^ word ^ bit ^ display type ^ grid position ^ | ^ hex value (3x32 bits) ^ word ^ bit ^ display type ^ grid position ^ | ||
| 00000000 00000008 00000000 | 2 | 4 | matrix | 1 | | | 00000000 00000008 00000000 | 2 | 4 | matrix | 1 | | ||
Line 110: | Line 118: | ||
| 00000000 00000020 00000000 | 2 | 6 | digit | 9 | | | 00000000 00000020 00000000 | 2 | 6 | digit | 9 | | ||
| 00000000 00000010 00000000 | 2 | 5 | digit | 10 | | | 00000000 00000010 00000000 | 2 | 5 | digit | 10 | | ||
+ | |||
+ | {{ : | ||
+ | grid selection (for digits and dot matrix) | ||
+ | ^ hex value (3x32 bits) ^ word ^ bit ^ segment ^ | ||
+ | | 00000000 00004000 00000000 | 2 | 15 | underline | | ||
+ | | 00000000 00008000 00000000 | 2 | 16 | dot | | ||
+ | | 00000000 00010000 00000000 | 2 | 17 | comma | | ||
+ | | 00000000 00020000 00000000 | 2 | 18 | a | | ||
+ | | 00000000 00040000 00000000 | 2 | 19 | b | | ||
+ | | 00000000 00080000 00000000 | 2 | 20 | c | | ||
+ | | 00000000 00100000 00000000 | 2 | 21 | d | | ||
+ | | 00000000 00200000 00000000 | 2 | 22 | e | | ||
+ | | 00000000 00400000 00000000 | 2 | 23 | f | | ||
+ | | 00000000 00800000 00000000 | 2 | 24 | g | | ||
+ | |||
+ | {{ : | ||
+ | grid selection (for digits and dot matrix) | ||
+ | ^ hex value (3x32 bits) ^ word ^ bit ^ column ^ row ^ | ||
+ | | 00000000 01000000 00000000 | 2 | 25| 1 | 1 | | ||
+ | | 00000000 02000000 00000000 | 2 | 26 | 1 | 2 | | ||
+ | | 00000000 04000000 00000000 | 2 | 27 | 1 | 3 | | ||
+ | | 00000000 08000000 00000000 | 2 | 28 | 1 | 4 | | ||
+ | | 00000000 10000000 00000000 | 2 | 29 | 1 | 5 | | ||
+ | | 00000000 20000000 00000000 | 2 | 30 | 1 | 6 | | ||
+ | | 00000000 40000000 00000000 | 2 | 31 | 1 | 7 | | ||
+ | | 00000000 00000000 00000001 | 3 | 1 | 2 | 1 | | ||
+ | | 00000000 00000000 00000002 | 3 | 2 | 2 | 2 | | ||
+ | | 00000000 00000000 00000004 | 3 | 3 | 2 | 3 | | ||
+ | | 00000000 00000000 00000008 | 3 | 4 | 2 | 4 | | ||
+ | | 00000000 00000000 00000010 | 3 | 5 | 2 | 5 | | ||
+ | | 00000000 00000000 00000020 | 3 | 6 | 2 | 6 | | ||
+ | | 00000000 00000000 00000070 | 3 | 7 | 2 | 7 | | ||
+ | | 00000000 00000000 00000100 | 3 | 9 | 3 | 1 | | ||
+ | | 00000000 00000000 00000200 | 3 | 10 | 3 | 2 | | ||
+ | | 00000000 00000000 00000400 | 3 | 11 | 3 | 3 | | ||
+ | | 00000000 00000000 00000800 | 3 | 12 | 3 | 4 | | ||
+ | | 00000000 00000000 00001000 | 3 | 13 | 3 | 5 | | ||
+ | | 00000000 00000000 00002000 | 3 | 14 | 3 | 6 | | ||
+ | | 00000000 00000000 00004000 | 3 | 15 | 3 | 7 | | ||
+ | | 00000000 00000000 00010000 | 3 | 17 | 4 | 1 | | ||
+ | | 00000000 00000000 00020000 | 3 | 18 | 4 | 2 | | ||
+ | | 00000000 00000000 00040000 | 3 | 19 | 4 | 3 | | ||
+ | | 00000000 00000000 00080000 | 3 | 20 | 4 | 4 | | ||
+ | | 00000000 00000000 00100000 | 3 | 21 | 4 | 5 | | ||
+ | | 00000000 00000000 00200000 | 3 | 22 | 4 | 6 | | ||
+ | | 00000000 00000000 00400000 | 3 | 23 | 4 | 7 | | ||
+ | | 00000000 00000000 01000000 | 3 | 25 | 5 | 1 | | ||
+ | | 00000000 00000000 02000000 | 3 | 26 | 5 | 2 | | ||
+ | | 00000000 00000000 04000000 | 3 | 27 | 5 | 3 | | ||
+ | | 00000000 00000000 08000000 | 3 | 28 | 5 | 4 | | ||
+ | | 00000000 00000000 10000000 | 3 | 29 | 5 | 5 | | ||
+ | | 00000000 00000000 20000000 | 3 | 30 | 5 | 6 | | ||
+ | | 00000000 00000000 40000000 | 3 | 31 | 5 | 7 | | ||
+ | |||
+ | ===== micro-controller ===== | ||
+ | |||
+ | The hardware used to control this VFD is a [[stm32f1xx# | ||
+ | |||
+ | The firmware is available [[https:// | ||
+ | It : | ||
+ | * starts by testing all segments of the VFD | ||
+ | * plays an animation | ||
+ | * and finally displays the text typed in over the USB CDC ACM or USART1 ports | ||
+ | |||
+ | The data is shifted out from the micro-controller to the drivers using SPI (this protocol fits well what the HV518 requires). | ||
+ | A timer will periodically refresh all parts of the VFD at 100 Hz. | ||
+ | |||
+ | Since the STM32 provides only 3.3V I/Os and the HV518 requires 5V signals I used a simple [[http:// | ||
+ | But actually it works fine also without, by directly connecting the HV518 to the STM32. | ||
+ | |||
+ | Connection: | ||
+ | ^ STM32 signal ^ board pin ^ VFD CN2 pin ^ HV518 signal ^ | ||
+ | | | GND | 1 | GND | | ||
+ | | | 5V | 2| VDD | | ||
+ | | | | 3 | VPP | | ||
+ | | SPI1_MOSI | PA7 | 4 | DIN | | ||
+ | | SPI1_SCK | PA5 | 5 | CLK | | ||
+ | | GPIO | PA4 | 6 | NLE | | ||
+ | | GPIO | PA6 | 7 | STR | | ||
+ | | | | 8 | AUX | | ||
+ | |||
+ | The VPP and GND pins to drive the VFD segments are provided using an external power supply. | ||
+ | I use a [[http:// |
vfd_driver.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1