A little while ago I picked up an AD9850 DDS board. Basically, these are little boards you can pickup on eBay for about $10 shipped that can be programmed to output a sinusoidal wave from 1hz to about 40mhz. The output is about 1Vp-p and is fairly clean.
To drive these little boards you have to program them using either a serial interface or a parallel interface. You send over a couple of bits according to a code specified in the spec sheet and the AD9850 outputs the appropriate frequency.
I used an Arduino UNO board, LCD 16×2 display, and a rotary encoder to create a little all-in-one VFO. It can output the full range available to the AD9850 but I simply limited it to only 7.0-7.3Mhz in the Arduino code. I will be using the VFO as part of a DC receiver I am putting together for fun.
You can see a video of it in action here: http://youtu.be/r6nRMikOOmI
The code to drive the AD9850 is fairly simple, however, the hardest part I found was getting the large integer (frequency) split up into the appropriate numbers to display on the LCD screen. Some creative code fixed that problem. Full documents and discussion on this item is on the permanent page located here.