I use that part for my NIXIE, Panaplex and LED displays and I also write in
assembly (8051, not PIC)
For my code, I send the serial data for NEXT time to display in the time
after a 1 second update. On the 1 second "hack"
I update the display by doing the serial to parallel pulse.
Here is the code I use:
;************************************************************************
;* *
;* Serial clock the data in the raw buffer to the H/W drivers. *
;* Note: this routine does not strobe the data to the display. *
;* *
;* On Entry: None. *
;* On Exit: Display H/W drivers updated from ram. *
;* *
;************************************************************************
WRT_NIXIE_HW: MOV R0,#DISP_RAW_TH ;point at start of raw
display ram
MOV R1,#12d ;12 bytes of
data to send
RAW_BYTE_LP: MOV R2,#5 ;5 bits per byte
MOVX A,@R0 ;get a 5 bit value
INC R0 ;bump the pointer
RAW_BIT_LP: RRC A ;bit 0 into carry
MOV DISP_DAT,C ;put the bit into
the I/O port
CALL HV_BIT_DELAY ;delay
SETB DISP_CLK ;clock high
CALL HV_BIT_DELAY ;delay
CLR DISP_CLK ;clock low
DJNZ R2,RAW_BIT_LP ;loop 5 bits
DJNZ R1,RAW_BYTE_LP ;loop 12 bytes
RET ;and return
;************************************************************************
;* *
;* Update the NIXIE readouts with the data in the H/W buffers. *
;* *
;* On Entry: None. *
;* On Exit: NIXIE displays show updated values. *
;* *
;************************************************************************
UPDATE_DISP: CALL HV_BIT_DELAY ;delay
SETB DISP_STRB ;strobe the data
CALL HV_BIT_DELAY ;delay
CLR DISP_STRB ;un-strobe NIXIE
drivers
RET
On Saturday, August 13, 2022 at 8:40:39 AM UTC-7 [email protected] wrote:
> Thank you both.
>
> Say that I want to drive high HVOUT12 on pin2 (that is binary b'00000010')
> of the HV5530... and reading your previous messages, do I simply...:
>
> drive pin28 (CLOCK) low
> drive pin31 (LE) low
>
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) low ; send 0 for bit 0 of b'00000010'
> drive pin28 (CLOCK) low
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) high ; send 1 for bit 1 of b'00000010'
> drive pin28 (CLOCK) low
> drive pin28 (CLOCK) high
> drive pin32 (DATA Input) low ; send 0 for bit 2 of b'00000010'
> drive pin28 (CLOCK) low etc
> etc...
> drive pin31 (LE) high.
>
> Of course, I'd need to do it do it within a certain time frame (nS, I
> suppose)
>
> Then I guess I would need a level shifter as while the input voltage is
> 12V, the PIC is at 3.3V (LF series). Argh.
>
> I'm starting to think whether that is really a better approach than using
> an 80pin or 100pin PIC with HV transistors to drive the cathodes of the
> Nixies (pic18f46k22 would do for instance). It would increase component
> count and cost of PIC etc, but it's not a commercial project, I'm only
> making 3 clocks in total.
>
> Indeed, I'm building a clock with Dalibor's RZ568M (beautiful!).
>
> Il giorno sabato 13 agosto 2022 alle 15:46:58 UTC+1 gregebert ha scritto:
>
>> Be sure to use a level translator to drive the 5530-type devices at the
>> proper signal voltages (12 VDC). Some people have driven them at 5V, which
>> is out-of-spec and not guaranteed to work. I use these drivers in some of
>> my clocks and they work very well.
>>
>> Pardon my rant below, but I've been designing IC's for a living since the
>> 1980's and too often I see others having problems with serial devices :
>>
>> One thing that annoys me about the HV5530 (and similar) devices is that
>> the datasheet specs are incomplete for the serial data signals. The data-in
>> hold time (tH) is 10nsec, but there is no *minimum* propagation time in
>> the spec (tDLH, tDHL). The only have a maximum (100ns). What this means is
>> that per the datasheet, you cannot simply cascade multiple devices. It
>> might work if you do, but if you want to guarantee that it will always
>> work, place a rising-edge flip-flop between cascaded devices). In order to
>> have reliable shifting, the minimum propagation-delay of the driving device
>> *must
>> be greater* than the hold-time of the next device. If there is no
>> minimum prop-delay spec, assume it's zero (a very safe and reasonable
>> assumption).
>>
>> My current clock project (6-tube RZ 568m) has multiple PC boards with
>> ribbon cables interconnecting them. Not just for the three HV5530's that
>> drive the tubes, but also many other devices in the same serial chain for
>> reading switches and controlling lamps. After many weeks of testing with
>> billions of bits, there are zero bit errors.....because I made sure setup
>> and hold times are met.
>>
>>
>> On Saturday, August 13, 2022 at 6:32:31 AM UTC-7 SWISSNIXIE - Jonathan F.
>> wrote:
>>
>>> Hi Max,
>>> The HV5530 and other HV-Series IC's are "Serial to Paralell" converters
>>> which allow to be control 32-pins (or even more with multiple ic's) from
>>> single clock and data lines. They are basically normal serial to parallel
>>> converters with high voltage transistors attached.
>>>
>>> To operate these you will need a clock source (for easy way a gpio that
>>> goes high/low) and a data source, which means either a pin that is high or
>>> low at the time of clock. After you've sent the required amount of data
>>> (number of outputs on the IC) the first data will transfer to "DATA OUT"
>>> pin and into the next IC (if there is one).
>>>
>>> For a 6 digit clock you need 2 pcs of HV553
>>>
>>> I cannot provice ASM code for PIC, but here is a low level code of
>>> ATMega:
>>>
>>> *#define thePort PORTD *
>>> *#define DATA PD5*
>>>
>>> *#define CLK PD7 *
>>>
>>>
>>> *PORTC |= _BV(PC1); //Set OE/LE Signal LOW*
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> * for (int i = 0; i < 32; i++) { thePort &= ~_BV(DATA); //Data LOW
>>> if ( bitRead(val_one, i) == 1) { thePort |= _BV(DATA); //Data HIGH
>>> } thePort |= _BV(CLK); //CLK HIGH thePort &= ~_BV(CLK); //CLK LOW
>>> }*
>>> *PORTC &= ~_BV(PC1); //Set OE/LE Signal HIGH*
>>>
>>> The general operation of the 5530 is as following.
>>>
>>> 1.) Drive Data pin and Clock pin LOW
>>> 2.) Before starting to send data, drive LE pin LOW
>>> 3.) For each bit you need to do a clock signal and data pin, for this:
>>> 3.1) Drive CLOCK High
>>> 3.2) Drive DATA high or low, depending if you want to turn the digit on
>>> or off
>>> 3.3) Drive CLOCK Low
>>> 3.4) Drive DATA Low
>>> 4.) This needs to be done for all Inputs of an ic, if you have two ic's
>>> chained you need to to it two times.
>>> 5.) After all Data has been sent, drive LE pin HIGH, Outputs will now be
>>> set to the data you've just send
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Saturday, 13 August 2022 at 12:13:24 UTC+2 [email protected] wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm starting to design my first 6 digit nixie clock and I'd like to use
>>>> direct drive of the tubes (my power supply can take 6 nixies without
>>>> multiplexing).
>>>>
>>>> So far I have built my Nixie watch, coding in ASM, worked on extreme
>>>> power saving etc.
>>>>
>>>> I could multiplex the nixies as I did in this project
>>>> https://fb.watch/eTb69SnxEP/ , but since I have a good power supply I
>>>> wanted to build a clock with direct drive of the tubes.
>>>>
>>>> I prefer to code in ASM (don't ask why :) ), I could use a 100pin
>>>> PIC18 to drive each digit individually through MMBTA92 & A42 transistors.
>>>> However, if I want to use a PIC with a lower pin count (say 40pins), I may
>>>> use a driver such as HV5530.
>>>>
>>>> Would I still get same brightness as a genuine direct drive as when
>>>> using A92&A42 transistors? I suppose the switching that happens using
>>>> CLK/SDA on the HV5530 is not too different than a good multiplexing. I may
>>>> be wrong.
>>>>
>>>> And if I were do code ASM to use HV5530, does anyone have sample ASM
>>>> code? I managed to write myself the code to read/write time from an RTC
>>>> using CLK/SDA so I suppose it's very similar but I cannot figure it out
>>>> from the datasheet of HV5530.
>>>>
>>>> Any help is much appreciated.
>>>>
>>>> Max
>>>>
>>>
--
You received this message because you are subscribed to the Google Groups
"neonixie-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web, visit
https://groups.google.com/d/msgid/neonixie-l/c2e49484-d56e-4545-b635-942952d2c1f4n%40googlegroups.com.