NIXIE Radio Project 2014 – 2018

Links to documents:

  • Schematics and pcb (Eagle)
  • PIC software (XC8, MPLABX)
  • NIXIE Tubes informations


Daily updates:

Status per day: June 10th

  • Setup the MPLABX project
  • Setup config bits
  • Prepared the system.h with ports names
  • Setup Oscillator to 16MHz
  • Setup UART to 19200bd
  • prepared putch function as per XC8 documentation
  • tested uC Terminal :):) printf working (see Terminal logbook)
  • SendByte working :):)


June 15th

  • Setup the I2C connection
  • Prepared the functions for I2C
  • Prepared the functions for RTC Read Write registers
  • Resoldered the Quart
  • Read Time function
  • Set Time function (Write to RTC)
  • Prepared some Terminal library functions (number, char, setpos, clear etc.)
  • Prepared terminal library UART functions
  • Read button pressed from UART
  • Read something from TEA5767 module 😀

October 23rd

  • Prepare the NIXIE coding function
  • Prepare the Display_TIME, VOLUME, FREQUENCY functions


October 25th

  • Update the MPLABX and the XC8 compiler
  • Try to use the code configurator
  • Backuped the software
  • Test the PWM output, controlled by uTerminal
  • Did the 4..20 mA driver, with PWM output, controlled from uTerminal, with calibration option

November 5th

  • Moved the indicator add to the display to the NIXIE_Update
  • Updated the manual
  • Start preparing the buttons logic
  • Cleaned up the 4..20 program


September 22nd 2018

  • MPLAB project restored, compiling OK
  • Can’t download to the PIC, either board problem or PIC itself. Programmer was checked with other project
  • TODO urgently, resolder the whole PIC board, maybe there are cold joints
  • TODO Order shopping from MOUSER (including spare PICs, encoders, etc.)


September 23rd 2018

  • Downloaded and updated MPLABX to v5.xx, big mess with XC8 v 2.xx, noit compiling the software
  • Changed the tollchain to xc8-cc.exe, changed variable from bit to bool, changed interrupt descriptions, compiling works now!
  • Try to move the PIC to the breadboard, but still not programming, suspecting malfunctioning uC


September 26th 2018

  • Received the new microcontroller, programmed correctly in the breadboard


September 28th 2018

  • Drilled and mounted the pcbs on the wooden board – for easy handling


September 29-30

  • Corrected displaying (the nixie tube PCB symbol was mirrored, so the display masking was wrong)
  • Tested different resistor and watched the whole playlist of Eevblog about nixie. Trying to solve the display problem


October 1st

  • Finally discovered that the 1 symbol cathode and anode of the tube are swapped (don’t know why it was displaying at all :)) Swapped for one module and works perfectly (although one tube number “1” is dead)
  • Ordered lamps IN1 and IN4


October 2nd

  • Corrected the pcb layout in EAGLE, added also the connection to ground that was missing
  • Rewire the leg 1 and anode on the second module, now all the lamps are displaying beautifully. (Except leg 1 on lamp 3 and 4)
  • Set the time in the RTC (there’s a bit that need to be set that the RTC work) also changed the battery, now the RTC is working and displaying on the uTerminal


October 3rd

  • Displaying time and blinking two neon in the middle
  • Program function to read the button inputs and set the flags (buttons 1,2,3, UP, DN and ENCODER)
  • Tested with the 1,2,3, buttons
  • Tested also long press and holding
  • Added switching between modes 0..1..2..3..4..5
  • Added functions to set the clock and alarm, also switch the alarm to active/inactive (need to connect the other two buttons)
  • Removed setting the time at the beginning of the code – this should be now stored in RTC with battery backup


October 4th

  • Connected other two buttons, reconnect software for button 2 and up/down correctly
  • Added the alarm comparing mode, entering to the alarm, beeping on the Terminal, acknowledging alarm
  • Starting with calibration function – need to connect AnalogDiscovery – Saleae does not measure frequency acurate enough
  • Display Calibration value, Entering Calibration mode in RTC, exiting Calibration mode on the Clock
  • Added delays after every printf – not to block the uTerminal
  • Added initialization of the buttons_OLD variables, After POR it does not go to setup immediately




  • Add function to calibrate the RTC module (display value, change via up/down buttons, save to EEPROM, restore from EEPROM at the POR and store to RTC)
  • Structure the software better, more in sub functions
  • Show seconds while holding button 3
  • Add function to auto calibrate the internal 100ms timer with RTC interrupt every minute 🙂
  • Try to talk to FM module
  • Connect the other two buttons
  • Program entering the alarm mode and acknowledging, use uTerminal buzzer for now
  • Program the other lamps for Setting and alarm blinking (the whole NIXIE blinking?)
  • Display the actual time on the NIXIE, check functions for displaying Time, Alarm, blinking two bulbs every 0.5s
  • Connect the buttons and program checking for press
  • Program settings function, Press Setting – > Set hours -> Set Minutes -> Set Alarm Hours -> Set Alarm Minutes -> Done
  • Connect and program 5 buttons (SET, ALARM, AUX, UP, DOWN)
  • Setup the I2C connection
  • Read the RTC
  • Display RTC
  • Read the UART data (buttons)
  • Set the RTC
  • Set the RTC alarms and INT0 interrupt from RTC
  • Try to read anything from the FM module
  • Prepare the NIXIE coding