Serial DDS Controller

Combine the DDS Daughtercard + Serial CW Sender PCB to perform as VFO controlled by the serial port of a PC

Someone recently asked a perfectly obvious question that should’ve had a solution before now — “Why doesn’t someone create a PIC driver that will take serial port commands from a PC and in turn drive a DDS Daughtercard?”

I had been thinking on this in the background all week and came up with a scathingly brilliant idea … why not take two PIC projects we had done over the last year or two and combine the relevant portions of each to produce this solution?

So, being a natural project manager type of guy, I activated the AmQRP Designer Network once again and found some perfect help. Dave Ek, NK0E had previously designed the Serial CW Sender project that uses serial port driver software in a PIC to talk to a Palm PDA while in turn reading Morse from some paddles and driving Morse to a rig.

I also once again tapped Craig Johnson, AA0ZZ, the now-legendary designer of the PIC-EL board and the author of that wonderful “PEgen” VFO software that drives the AD9850 DDS chip on the PIC-EL board. Craig would be able to help us modify the DDS programming software in the PIC.

Well, it was a “duh” kind of moment for the three of us as we determined that the two programs (Sender.asm and PEgen.asm) would be relatively easy to combine into a single program, wherein we strip off all the Morse stuff from the Sender program and added it to a bare-essentials PEgen program without all the LCD, calibration, rotary encoder control, pushbuttons and eeprom code.

We call the combined program “SerialDDS” wherein the user enters an ‘F’ followed by 8 digits on a dumb terminal program (like HyperTerm or TeraTerm) running on the PC. Those eight frequency digits get turned into the DDS programming word and loaded into the DDS Daughtercard riding piggy-back on the Serial Sender. So all the user would need to do is plug the serial cable into the PC, bring up a terminal program, and the little “CLI” (command line interpretter) running in the PIC allows him to output specific frequencies via the daughtercard.

This hardware arrangement was also a stroke of serendipidy in that we have extra Sender pc boards available and the DDS card fits real nice on it. (See photos at the top of the page.) The Sender project is just ideal for this in that it already has the MAX232 RS232 driver IC and capacitors, the DB9M connector and a PIC .. rather general purpose indeed!

So these two original designers have come up with an inexpensive solution that allows one to use a PC to control the DDS Daughtercard, without using a special PC program! The PIC merely “talks” over the serial port to the generic terminal program running on the PC, and you see the menu of commands listing the various functions you can give to the Serial DDS Controller.


The PIC16F628 microcontroller is programmed to use the PC screen as its terminal, displaying a list of commands available to the user. You can then enter commands and data via the PC keyboard to instruct the Serial DDS Controller to output a given frequency, set the start and end points of a range, set the step size, and scan the range. All entered settings are automatically saved in the PIC’s EEPROM memory, so those values are available even after power cycling.

The menu that gets displayed is shown below. We’ll continue to enhance the features and later versions of the SerDDS program will be posted on the project website for you to download and reprogram your PIC to get the newer features. If you cannot burn your own PIC, contact the AmQRP and we can reprogram your device and mail it back to you for a modest price.

  • Set Freq (Direct frequency entry from 1 Hz to 30000000 Hz)
  • Start Freq (Entry of a start frequency)
  • End Freq (Entry of end frequency)
  • Step Size (Entry of a step size)
  • Scan (from Start to Stop, using step size)
  • Show (show settings for start, stop, step)
  • Jog Up (or >) (using step size)
  • Jog Down (or <) (using step size)
  • Help (display this single-word menu, without parentheticals)

For entering frequency (menu items A through D) the program will accept any number of digits up to eight and allows use of the backspace key to edit. You must hit a carriage return to finish the entry. If fewer than eight digits are entered, they are padded with leading zeros to make eight digits.


Parts List

How Can You Make A Serial DDS Controller?

Construction of the project is very simple … and you have at least two ways you can go.

You can build up the two ICs and the RS232 connector on a piece of perf board in several hours. Wire in the the DDS Daughtercard and your hardware will be all set.

Or you can purchase one of the left-over prototype pc boards from our Serial Sender kitting days and tack solder the three control wires of the DDS Daughtercard to the pads of the PIC, just like I did in the photos on this page.

Or, if you already have an NK0E Serial Sender project such as the one in the photos here, you can tack solder the three control lines of the DDS Daughtercard to the pads of the PIC.

We would urge you to just wire up a simple board, burn the SerDDS software into a PIC using your favorite PIC programmer (use your PICEL board!), get the components from your junk box or using the Parts List here, place a small order to Mouser, Digi-Key and Jameco, and you’ll be in business.

So, no matter how you accomplish it, connect the three control lines between your DDS Daughtercard and the Serial CW Sender pcb, plug in the PIC containing the SerDDS software, type in any frequecy from 00000001 Hz to 30000000 Hz, and see the sweet result on your scope, receiver, speaker … whatever!

Categorized as Kits

Leave a comment

Your email address will not be published. Required fields are marked *