Nixie Clock #2 IN16
My second nixie clock design.
This clock is compared with my other Nixie clock much simpler, it uses less components and the code is kept simple and short.
The segments are multiplexed to increase lifetime of the tubes and simplify the 170V power supply.
Due the separate tube pcb it’s possible to use it with other tube’s. I have used IN-16 tubes for this clock, bought them on ebay.
To-do: Wooden enclosure with aluminum top and bottom.
The clock in action.
Multiplexing in action, shot with 1000fps camera
Eagle pcb and Bascom Source code
1 file(s) 108.58 KB
'============================================================================ '= Simple IN-16 nixie tube clock with multiplexed segments, low part count = '= Shortest Nixie Bascom code available on the net = '= = '= Copyright Evertdekker.com 2011 = '= Code Created with Bascom 2.0.7.1 = '============================================================================ $regfile = "M88pdef.dat" $crystal = 1000000 'Internal 8mhz div/8 $hwstack = 32 $swstack = 64 $framesize = 16 Config Clock = Soft 'Use the softclock, 32.768KHz crystal connected to tosc1/2 Config Date = Dmy , Separator = - Enable Interrupts Date$ = "15-03-11" Time$ = "12:15:45" '== Setup hardware == Digit Alias Portc Config Digit = Output 'Set up portc as output for the digit Ddrd = &B00111111 'Setup portd as output for the segment and keep bit6&7 free for other use Button_hr Alias Pinb.0 Button_min Alias Pinb.1 Config Button_hr = Input Config Button_min = Input 'Set buttons as input Set Portb.0 Set Portb.1 'Switch on the pullup for the buttons Dim Multiplex As Byte Multiplex = 1 'Multiplexer starts with 1 Do Select Case Multiplex Case 1 : Digit = _sec Mod 10 'Seconds Case 2 : Digit = _sec / 10 'Seconds tens Case 4 : Digit = _min Mod 10 'Minute Case 8 : Digit = _min / 10 'Minute tens Case 16 : Digit = _hour Mod 10 'Hour Case 32 : Digit = _hour / 10 'Hour tens End Select Portd = &B11000000 Or Multiplex 'Switch on one tube Waitms 2 'Some delay to slow down the multiplexer If Multiplex < 32 Then 'Shift the multiplexer one bit to the left until all 6 segments are done Shift Multiplex , Left , 1 Else Multiplex = 1 'Start over again at segment 1 End If Debounce Button_min , 0 , Setminute , Sub 'One of the buttons pressed, jump to the sub to change the time Debounce Button_hr , 0 , Sethour , Sub Loop End '=== Subs === Setminute: Incr _min If _min > 59 Then _min = 0 Return Sethour: Incr _hour If _hour > 23 Then _hour = 0 Return